Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux ffmpeg concat和scale同时进行?_Linux_Ffmpeg - Fatal编程技术网

Linux ffmpeg concat和scale同时进行?

Linux ffmpeg concat和scale同时进行?,linux,ffmpeg,Linux,Ffmpeg,我有两个ffmpeg命令: ffmpeg-id:\1.mp4-id:\1.mp4-filter\u 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-id:\1.mp4-vf比例=320:240 d:\3.mp4 如何同时使用它们 ffmpeg -i d:\1.mp4 -i d:\2.mp4 -filter_complex "concat=n=2:v=1:a=1 [v]

我有两个
ffmpeg
命令:

ffmpeg-id:\1.mp4-id:\1.mp4-filter\u 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-id:\1.mp4-vf比例=320:240 d:\3.mp4

如何同时使用它们

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]
(请参阅-过滤器的输出)。接下来我们取
[v]
,将其缩放并输出到
[v2]
,最后我们取
[v2]
[a]
并将其多路复用到
d:\3.mp4
文件。

构建自定义过滤器图形,将调整大小的过程移到更靠近视频源的位置,例如,让我们处理一个更复杂的图,以掌握其构造语言的精神:

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
  • 第一阶段:面向电影的\u减去\u 90是源0,它的视频流 [0:v:0]馈入刻度过滤器并生成为[c1],然后[c1]翻转 垂直切换到[c2],然后水平切换到[c2] 这样旋转了180度
  • 阶段2:第一个视频流与第二个源流连接,即。 第一个视频流:[clip](从源0处理的流)和声音 从原始视频[0:a:0]第二个视频流:从视频构建 从源1[1:v:0]和音频从源2[2:a:0](播放30秒) 在分离过程中使用-filter_complex“AEVALRC=0:d=30”进行静音 运行ffmpeg)
  • 阶段3:生成的视频序列[v][a]然后进行压缩 将x264编解码器插入目标mp4文件

因此,您的问题的主要问题是,您试图连接大小不同的流,然后才对已聚合的流应用大小调整操作,这当然不能由大小不同的媒体样本组成。

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

您需要做的是首先缩放视频输出,然后将其导入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

我今天遇到了这个问题,花了整整三个小时试图解决这个问题,但不幸的是,被接受的答案没有如评论中所述的那样有效。

非常感谢,我错过了关于superuser.com的智慧。但我会回答这个问题,因为我找到了有效的解决方案
ffmpeg-i video720p.mp4-i video1080p.mp4-filter_complex“concat=n=2:v=1:a=1[v][a];\[v]scale=1280:720[v2]“-map”[v2]“-map”[a]”videoResult.mp4
但我得到了这个错误:
1:v0参数中的输入链接(大小1920x1080,SAR 0:1)与0:v0参数中的相应输出链接不匹配(1280x720,SAR 0:1)[Parsed_concat_0@0x1e2d1a0]未能在Parsed_concat_0上配置输出焊盘
我可以根据第一个视频尺寸缩放第二个视频吗,因为我有各种视频,我想在第一个视频中添加简单图像。