私はFFmpegを使ってAndroidアプリでいくつかの動画を編集しようとしていますが、動画の一部だけを撮ろうとしたときにいくつかの問題に直面しています。Android ffmpeg video cut
- 私はこのffmpegのコンパイル/ libにhttps://github.com/WritingMinds/ffmpeg-android-java
を使用して、私はビデオ
"-y -i input.mp4 -ss 00:00:01.00 -t 00:00:15.000 -c copy output.mp4"
しかし、いくつかのビデオ - 私は、黒い画面を取得したりして
をカット/トリミングするには、このコマンドを使用しようとしましたビデオはちょうどフリーズします。サウンドはすべてのテストでうまく動作します。このコマンドで"-y -i input.mp4 -ss 00:00:01.000 -t 00:00:15.000 -async 1 output.mp4"
すべてがすべての私のテスト(ビデオ/サウンド)で正常に動作しますが、出力ファイルを生成するために時間がかかりすぎる、この15Sファイルが生成されるように2分以上かかります。
私はこれらのコマンドの他のバリエーションを試しましたが、私は常にビデオストリーム(黒い画面または凍結)で問題を起こすか、出力を生成するのに時間がかかります(ユーザーは送信するビデオを15私のサーバー)
助けてくれてありがとう!
EDIT:[https://drive.google.com/file/d/0BzqJL_nNetbRYmxvcTljanJwR00/view?usp=sharing][1]
そして、この出力:0BzqJL_nNetbReENjRGMtVXQ5VHM /ビュー
これはビデオ
String[] cmd = new String[]{"-y","-i",input,"-ss","00:00:05.000","-vcodec","copy",
"-acodec","copy","-t","00:00:15.00","-strict","-2",output };
final FFmpeg ffmpeg = FFmpeg.getInstance(this);
try {
ffmpeg.execute(cmd, new FFmpegExecuteResponseHandler() {
@Override
public void onSuccess(String message) {
Log.i("VideoEditActivity", "Success " + message);
is_video_generated_ = true;
}
@Override
public void onProgress(String message) {
Log.i("VideoEditActivity", "Progress updated " + message);
}
@Override
public void onFailure(String message) {
Log.e("VideoEditActivity", "ERROR! " + message);
}
@Override
public void onStart() {
progress_dialog_.setMessage(getString(R.string.str_video_generating));
progress_dialog_.show();
}
@Override
public void onFinish() {
Log.i("VideoEditActivity", "Finished");
progress_dialog_.hide();
Intent intent = new Intent(getApplicationContext(), VideoPlayActivity.class);
intent.putExtra("media", edited_video_path_);
startActivity(intent);
}
});
} catch (FFmpegCommandAlreadyRunningException e) {
e.printStackTrace();
}
これは、元のファイルでトリミングされたコードの一部ですか? usp = sharing(スタックオーバーフローでは2つ以上のリンクを追加できません)
ストリームをコピーすると、ビデオはキーフレームでのみトリミングできます。したがって、 '-ss'が' 12'でキーフレームが '10'の場合、次のキーフレームが現れるまで、出力ビデオはフリーズ/ブラックになります。 – Mulvya
OK、-ssの順序を変更すると、ビデオフレームの開始点(https://trac.ffmpeg.org/wiki/Seeking)が修正されますが、キーフレームでビデオの最後をトリムする簡単な方法がありますビデオは私が必要とするより少し大きくなります)?私はこれについて少し読んで、一部の人はffprobeを使ってキーフレームのタイムスタンプを取得していますが、今日のAndroidビルドではそれを持っていません。 – Raupp