结合 ffmpeg 操作——似乎无法获得正确的语法

结合 ffmpeg 操作——似乎无法获得正确的语法

我的目的ffmpeg是(按照这个特定的顺序)

  1. 将视频尺寸缩小至 1920x1080 (1080P)
  2. 将我们的标志放在顶部/右侧
  3. 在右下角第 3 秒和第 11 秒之间放置一个标签

为此,我们ffmpeg按顺序运行两个命令。

ffmpeg -i original.mp4 -vf 'scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:-1:-1:color=black'  -preset slow -crf 18 temp.mp4

然后...

ffmpeg -i temp.mp4 -i out_logo.png  -filter_complex "[0:v][1:v]overlay=main_w-overlay_w-40:40,drawtext=text='This Is Our Label':fontfile=Some-Font.ttf:fontcolor=#3A3D34:alpha='if(lt(t,3),0,if(lt(t,4),(t-3)/1,if(lt(t,11),1,if(lt(t,12),(1-(t-11))/1,0))))':fontsize=35:box=1:boxcolor=#DDD6D0@1:boxborderw=25:x=60:y=h-th-60:enable='between(t,3,12)'" -c:a copy -movflags +faststart final.mp4

这两条线对我们来说效果很好,但我正在尝试优化处理速度......

我尝试用一​​个命令来运行它并保持顺序,但都失败了,原因ffmpeg是语法有问题,比如把 放在-vf 'scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:-1:-1:color=black' -preset slow -crf 18前面-filter_complex

有没有办法用一个命令来完成这个任务?

答案1

还有:需要给过滤链加上标签:

ffmpeg -i original.mp4  -i out_logo.png  -filter_complex "

[0:v]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:-1:-1:color=black[vtemp]
;
[vtemp][1:v]overlay=main_w-overlay_w-40:40,drawtext=text='This Is Out Label':fontfile=Some-Font.ttf:fontcolor=#3A3D34:alpha='if(lt(t,3),0,if(lt(t,4),(t-3)/1,if(lt(t,11),1,if(lt(t,12),(1-(t-11))/1,0))))':fontsize=35:box=1:boxcolor=#DDD6D0@1:boxborderw=25:x=60:y=h-th-60:enable='between(t,3,12)'[vout]

" -map '[vout]' -map 0:a
-c:a copy -movflags +faststart final.mp4

相关内容