我的目的ffmpeg
是(按照这个特定的顺序)
- 将视频尺寸缩小至 1920x1080 (1080P)
- 将我们的标志放在顶部/右侧
- 在右下角第 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