2016-06-01 3 views
0

FFMPEG android java libraryを使用して、ビデオの再生速度をチェックする(ビデオを遅くする)ここエンコーダ 'aac'は、低速化のためのビデオ処理中に例外を有効にしません。

[aac @ 0x416c26f0] The encoder 'aac' is experimental but experimental codecs are not enabled, add '-strict -2' if you want to use it. 
+0

です。 '-strict -2'を追加します – Mulvya

+0

どこに追加しますか?コマンドで? –

+0

はい、コマンドです。 – Mulvya

答えて

0

例外を有効にしないで「AAC」コマンドを避けるエンコーダにおいて-strictを添加する速度の再生を

VideoIn = getInternalDirectoryPath() + "/Download/input.mp4"; 
VideoOut = getInternalDirectoryPath() + "/Download/output.mp4"; 
cmd = "-i "+VideoIn+" -vf setpts=2*PTS -strict -2 "+VideoOut; 

を変更するためのコマンドです。このリンクをたどってffmpegビデオコマンドを実装することができます。ここで

あなたはffmpegのの古いバージョンを使用している完全なサンプルコード

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()); 
     } 
    } 
} 
関連する問題