SRT字幕格式_手机srt文件怎么加入视频

SRT字幕格式_手机srt文件怎么加入视频srt字幕以其简单、体积小、易查看、易掌握等优点,深得人们的喜爱,但便利的代价就是样式少,无法实现复杂的特效。本文整理了srt字幕的基本格式以及支持的格式,同时介绍了ffmpeg中srt格式生成和

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

[时间:2019-03] [状态:Open]
[关键词:字幕,SRT,文件格式]

0 引言

视频文件中最简单、最常见的外挂字幕格式是SRT(SubRip Text)。本人找了好久也没找到类似的标准文档,从wiki等资料来看,SRT格式是SubRip软件所生成从DVD或视频文件提取的字幕格式,SubRip软件使用OCR将基于图形的字幕转化为纯文本格式的字幕,这样就可以支持诸如渲染、检索、数据分析等诸多用途。后来出于某些原因普及起来,被主流多媒体播放器所支持,由此也催生了各种字幕组产生。
本文的内容将包括:

  • SRT字幕基本格式
  • SRT特效设置
  • ffmpeg中srt相关用例

1 SRT基本格式

SRT字幕通常以srt作为后缀,作为外挂字幕,多数主流播放器都支持直接加载并显示SRT字幕,具体细节看参考SubRip (.SRT) subtitles support in players
该格式是基于纯文本的格式,使用CR+LF作为换行符(Windows下常用换行符,*nix使用LF作为换行符)。每个SRT文件包含至少一个字幕段。
每个字幕段有四部分构成:

  • 字幕序号
  • 字幕显示的起始时间
  • 字幕内容(可多行)
  • 空白行(表示本字幕段的结束)

其中字幕序号一般是顺序增加的,表示字幕是一系列连续的序列。但该数值在字幕显示中不起任何作用,只是起着标记和标识的作用,方便分配翻译行数用。字幕序号的值可以随意,1和100都一样,并不会影响字幕的显示。但字幕序号也是字幕段的一部分,所以不能没有或者删去,否则在播放时,将出现错误。

字幕显示起始时间的格式如下:
hour:minute:second.millisecond --> hour:minute:second.millisecond
hour:minute:second,millisecond --> hour:minute:second,millisecond
后面还可以附加用于指定字幕显示位置的信息,以像素为单位,格式如下: X1:number Y1:number X2:number Y2:number

一个典型的SRT文件如下(截取自阿凡达中英字幕):

3
00:00:39,770 --> 00:00:41,880
在经历了一场人生巨变之后
When I was lying there in the VA hospital ...

4
00:00:42,550 --> 00:00:44,690
我被送进了退伍军人管理局医院
... with a big hole blown through the middle of my life,

5
00:00:45,590 --> 00:00:48,120
那段时间我经常会梦到自己在飞翔
... I started having these dreams of flying.

6
00:00:49,740 --> 00:00:51,520
终获自由
I was free.

7
00:00:54,620 --> 00:00:55,830
而不幸的是
Sooner or later though, ...

2 SRT格式化设置

多数SRT支持一些特定格式化,比如斜体、粗体、下划线以及字体颜色。使用时需要基于HTML的标签,具体用法如下:

<font color=red>颜色</font>
<i>字体斜体</i>
<u>字体下加划线</u>
<br>换行
<b>字体加粗</b>

这些HTML可嵌套。
当然某些播放器还对SRT做了扩展,可以支持ASS/SSA中部分格式化代码。

3 ffmpeg中srt相关用例

使用ffmpeg可以很轻松的把ass/vtt/lyric转换为srt文件,命令如下:

ffmpeg -i a.ass b.srt
ffmpeg -i c.vtt d.srt
ffmpeg -i e.lyric f.srt

使用ffplay现在字幕需要使用subtitles filter,具体命令如下:

./ffplay test.mp4 -vf subtitles=test.srt

对于FFmpeg中的srt demuxer的实现逻辑,基本上是参考SRT基本格式实现的,其中并未支持各种格式,具体代码请查看srtdec.c

4 小结

srt字幕以其简单、体积小、易查看、易掌握等优点,深得人们的喜爱,但便利的代价就是样式少,无法实现复杂的特效。
本文整理了srt字幕的基本格式以及支持的格式,同时介绍了ffmpeg中srt格式生成和渲染的用法,仅供后续参考。

5 参考资料

  1. wiki-SRT
  2. multimedia-SubRip
  3. mkv-SRT
  4. SRT字幕的颜色以及一些特效的设置
  5. SRT字幕完全手册
  6. SubRit Text
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168311.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月3日 上午6:46
下一篇 2022年8月3日 上午6:46


相关推荐

  • OSPF协议配置命令解析

    OSPF协议配置命令解析一 ospf 命令命令功能 ospf 命令用来创建并运行 OSPF 进程 undoospf 命令用来关闭 OSPF 进程 缺省情况下 系统不运行 OSPF 协议 即不运行 OSPF 进程 2 命令格式 ospfIprocess idIrouter idrouter id undoospf process id 3 参数说明 ospf 命令参数说明如表 2 2 所示 process idOSP

    2026年3月17日
    2
  • Tomcat日志乱码问题

    Tomcat日志乱码问题昨天本来准备更新一下Tomcat版本,但是发现新版本的日志打印中文会出现乱码(Tomcat自身打印的日志),不管是使用bat脚本启动还是在Idea中启动,都是乱码。研究了一个晚上,百度上的那些方式都试遍了,都是设置各种JVM启动参数,发现并没有卵用。在使用bat文件启动Tomcat时,Tomcat目录下的logs文件夹会生成相应的日志文件,发现旧版本生成的日志文件编码是GBK,而Windows控…

    2022年6月20日
    42
  • MATLABfill函数_matlab中C的模块名称是什么

    MATLABfill函数_matlab中C的模块名称是什么matlab移植C/C++代码时,发现不管是opencv还是IPP库都没有填充联通区域函数imfill(),于是只能自己动手了。先展示一下imfill()函数的功能,如下图:上图中,左图是一个二值图像,白色是手臂边缘像素值为1,黑色区域像素值为0,现在想将手臂填充1,用imfill()函数可以实现该功能,但C/C++代码需要自己实现。C/C++代码:boolimFill(Ipp8u*img,intwidth,intheight){ vector<int>q; int

    2025年11月4日
    5
  • 大模型实战技能指南:RAG/LangChain等核心技能哪里学更落地?

    大模型实战技能指南:RAG/LangChain等核心技能哪里学更落地?

    2026年3月14日
    2
  • (一) Hadoop开发环境搭建之配置开发环境 – JavaJDK的配置(附安装包)

    (一) Hadoop开发环境搭建之配置开发环境 – JavaJDK的配置(附安装包)安装 JDK 我们先把创建一个 jdk 文件夹 然后把下载好的 JDK 压缩包复制到 jdk 文件夹里 安装包 https pan baidu com s 1e7aIRRBvw9u 提取码 9dqm 接着解压 jdk 安装包 tar zxvfjdk 7u45 linux x64 tar gz 新建一个 hadoop 文件夹 将解压后的 jdk 文件夹移动到 hadoop 文件夹 m

    2025年10月15日
    7
  • Python解决汉诺塔问题

    Python解决汉诺塔问题问题引入汉诺塔问题源于印度一个古老传说 相传大梵天创造世界的时候做了三根金刚石柱子 在一根柱子上从下往上按照大小顺序摞着 64 片黄金圆盘 大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上 并且规定 任何时候 在小圆盘上都不能放大圆盘 且在三根柱子之间一次只能移动一个圆盘 问应该如何操作 相关问题 递归在编程语言中 如果一种计算过程的其中每一步都会用到前一步或前几步的结

    2026年3月17日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号