【发布时间】:2019-01-04 12:27:02
【问题描述】:
我正在使用ffmpeg-android 连接两个视频文件,但是连接需要很长时间,我猜是因为使用了"-filter_complex",但这是我在互联网上找到的唯一命令,请有人简化以下命令?我只想拼接camera2 api 捕获的两个视频文件,不做任何修改。
String command[] = new String[]{
"-y",
"-i", firstPath,
"-i", secondPath,
"-strict",
"experimental",
"-filter_complex",
"[0:v]scale=iw*min(1920/iw\\,1080/ih):ih*min(1920/iw\\,1080/ih)," +
"pad=1920:1080:(1920-iw*min(1920/iw\\,1080/ih))/2:(1080-ih*min(1920/iw\\,1080/ih))/2,setsar=1:1[v0];[1:v] scale=iw*min(1920/iw\\,1080/ih):ih*min(1920/iw\\,1080/ih)," +
"pad=1920:1080:(1920-iw*min(1920/iw\\,1080/ih))/2:(1080-ih*min(1920/iw\\,1080/ih))/2,setsar=1:1[v1];[v0][0:a][v1][1:a] concat=n=2:v=1:a=1",
"-ab", "48000", "-ac", "2", "-ar", "22050", "-s", "1920x1080", "-vcodec", "libx264", "-crf", "27", "-q", "4", "-preset", "ultrafast", getVideoFilePath(getActivity())};
commandFFMPEG(command);
private void commandFFMPEG(String command[]) {
FFmpeg ffmpeg = FFmpeg.getInstance(getActivity());
try {
ffmpeg.execute(command, new ExecuteBinaryResponseHandler() {
@Override
public void onStart() {
startTime = System.currentTimeMillis();
}
@Override
public void onProgress(String message) {
}
@Override
public void onFailure(String message) {
}
@Override
public void onSuccess(String message) {
long endTime = System.currentTimeMillis();
long result = endTime - startTime;
Toast.makeText(getActivity(), "Videos are merged", Toast.LENGTH_SHORT).show();
}
@Override
public void onFinish() {
}
});
} catch (FFmpegCommandAlreadyRunningException e) {
// Handle if FFmpeg is already running
}
}
【问题讨论】:
-
可能重复这个:stackoverflow.com/a/20358243/2919483,希望它可以帮助你
标签: android ffmpeg android-ffmpeg