ffmpeg连续和同时缩放?

时间:2013-10-17 11:37:26

标签: linux ffmpeg

我有两个ffmpeg命令:

  

ffmpeg -i d:\1.mp4 -i d:\1.mp4 -filter_complex "[0:0] [0:1] [1:0] [1:1] concat=n=2:v=1:a=1 [v] [a]" -map "[v]" -map "[a]" d:\3.mp4

  

ffmpeg -i d:\1.mp4 -vf scale=320:240 d:\3.mp4

如何同时使用它们?

3 个答案:

答案 0 :(得分:8)

后人: 如果输入源具有不同的大小(这是您需要在组合之前进行缩放的主要原因),则接受的答案不起作用。

您需要做的是首先缩放然后将视频输出传输到concat过滤器中,如下所示:

ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex "[0:v]scale=1024:576:force_original_aspect_ratio=1[v0]; [1:v]scale=1024:576:force_original_aspect_ratio=1[v1]; [v0][0:a][v1][1:a]concat=n=2:v=1:a=1[v][a]" -map [v] -map [a] output.mp4

今天遇到这个问题,并且想把这头发拉了好三个小时试图解决这个问题,不幸的是,接受的答案没有按照评论中的说明运作。

答案 1 :(得分:6)

ffmpeg -i d:\1.mp4 -i d:\2.mp4 -filter_complex "concat=n=2:v=1:a=1 [v] [a]; \
[v]scale=320:200[v2]" -map "[v2]" -map "[a]" d:\3.mp4

首先,我们将所有内容和管道结果连接到[v] [a](请参阅filtergraph syntax docs - 来自concat过滤器的输出)。接下来,我们选择[v],将其缩放并输出到[v2],最后我们将[v2][a]并将其复制到d:\3.mp4文件。

答案 2 :(得分:0)

构造自定义滤镜图,将调整大小程序移近视频源,例如让我们处理更复杂的图形,以便掌握其构造语言的精神:

ffmpeg.exe -i Movie_oriented_minus_90.mov -i Movie_pause.mp4 -i Sound_pause.aac -filter_complex "[0:v:0]scale=1920:1080 [c1],[c1]vflip[c2],[c2]hflip[clip], [clip] [0:a:0] [1:v:0] [2:a:0] concat=n=2:v=1:a=1 [v] [a]" -map "[v]" -map "[a]" -c:v libx264 -q:v 0 -acodec mp3 -s 1920x1080 Movie_oriented_plus_90_with_pause.mp4
  • 第1阶段:Movie_oriented_minus_90是源0,即其视频流 [0:v:0] 输入比例过滤器并生成 [c1] ,然后 [c1] 翻转 垂直进入 [c2] ,然后 [c2] 水平翻转到 [clip] 因此旋转180度
  • 第2阶段:第一个视频流与第二个源流连接,即 第一个视频流: [clip] (来自源0的已处理流)和声音 来自原始视频 [0:a:0] 第二视频流:根据视频构建 源自来源1 [1:v:0] 和音频 [2:a:0] 来自源2(30秒) 在分离时用 -filter_complex“aevalsrc = 0:d = 30”做出沉默 运行ffmpeg)
  • 第3阶段:生成的视频序列 [v] [a] 然后压缩 将 x264 编解码器导入目标 mp4 文件

因此,您的问题的主要问题是您尝试使用不同大小连接流,然后仅对已经聚合的流应用调整大小操作,当然不能包含不同大小的媒体样本。