我需要对源视频执行 3 个操作(按顺序)
1 将源视频从 320X 240 调整为 640X480 (200%)
2 在前面添加另一个视频文件
3 在后面添加第三个视频
此外,我需要将音频文件与最终结果结合起来(3 个视频文件连接在一起)。
我在这里找到了部分解决方案,建议将两个视频文件连接起来 http://sonnati.wordpress.com/2012/07/02/ffmpeg-the-swiss-army-knife-of-internet-streaming-part-v/
但不确定连接第三个文件并将音频文件与最终结果混合的正确语法。有人能帮忙推荐一些设置吗?
答案1
过滤
scale
器可以执行以下操作:如果您想将输入视频调整为特定尺寸(例如 640x480),而不管其尺寸和纵横比如何,那么:
ffmpeg -i INPUT -filter_complex [0:v]scale=640:480[Scaled] -map [Scaled] OUTPUT
。但是,不保留纵横比可能会导致视频不好看。因此,如果您想调整输入视频的大小并保留纵横比,请指定其中一个尺寸并将
-2
其他尺寸放入:ffmpeg -i INPUT -filter_complex [0:v]scale=-2:480[Scaled] -map [Scaled] OUTPUT
。(以及 3.)可以通过
concat
过滤器连接多个流:以下命令将合并三个视频流(如果存在,将会删除音频流)
ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex [0:v][1:v][2:v]concat=n=3:v=1:a=0[Merged] -map [Merged] OUTPUT
:。
为您执行的完整命令将类似于以下内容:
ffmpeg -i VideoBefore.mp4 -i MainVideo.mp4 -i VideoAfter.mp4 -i Audio.mp3 -filter_complex [1:v]scale=-2:480,setsar=sar=1[Scaled];[0:v][Scaled][2:v]concat=n=3:v=1:a=0[Merged] -map [Merged] -map 3:a OUTPUT.mp4
重要的提示:concat
过滤器文档说明:所有相应的流在所有段中都必须具有相同的参数;过滤系统将自动为视频流选择通用的像素格式,为音频流选择通用的采样格式、采样率和通道布局,但其他设置(如分辨率)必须由用户明确转换。SAR
(样本纵横比)属性通常为 1:1。但是过滤scale
器会改变它。我们需要再次更改它以使其与其他流相等。setsar
过滤器可以做到这一点。