You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FFmpeg指定时间截取视频帧并添加外部ASS字幕截图方法问询

用FFmpeg截取指定帧并烧录外部ASS字幕(忽略视频自带软字幕)

我来帮你搞定这个需求!下面是实现的完整命令,以及每个参数的详细解释,确保你能精准完成截图加字幕的操作:

完整命令

ffmpeg -ss 00:01:23.456 -i input_video.mp4 -vf "ass=external_subs.ass" -map 0:v -map -0:s -vframes 1 output_screenshot.png

参数拆解(重点看忽略自带字幕的部分)

  • -ss 00:01:23.456:设置你要截取的时间点,格式是时:分:秒.毫秒,把这个参数放在-i前面能让FFmpeg快速定位到目标时间,比放在后面效率高很多。你也可以直接写秒数,比如-ss 83.456就对应1分23.456秒。
  • -i input_video.mp4:替换成你的源视频文件路径。
  • -vf "ass=external_subs.ass":核心的字幕烧录滤镜,加载你指定的外部ASS字幕文件。如果字幕文件和视频不在同一个文件夹,记得写完整路径,比如ass=/home/user/subtitles/my_subs.ass。要是想调整字幕样式,还可以加额外参数,比如强制改字号和颜色:ass=external_subs.ass:force_style='FontSize=24,PrimaryColour=&HFFFFFF'。
  • -map 0:v -map -0:s:这是实现忽略视频自带软字幕的关键!-map 0:v表示只选择输入视频的视频流,-map -0:s表示排除输入视频的所有字幕流,这样就完全不会加载视频里自带的软字幕了。
  • -vframes 1:告诉FFmpeg只输出一帧画面,也就是单张截图。
  • output_screenshot.png:替换成你想要的输出截图文件名,改成.jpg就能生成JPG格式的截图。

额外注意事项

  • 确保你的FFmpeg版本支持ASS滤镜:大部分最新版FFmpeg都默认包含libass,如果运行命令时提示找不到ASS滤镜,可能需要重新编译FFmpeg并加上--enable-libass选项。
  • 若字幕显示位置不对,检查ASS文件里的Position参数,或者在滤镜里用x/y参数调整,比如ass=external_subs.ass:x=100:y=50。

内容的提问来源于stack exchange,提问作者Shrinto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:05:38