嗨我有一个20秒长的视频,我想在00:00:10秒到00:00:15秒之间为这个视频添加一些文字,它只是说“夏日视频”并且淡入淡出使用FFMPEG。
我知道我必须使用drawtext过滤器,但有人有任何例子吗?
谢谢。
答案 0 :(得分:3)
执行此操作的两种方法:
使用enable
选项。由于您需要淡出,因此需要添加fade和overlay过滤器。
ffmpeg -i input -filter_complex "drawtext=text='Summer Video':enable='between(t,15,20)',fade=t=in:start_time=15:d=0.5:alpha=1,fade=t=out:start_time=19.5:d=0.5:alpha=1[fg];[0][fg]overlay=format=auto,format=yuv420p" -c:a copy output.mp4
或者,制作具有所需时间的字幕并淡化,然后使用subtitles过滤器:
ffmpeg -i input -vf subtitles=fade.ass -c:a copy output
示例fade.ass
是在Aegisub中创建的。 \fad
标记用于设置淡入/淡出持续时间(以毫秒为单位):{\fad(500,500)}Summer Video
为输入和输出均为0.5秒。
fade.ass
示例文件内容:
[Script Info]
; Script generated by Aegisub 3.2.2
; http://www.aegisub.org/
Title: Default Aegisub file
ScriptType: v4.00+
WrapStyle: 0
ScaledBorderAndShadow: yes
YCbCr Matrix: None
[Aegisub Project Garbage]
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:15.00,0:00:20.00,Default,,0,0,0,,{\fad(500,500)}Summer Video
我建议使用字幕过滤器,因为字幕可以更容易使用,并且具有比drawtext更多的样式选项和效果。