ffmpeg能同时刻录字幕和抽帧吗?

ffmpeg能同时刻录字幕和抽帧吗?

使用ffmpeg,我想保存带字幕的帧,而不需要刻录字幕的中间步骤。可以吗?

我现在做的是:

# first, burn the subtitles:
ffmpeg -i nosub.mp4 -vf subtitles=sub.srt withsub.mp4
# then extract frames
ffmpeg -i withsub.mp4 -vf fps=4 extracted/%05d.bmp -hide_banner

答案1

只需将过滤器与以下内容结合起来,

ffmpeg -hide_banner -i nosub.mp4 -vf subtitles=sub.srt,fps=4 extracted/%05d.bmp

好处是不需要对视频进行重新编码,因此不会损失质量。

应该-hide_banner放在第一位,因为它是一个全局选项。

如果要同时输出两者,则必须将硬字幕视频流分成两个,将filter_complex过滤器应用于位图输出,并保持另一个视频流不变。您可以通过它告诉 ffmpeg 要输出什么。splitfps-map

ffmpeg -i nosub.mp4 -filter_complex "
     [0:v]subtitles=sub.srt[sub];
     [sub]split=2[sub1][sub2];
     [sub1]fps=4[out1]
     " \
    -map "[out1]" extracted/%05d.bmp \
    -map "[sub2]" -c:v libx264 -crf 23 withsub.mp4

我设置了一些视频选项,如果您想调整输出视频的质量/大小,您可能需要更改这些选项。

相关内容