ffmpeg 调整大小并连接多个视频

ffmpeg 调整大小并连接多个视频

我需要对源视频执行 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

  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

  2. (以及 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过滤器可以做到这一点。

相关内容