使用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 要输出什么。split
fps
-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
我设置了一些视频选项,如果您想调整输出视频的质量/大小,您可能需要更改这些选项。