我正在尝试使用FFmpeg在我的Android应用程序中编辑一些视频,但是当我尝试仅截取视频的一部分时遇到了一些问题。
我正在使用这个FFmpeg编译/库https://github.com/WritingMinds/ffmpeg-android-java 我尝试使用以下命令来剪辑/切割视频。
但是有些视频会出现黑屏或者视频冻结的情况。在我的所有测试中,声音都正常工作。
使用这个命令:
在我所有的测试中(视频/音频),一切都正常,但生成输出文件需要太长时间,这个15秒的文件需要超过2分钟才能生成。
我尝试了这些命令的其他变体,但总是会遇到视频流的问题(黑屏或冻结),或者生成输出需要太长时间(用户只能选择发送到我的服务器的15秒视频)。
感谢您的帮助!
编辑:
这是修剪视频的代码部分。
这是原始文件:[https://drive.google.com/file/d/0BzqJL_nNetbRYmxvcTljanJwR00/view?usp=sharing][1] 这是输出结果:0BzqJL_nNetbReENjRGMtVXQ5VHM/view?usp=sharing(stackoverflow不允许我添加超过2个链接)
我正在使用这个FFmpeg编译/库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"
在我所有的测试中(视频/音频),一切都正常,但生成输出文件需要太长时间,这个15秒的文件需要超过2分钟才能生成。
我尝试了这些命令的其他变体,但总是会遇到视频流的问题(黑屏或冻结),或者生成输出需要太长时间(用户只能选择发送到我的服务器的15秒视频)。
感谢您的帮助!
编辑:
这是修剪视频的代码部分。
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();
}
这是原始文件:[https://drive.google.com/file/d/0BzqJL_nNetbRYmxvcTljanJwR00/view?usp=sharing][1] 这是输出结果:0BzqJL_nNetbReENjRGMtVXQ5VHM/view?usp=sharing(stackoverflow不允许我添加超过2个链接)
-ss
为12
而关键帧在10
,则输出视频将被冻结/黑屏直到下一个关键帧出现。 - Gyan