簡體   English   中英

通過 FFMPEG 在 android 中合並/連接視頻

[英]Merging/concat videos in android through FFMPEG

我正在通過 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"
};

如果我連接兩個具有不同比特率和分辨率的視頻,請告訴我我使用了哪個命令。

您必須將兩個視頻連接到相同的分辨率。 這可以首先通過使用 ffprobe 確定視頻的 WxH 並將一個視頻縮放到另一個視頻的分辨率來獨立完成。

這也可以通過以下方式完全完成:

  1. 使用 ffprobe 確定第一個視頻的 WxH。
  2. 使用以下方法連接視頻:

ffmpeg -y -i input-1.mp4 -i input-2.mp4 -filter_complex "[0:v]setsar=1:1[v0];[1:v]scale=W:H,setsar=1:1 [v1];[v0][0:a][v1][1:a] concat=n=2:v=1:a=1" out.mp4

[0:v]setsar=1:1[v0], 將第一個視頻流的樣本縱橫比設置為 1:1,它也可以不同但與其他輸入視頻流中使用的類似,如 [1:v ]scale=W:H,setsar=1:1[v1]。 這會將 [1:v] 流縮放到 [0:v] 視頻的分辨率。 您還可以修改此命令以處理第二個視頻的縱橫比,並包含超出此問題范圍的黑色條紋填充。

為了處理比特率,您可以明確指定用於創建連接視頻的編碼器參數,它應該處理所有事情,因為兩個視頻的視頻流都將再次重新編碼。 您可以使用以下內容:

ffmpeg -y -i input-1.mp4 -i input-2.mp4 -filter_complex "[0:v]setsar=1:1[v0];
[1:v]scale=W:H,setsar=1:1[v1];[v0][0:a][v1][1:a] concat=n=2:v=1:a=1" -
c:v libx264 -b:v 600K -c:a libfdk_aac -b:a 128K out.mp4

這不起作用兄弟,這顯示了 W [0:v]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",我也在使用一個尺寸,但這不起作用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM