【ffmpeg命令入门】添加字幕流

文章目录


前言

在视频编辑和处理中,添加字幕是一项常见的需求,无论是为了增强观众体验还是为了满足特定的格式要求。FFmpeg作为一个强大的多媒体处理工具,提供了丰富的功能来处理和修改视频文件。本文将介绍如何使用FFmpeg添加字幕流到视频中,以及一些常见的参数和技巧。


字幕流的基础知识

字幕流是什么?

字幕流是一种特殊的数据流,用于在视频播放时显示文字内容,比如电影中的中文字幕或英文字幕。它们被嵌入到视频文件中,以便观众可以看到与视频内容相关的文字信息。

不同类型的字幕流及其区别

  1. 内嵌字幕流(Hard Subtitles):

    • 定义: 内嵌字幕是直接合并到视频图像中的字幕,不可移除或更改。
    • 特点: 常见于某些视频文件中,无法关闭或选择其他语言。
  2. 外挂字幕流(Soft Subtitles):

    • 定义: 外挂字幕作为独立的文件或流存在,可以与视频文件分开。
    • 特点: 观众可以根据需要选择显示或隐藏字幕,支持多语言切换。

区别与应用场景

  • 使用场景: 内嵌字幕适合于不需要多语言支持且希望简化播放设置的内容;外挂字幕则更灵活,适合需要多语言支持或随时关闭字幕的场合。
  • 技术实现: 内嵌字幕通常需要重新编码整个视频文件,而外挂字幕则可以通过FFmpeg等工具单独处理,不影响原始视频质量。

通过理解这些不同类型的字幕流及其应用,可以根据实际需要选择合适的方式来增强和定制你的视频内容。

常见的字幕格式及其区别

  1. SubRip Subtitle(.srt)

    • 特点: 纯文本格式,包含时间码和对应的字幕文本。
    • 应用: 广泛支持,适合简单的字幕需求。
  2. SubStation Alpha(.ssa/.ass)

    • 特点: 支持字体、颜色、位置、动画等丰富的样式设置。
    • 应用: 适合制作高度定制化的字幕效果,如动画效果和复杂的布局。
  3. WebVTT(.vtt)

    • 特点: Web标准格式,支持时间码、样式和语言设置。
    • 应用: 主要用于网络视频和HTML5播放器,支持跨平台使用。
  4. DVD Subtitle(.sub)

    • 特点: 原生用于DVD格式的字幕,通常与VOB视频格式一起使用。
    • 应用: 主要用于DVD和蓝光光盘,支持DVD播放器的硬件字幕显示。
  5. Advanced SubStation Alpha(.ass)

    • 特点: 是SSA的进阶版本,支持更多的特效和样式控制。
    • 应用: 适合制作复杂的字幕样式和特效,如动态效果和精细布局。

我们这篇文章使用ssa进行测试,这个为示例文件:

bash 复制代码
[Script Info]
Title: Simple SSA Subtitle
ScriptType: v4.00
Collisions: Normal
PlayDepth: 0

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
Style: Default,Arial,20,&HFFFFFF,&H0000FF,&H000000,&H80000000,-1,0,1,1,2,2,10,10,10,0,0

[Events]
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: Marked=0,0:00:01.00,0:00:50.00,Default,,0000,0000,0000,,Hello, World!

区别与应用场景

  • 文本格式 vs 样式控制: .srt 和 .vtt 等主要关注文本和时间码,适合简单的字幕需求;而 .ssa/.ass 和 .sub 支持更复杂的样式和特效,适合制作专业和高度定制的字幕效果。

  • 平台兼容性: .srt 和 .vtt 格式广泛支持于各种播放器和平台,而 .ssa/.ass 和 .sub 格式可能需要特定的播放器支持才能完整显示特效和样式。

选择合适的字幕格式取决于你的视频内容和播放平台需求,理解这些区别可以帮助你更好地制作和应用字幕,提升观众的观看体验。

使用ffmpeg添加字幕

前提须知

如果ffmpeg要实现添加字幕的功能需要在编译时开启--enable-filter=subtitles --enable-libass

--enable-filter=subtitles 代表开启字幕滤镜
--enable-libass 则是字幕滤镜需要依赖的外部库,所以编译时还需要指定该外部库的路径(如x264的编译一样)

软字幕只有部分容器格式比如(mkv)才支持,MP4/MOV等不支持,而且也只有部分播放器支持软字幕或者外挂字幕(如VLC播放器)

添加软字幕

非常的简单,我们只需要把视频和字幕一起当作输入文件放进去即可:

bash 复制代码
ffmpeg -i maxfps.mp4 -i test.ssa -c copy outhavessa.mkv

vlc播放软字幕视频

然后我们通过vlc打开视频,然后选择字幕轨道:

选择轨道1

然后播放的视频就可以看到字幕了

ffplay播放软字幕视频

使用简单滤波来添加软字幕到视频里面

bash 复制代码
ffplay -vf "subtitles=outhavessa.mkv" outhavessa.mkv

ffplay播放硬字幕

使用简单滤波来添加硬字幕到视频里面

bash 复制代码
ffplay -vf "subtitles=outhavessa.mkv" outhavessa.mkv

总结

通过本文的介绍,你现在应该掌握了如何使用FFmpeg向视频文件中添加字幕流的基本方法。记住,FFmpeg提供了众多选项和参数,可以根据你的具体需求进行调整和优化。继续探索和实践,你将能够利用FFmpeg强大的功能来处理和定制你的视频内容,为观众带来更加丰富和多样的观看体验。

相关推荐
AI极客菌1 小时前
Controlnet作者新作IC-light V2:基于FLUX训练,支持处理风格化图像,细节远高于SD1.5。
人工智能·计算机视觉·ai作画·stable diffusion·aigc·flux·人工智能作画
阿_旭1 小时前
一文读懂| 自注意力与交叉注意力机制在计算机视觉中作用与基本原理
人工智能·深度学习·计算机视觉·cross-attention·self-attention
王哈哈^_^1 小时前
【数据集】【YOLO】【目标检测】交通事故识别数据集 8939 张,YOLO道路事故目标检测实战训练教程!
前端·人工智能·深度学习·yolo·目标检测·计算机视觉·pyqt
Qingniu015 小时前
【青牛科技】应用方案 | RTC实时时钟芯片D8563和D1302
科技·单片机·嵌入式硬件·实时音视频·安防·工控·储能
MediaTea6 小时前
Pr 视频过渡:沉浸式视频 - VR 色度泄漏
音视频·vr
ai_xiaogui6 小时前
AIStarter教程:快速学会卸载AI项目【AI项目管理平台】
人工智能·ai作画·语音识别·ai写作·ai软件
LNTON羚通6 小时前
算法定制LiteAIServer摄像机实时接入分析平台烟火检测算法的主要功能
音视频·视频监控
喵~来学编程啦7 小时前
【论文精读】LPT: Long-tailed prompt tuning for image classification
人工智能·深度学习·机器学习·计算机视觉·论文笔记
EasyCVR11 小时前
EHOME视频平台EasyCVR视频融合平台使用OBS进行RTMP推流,WebRTC播放出现抖动、卡顿如何解决?
人工智能·算法·ffmpeg·音视频·webrtc·监控视频接入
蒙娜丽宁11 小时前
《Python OpenCV从菜鸟到高手》——零基础进阶,开启图像处理与计算机视觉的大门!
python·opencv·计算机视觉