使用 ffmpeg 滚动字幕

使用 ffmpeg 滚动字幕

除 1 个参数外,以下代码运行良好:

ffmpeg -i 1.MP4 -i logo.png -i profile.png -filter_complex "overlay=main_w-overlay_w-8:8,overlay=10:10,drawtext=fontfile=verdanab.ttf:text=HelloWorld:fontcolor=white:fontsize=12:bordercolor=black:borderw=5:x=65:y=30-text_h/2,subtitles=subtitle.srt:force_style='MarginV=25,MarginL=w-(t-4.5)*w/5.5'" -c:a copy output.MP4

以下部分不起作用:

MarginL=w-(t-4.5)*w/5.5

我添加了此部分作为滚动字幕。但是,它没有效果。它适用于“drawtext”部分,但不适用于“force_style”部分。

我怎么解决这个问题?

答案1

force_style不支持表达式。

相反,将字幕从 SRT 转换为 ASS:

ffmpeg -i input.srt output.ass

然后使用\moveASS 标签在 ASS 文件中:

Dialogue: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,,{\move(100,150,300,350)}Hello world

相关内容