2016-04-25 14 views
5

私はAndroid上でffmpegのコマンドを実行するAndroidのffmpegの出力エラー

https://github.com/writingminds/ffmpeg-android-java

を使用しています。私はビデオに画像をオーバーレイしようとしています。何らかの理由で、このコマンドを実行すると次のエラーが発生します。

ffmpeg -i input.mp4 strict -2 -i overlay.jpg -filter_complex [0:v][1:v] overlay=25:25:enable='between(t,0,4)' output.mp4 

Output file #0 does not contain any stream 

誰でもお手伝いできますか?前もって感謝します!

+0

任意のそれと運がいい?私もこの問題に直面しています。 –

+0

問題は私たちが使っているビルドだと思います。 FFmpegの独自の新しいバージョンを試してみてください。適切な機能で構築してください。私が使っているビルドには正しいものがないと思う。私はFFMpegを放棄した、それは私のアプリのサイズの方法をあまりにも増加し、遅いでした。 –

+0

私は参照してください。答えとして投稿されたこの問題の解決策を見つけたと思う=) –

答えて

4

私はこの同じ問題に直面していました。問題は次のとおりです。私はexecuteメソッドを間違った方法で呼び出していました。その後、

final String[] cmd = new String[]{ "-i", "input.mp4", "strict", "-2", "-i", "overlay.jpg", 
       "-filter_complex", "[0:v][1:v]", "overlay=25:25:enable='between(t,0,4)'", "output.mp4"}; 

と実行を呼び出す:

final String[] cmd = new String[] { "-i input.mp4 strict -2 -i overlay.jpg -filter_complex [0:v][1:v] overlay=25:25:enable='between(t,0,4)' output.mp4" }; 

この配列を作成するための正しい方法は、しかし、別の文字列でコマンドを分割することです:

私が渡した文字列配列は、このようなものでした
try { 
    final FFmpeg ffmpeg = FFmpeg.getInstance(context); 
    ffmpeg.execute(cmd, new FFmpegExecuteResponseHandler() { 
     @Override 
     public void onSuccess(String message) { 

     } 

     @Override 
     public void onProgress(String message) { 

     } 

     @Override 
     public void onFailure(String message) { 

     } 

     @Override 
     public void onStart() { 

     } 

     @Override 
     public void onFinish() { 

     } 
    }); 
} catch (FFmpegCommandAlreadyRunningException e) { 

} 

私は、この問題に関するlauffenpさんのコメントに、この解決策を見つけた:https://github.com/WritingMinds/ffmpeg-android-java/issues/88

+0

ちょっとこのコマンドを正常に実行するにはどうしたらいいですか?私はこのエラー "A/libc:致命的なシグナル11(SIGSEGV)、コード1、障害14661(AsyncTask#4)のフォールトaddr 0x0"すべてのfilter_complexコマンド – Nisarg