我有 2 个 ffmpeg 命令单独运行良好
ffmpeg -i test_video.mp4 -vcodec libx264 -filter_complex "drawtext=fontfile=test.ttf:text=awesome:fontcolor=white:fontsize=20:x=0:y=10+th" test_video_text.mp4 -y
和
ffmpeg -i test_video.mp4 -vcodec libx264 -filter_complex "volume=0" test_video_text.mp4 -y
当合并这些命令为
ffmpeg -i test_video.mp4 -vcodec libx264 -filter_complex "drawtext=fontfile=Lato-Light.ttf:text=awesome:fontcolor=white:fontsize=20:x=0:y=10+th,volume=0" test_video_text.mp4 -y
出现以下错误:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test_video.mp4':
Metadata:
major_brand : mp42
minor_version : 1
compatible_brands: mp41mp42isom
creation_time : 2015-09-24 18:32:33
Duration: 00:00:09.87, start: 0.068254, bitrate: 235 kb/s
Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 320x320, 183 kb/s, 29.67 fps, 29.67 tbr, 29673 tbn, 59.35 tbc (default)
Metadata:
creation_time : 2015-09-24 18:32:33
handler_name : Core Media Video
Stream #0:1(und): Audio: aac (HE-AAC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 48 kb/s (default)
Metadata:
creation_time : 2015-09-24 18:32:33
handler_name : Core Media Audio
[Parsed_drawtext_0 @ 0x7f814af06260] Media type mismatch between the 'Parsed_drawtext_0' filter output pad 0 (video) and the 'Parsed_volume_1' filter input pad 0 (audio)
[AVFilterGraph @ 0x7f814ae00360] Cannot create the link drawtext:0 -> volume:0
Error initializing complex filters.
Invalid argument
请有人帮助我,我做错了什么?
答案1
如果您有一个包含多个输入和输出的复杂过滤器,则需要明确指定哪个过滤器使用哪个输入和输出流。此外,要分隔过滤器链,您必须使用分号 ( ;
) 而不是简单的逗号 ( ,
)。最后,您必须使用选项将这些过滤器链的输出映射到输出文件-map
。
ffmpeg -y -i test_video.mp4 -vcodec libx264 -filter_complex \
"[0:v]drawtext=fontfile=Lato-Light.ttf:text=awesome:fontcolor=white:fontsize=20:\
x=0:y=10+th[outv];\
[0:a]volume=0[outa]"\
-map "[outv]" -map "[outa]"\
test_video_text.mp4
我插入了反斜杠以提高可读性。请参阅filtergraph
和filter_complex
文档更多细节。
此外,由于-y
是一个全局选项,您应该将其移动到命令的开头。