ffmpeg - 在两次之间向视频添加文本

ffmpeg - adding text to a video between two times

您好,我有一个 20 秒长的视频,我想在此视频中添加一些文本,从 00:00:10 秒到 00:00:15 秒,只是说 "Summer Video" 并淡入并且不再使用 FFMPEG。

我知道我必须使用 drawtext 过滤器,但有人有任何示例吗?

谢谢。

执行此操作的两种方法:

绘图文本

使用 enable option. Because you want fades you need to add the fade and 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 标签用于设置淡入淡出 in/out 持续时间(以毫秒为单位):{\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 更易于使用,并且具有更多的样式选项和效果。