使用 ffmpeg 連接具有不同音頻和字幕流計數的多個視頻

使用 ffmpeg 連接具有不同音頻和字幕流計數的多個視頻

我想向影片(由用戶上傳)添加浮水印徽標,並將其與簡介連接起來。產生的影片必須與輸入影片具有相同的格式。

當上傳的視訊具有多個音訊串流並且包含字幕時,問題就會出現。

我透過使用類似這樣的命令解決了音訊問題。

ffmpeg -i intro.mp4 -i input.mkv -i logo.png -filter_complex "[0:v] scale=480:270,setdar=16/9 [a]; [1:v] scale=480:270,setdar=16/9 [b]; [2:0] scale=480:270 [wm]; [b][wm] overlay[ov]; [a][0:a:0][0:a:0] [ov][1:a:0][1:a:1] concat=n=2:v=1:a=2 [vd] [a0] [a1]" -map "[vd]" -map "[a0]" -map "[a1]" -y output.mkv

但輸出不包含字幕。

有人可以幫忙嗎?

答案1

使用

ffmpeg -i intro.mp4 -i input.mkv -itsoffset 4.5 -i input.mkv -i logo.png
  -filter_complex
     "[0:v] scale=480:270,setdar=16/9 [a];
      [1:v] scale=480:270,setdar=16/9 [b];
      [3:0] scale=480:270 [wm];
      [b][wm] overlay[ov];
      [a][0:a:0][0:a:0] [ov][1:a:0][1:a:1] concat=n=2:v=1:a=2 [vd] [a0] [a1]"
  -map "[vd]" -map "[a0]" -map "[a1]" -map 2:s? -c:s copy -y output.mkv

一旦指定任何映射語句,則僅包含那些映射的流。因此,您必須明確地映射任何字幕流。由於可能沒有,我添加了一個尾隨?來指示條件賦值。

我已經輸入了兩次輸入視頻,因為輸出中的字幕時間戳將是錯誤的,因為介紹現在位於視頻之前。時間戳偏移量被加到第二個輸入,並且字幕從該提要映射。該itsoffset值應等於介紹的持續時間(以秒為單位)。應該不需要轉碼字幕。

相關內容