如何正确组合FFMPEG文件模式和复杂过滤器?

时间:2015-10-04 17:44:54

标签: bash filter ffmpeg

假设我使用内置过滤器有以下FFMPEG命令行。

ffmpeg -y -loop 1 -t 1 -i 'img-0001.jpg' -loop 1 -t 1 -i 'img-0002.jpg' \
-filter_complex "\
[1:v][0:v]blend=all_expr='A*(if(gte(T,0.7),1,T/0.7))+B*(1-(if(gte(T,0.7),1,T/0.7)))'[b1v]; \
[0:v][b1v][1:v]concat=n=3:v=1:a=0,format=yuv420p[v]" \
-map "[v]" out.avi

它的作用是将两个输入图像 img-0001.jpg img-0002.jpg 各显示一秒,并在它们之间进行混合。不幸的是,当我想创建一个包含大量图像的幻灯片时,这会在某些时候中断。您将收到“参数列表太长”错误。所以我想使用ffmpegs文件模式语法,例如

ffmpeg -y -loop 1 -t 1 -i 'img-%04d.jpg'  \
-filter_complex "\
[1:v][0:v]blend=all_expr='A*(if(gte(T,0.7),1,T/0.7))+B*(1-(if(gte(T,0.7),1,T/0.7)))'[b1v]; \
[0:v][b1v][1:v]concat=n=3:v=1:a=0,format=yuv420p[v]" \
 -map "[v]" out.avi

据我了解语法,文件名对于这种情况应该没问题。测试中的文件与第一个命令中明确说明的文件相同。但我无法通过以下错误:

Input #0, image2, from 'img-%04d.jpg':
Duration: 00:00:00.08, start: 0.000000, bitrate: N/A
Stream #0:0: Video: mjpeg, yuvj422p(pc, bt470bg/unknown/unknown), 2592x1728     [SAR 72:72 DAR 3:2], 25 fps, 25 tbr, 25 tbn, 25 tbc
Invalid file index 1 in filtergraph description [1:v][0:v]blend=all_expr='A* (if(gte(T,0.7),1,T/0.7))+B*(1-(if(gte(T,0.7),1,T/0.7)))'[b1v]; [0:v][b1v]   [1:v]concat=n=3:v=1:a=0,format=yuv420p[v].

看起来我使用的文件模式语法错误。我错过了什么? 提前致谢。

0 个答案:

没有答案