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:连接多个视频,一些有音频,一些没有的主要内容,如果未能解决你的问题,请参考以下文章