FFmpeg 如何合并字幕

FFmpeg 合并字幕主要分为"硬字幕"(烧录进画面,不可关闭)和"软字幕"(封装进容器,可关闭/切换)两种方式。硬字幕 使用 -vf subtitles=subtitle.srt 滤镜将字幕渲染进视频;软字幕 使用 -i 输入字幕文件并用 -c:s 将其流式封装。

  1. 硬字幕(烧录,永久显示)

使用 subtitles 视频滤镜,适用于所有播放器。

bash

复制代码
ffmpeg -i input.mp4 -vf "subtitles=subtitle.srt" output.mp4
  • 特性:将字幕永久像素化到视频中。
  • 适用:ASS 或 SRT 格式。如果文件名包含特殊字符,建议使用 ASS格式并做好转义。
  1. 软字幕(封装,可关闭)

将字幕文件与视频流封装成一个容器(如 MKV、MP4)。

bash

复制代码
ffmpeg -i input.mp4 -i subtitle.srt -c copy -c:s mov_text output.mp4
  • 特性:视频和字幕文件分开存储在同一文件中。
  • 适用 :MOV/MP4 格式建议使用 mov_text,MKV 格式建议使用 srtass
  1. 多条字幕与默认字幕

封装多个字幕文件并指定默认字幕:

bash

复制代码
ffmpeg -i input.mp4 -i sub1.srt -i sub2.ass -map 0:v -map 0:a -map 1 -map 2 \
-c copy -c:s:0 srt -c:s:1 ass \
-disposition:s:0 default output.mkv
  • -map:映射输入文件。
  • -disposition:s:0 default:将第一条字幕设为默认。
  1. 常见问题:ASS 格式位置

如果 ASS 字幕位置偏高,可以使用滤镜参数进行调整:

bash

复制代码
ffmpeg -i input.mp4 -vf "subtitles=sub.ass:force_style='MarginV=20'" output.mp4

提示:以上指令中 copy 模式速度最快且无损,仅支持软字幕封装;滤镜模式 (-vf) 会重新编码视频,速度较慢。

相关推荐
shao91851619 小时前
第10章 Streaming(上):初级音频应用(1)——项目三:自建服务器的Mini-Omni实时语音聊天机器人
ffmpeg·whisper·asr·mini-omni·自建语音服务器
Leon_Chenl1 天前
【已开源】【嵌入式 Linux 音视频+ AI 实战项目】瑞芯微 Rockchip 系列 RK3588-基于深度学习的人脸门禁+ IPC 智能安防监控系统
深度学习·opencv·yolo·ffmpeg·音视频·边缘计算·人脸识别+检测
antzou2 天前
视频图片/文字水印
ffmpeg·视频水印·批量水印
AC赳赳老秦3 天前
DBA 专属方案:用 OpenClaw 实现 SQL 语句优化、慢查询分析、数据库备份巡检全自动化
服务器·前端·数据库·ffmpeg·自动化·deepseek·openclaw
小叮当⇔4 天前
M4A 转 MP3 桌面转换器(PyQt5 + FFmpeg)
开发语言·qt·ffmpeg
aovenus7 天前
FFmpeg 官网及文档
ffmpeg
aovenus7 天前
FFmpeg 工具介绍
ffmpeg
jr-create(•̀⌄•́)7 天前
简单视频编辑tools
python·ffmpeg
山栀shanzhi7 天前
在做直播时,I帧的间隔(GOP)一般是多少?
网络·c++·面试·ffmpeg
weixin_421607558 天前
SRT字幕驱动视频自动分镜切割:电影解说批量生成的工程实现思路
ffmpeg·srt字幕·ai剪辑·影视解说·ai电影解说·视频自动切割·字幕文件解析