FFmpeg:连接多个视频,一些有音频,一些没有

Posted

技术标签:

【中文标题】FFmpeg:连接多个视频,一些有音频,一些没有【英文标题】:FFmpeg: concat multiple videos, some with audio, some without 【发布时间】:2017-09-05 14:26:51 【问题描述】:

我正在尝试连接 5 个视频,其中第一个和最后一个没有音轨。我尝试了以下命令:

    ffmpeg -i 1-copyright/copyright2018640x480.mp4 -i 2-openingtitle/EOTIntroFINAL640x480.mp4 -i 3-videos/yelling.mp4 -i 4-endtitle/EOTOutroFINAL640x480.mp4 -i 5-learnabout/Niambi640.mp4 -filter_complex "[0:v:0] [0:a:0] [1:v:0] [1:a:0] [2:v:0] [2:a:0] [3:v:0] [3:a:0] [4:v:0] [4:a:0] concat=n=5:v=1:a=1 [v] [a]" -map "[v]" -map "[a]" output_video.mp4

我得到输出错误:

    Stream specifier ':a:0' in filtergraph description [0:v:0] [0:a:0] [1:v:0] [1:a:0] [2:v:0] [2:a:0] [3:v:0] [3:a:0] [4:v:0] [4:a:0] concat=n=5:v=1:a=1 [v] [a] matches no streams.

我知道第一个和最后一个视频没有音频,但我不知道如何编写语句以忽略这些视频中的音轨。我试过删除 [0:a:0] 但这只会引发另一个错误:

   Stream specifier ':v:0' in filtergraph description [0:v:0] [1:v:0] [1:a:0] [2:v:0] [2:a:0] [3:v:0] [3:a:0] [4:v:0] [4:a:0] concat=n=5:v=1:a=1 [v] [a] matches no streams.

这没有意义,我有点迷路了。

【问题讨论】:

【参考方案1】:

如果您还要连接音频,则所有视频输入都必须与音频流配对。如果文件本身没有任何音频,则可以使用虚拟静音轨道。

使用

ffmpeg -i 1-Video.mp4 -i 2-openingtitle/EOTIntroFINAL640x480.mp4
       -i 3-videos/yelling.mp4 -i 4-endtitle/EOTOutroFINAL640x480.mp4
       -i 5-learnabout/Niambi640.mp4 -f lavfi -t 0.1 -i anullsrc -filter_complex
       "[0:v:0][5:a][1:v:0][1:a:0][2:v:0][2:a:0][3:v:0][3:a:0][4:v:0][5:a] concat=n=5:v=1:a=1 [v][a]"
       -map "[v]" -map "[a]" output_video.mp4

【讨论】:

感谢您的回复。我现在收到此错误code [Parsed_concat_0 @ 0x7f9fcd6114c0] 输入链接 in2:v0 参数(大小 720x480,SAR 10:11)与相应的输出链接 in0:v0 参数(640x480,SAR 1:1)不匹配 [Parsed_concat_0 @ 0x7f9fcd6114c0] 无法在 Parsed_concat_0 上配置输出焊盘重新初始化过滤器时出错!无法将帧注入过滤器网络:处理流 #4:0 code 的解码数据时出现无效参数错误 ..所有源文件都是 640 x 480 "[2:v:0]scale=640:480,setsar=1[2v];[0:v:0][5:a][1:v:0][1:a:0][2v][2:a:0][3:v:0][3:a:0][4:v:‌​0][5:a]concat=n=5:v=1:a=1 [v][a]" 注意:-t 的值(在本例中为 0.1 秒)必须小于或等于您要静音的视频文件,否则 -t 的持续时间将为应用为静音视频的持续时间。 @Gyan 我的意思是-t 在静音媒体方面的表现,很高兴知道这一点。

以上是关于FFmpeg:连接多个视频,一些有音频,一些没有的主要内容,如果未能解决你的问题,请参考以下文章

ffmpeg 音轨提取

使用 FFmpeg 将一个视频处理为多个输出会导致最后一个输出中没有音频

如何连接具有不同属性的ffmpeg中的视频?

来自两个视频的FFMPEG mux视频和音频

使用ffmpeg,linux提取音频

C#进程调用FFmpeg操作音视频