【发布时间】:2018-03-25 06:03:33
【问题描述】:
我正在通过 FFMPEG 开发视频合并应用程序。如果我选择两个相同的视频,我的代码就可以工作。但是如果我选择两个具有不同比特率和分辨率的不同视频,则视频合并不起作用。 我正在使用这个命令。
List<String> cmdList = new ArrayList<>();
cmdList.add("-y");
StringBuilder sb = new StringBuilder();
for (int i = 0; i < videoList.size(); i++) {
cmdList.add("-i");
cmdList.add(videoList.get(i).getThumbnailPath());
sb.append("[").append(i).append(":0] [").append(i).append(":1]");
}
sb.append(" concat=n=").append(videoList.size()).append(":v=1:a=1 [v] [a]");
cmdList.add("-filter_complex");
cmdList.add(sb.toString());
cmdList.add("-map");
cmdList.add("[v]");
cmdList.add("-map");
cmdList.add("[a]");
cmdList.add("-preset");
cmdList.add("ultrafast");
cmdList.add("storage/emulated/0/abcfs.mp4");
sb = new StringBuilder();
for (String str : cmdList) {
sb.append(str).append(" ");
}
String[] cmd = cmdList.toArray(new String[cmdList.size()]);
我也用过这个命令。
String[] complexCommand = {
"-y", "-i",
pathArraylist.get(0),
"-i", pathArraylist.get(1),
"-strict",
"experimental",
"-filter_complex",
"[0:v]scale=hd720,setsar=1:1[v0];[1:v]scale=hd720,setsar=1:1[v1];[v0][0:a][v1][1:a] concat=n=2:v=1:a=1",
"-ab",
"48000",
"-ac",
"2",
"-ar",
"22050",
"-s",
"hd720",
"-vcodec",
"mpeg4",
"-b:v",
"600" +"k",
"storage/emulated/0/outputvideo.mp4"
};
如果我连接两个具有不同比特率和分辨率的视频,请告诉我使用了哪个命令。
【问题讨论】:
-
检查这个解决方案,它就像一个魅力。 stackoverflow.com/a/60398328/10182932
标签: android ffmpeg android-ffmpeg