2016-06-02 4 views
1

FFMPEG android java 라이브러리를 사용하여 android에서 비디오를 처리하여 속도 재생을 변경합니다. 6 초 동안 0.5 초의 속도로 느리게 재생됩니다. 1 분 이상 걸릴 수 있습니다. 다음은이 그것을 "-ultrafast을"매개 변수를 추가 재생 명령을 변경하는 라이브러리비디오 재생을 변경하는 것은 FFMPEG를 사용하여 실제로 매우 느린 프로세스입니다. android java 미리 컴파일 된 라이브러리

compile 'com.github.hiteshsondhi88.libffmpeg:FFmpegAndroid:0.2.5' 

답변

1

이상 사용하기위한 Gradle을 빌드 경로 내 코드

public class TestFFMpegActivity { 
     private static String cmd, 
     private static FFmpeg ffmpeg; 
     private static Context mContext; 


     public static String getInternalDirectoryPath() { 
      return Environment.getExternalStorageDirectory().getAbsolutePath(); 
     } 

     public static void initiateFFmpeg(Context context, String path) { 
      mContext = context; 
      ffmpeg = FFmpeg.getInstance(context); 
      VideoIn = getInternalDirectoryPath() + "/Download/input.mp4"; 
      VideoOut = getInternalDirectoryPath() + "/Download/output.mp4"; 
      cmd = "-i "+VideoIn+" -vf setpts=2*PTS -strict -2 "+VideoOut; 
      try { 
       ffmpeg.loadBinary(new LoadBinaryResponseHandler() { 

        @Override 
        public void onStart() { 
        } 

        @Override 
        public void onFailure() { 
        } 

        @Override 
        public void onSuccess() { 
        } 

        @Override 
        public void onFinish() { 
         processVideo(); 
        } 
       }); 
      } catch (FFmpegNotSupportedException e) { 
       // Handle if FFmpeg is not supported by device 
      } 
     } 
     private static void processVideo(){ 
     try { 
      ffmpeg.execute(cmd , 
        new ExecuteBinaryResponseHandler() { 

         @Override 
         public void onStart() { 
          //for logcat 
          Log.w(null,"processing started"); 
         } 

         @Override 
       public void onProgress(String message) { 
        //for logcat 
        Log.w(null, "onProgress"); 
       } 

       @Override 
       public void onFailure(String message) { 
        Log.w(null, message.toString()); 
       } 

       @Override 
       public void onSuccess(String message) { 
        Log.w(null, message.toString()); 
       } 

       @Override 
       public void onFinish() { 

       } 
      }); 
     } catch (FFmpegCommandAlreadyRunningException e) { 
      Toast.makeText(mContext, "Video processing failed due to exception", Toast.LENGTH_LONG).show(); 

      // Handle if FFmpeg is already running 
      e.printStackTrace(); 
      Log.w(null, e.toString()); 
     } 
    } 
} 

입니다. 이 파라미터에 대한 처리 효과가 마법

cmd= "-i " + VideoIn+ " -vf setpts=2*PTS -c:v libx264 -c:a aac -strict experimental -vcodec libx264 -preset ultrafast -b:a 128k " + VideoOut; 

같이 지금 cmd를 할 것이다. 동일한 환경에서 비디오 처리 시간이 1 분 6 초에서 13 초로 감소합니다.