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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • integer转换为string_go 字符串转int

    integer转换为string_go 字符串转intstr:=“123”//string转inti,err:=strconv.Atoi(str)iferr==nil{fmt.Printf(“i:%v\n”,i)}//string转int64i64,err:=strconv.ParseInt(str,10,64)iferr==nil{fmt.Printf(“i64:%v\n”,i64)…

    2022年9月20日
    4
  • 跨域是什么?[通俗易懂]

    跨域是什么?[通俗易懂]跨域指的是不同服务器之间不能相互访问各自的资源或者数据,这出于一个策略——“同源策略”,那么为什么要这么设计呢,这是因为,一些网站的数据可能涉及的用户的隐私,因此不属于当前服务器的网站时不能访问它的,就比如,我们登陆淘宝后,由不小心点进了其他的一个钓鱼网站,如果说不这么设置,那么钓鱼网站就可以获取到你的登陆账号和密码,进而可以达到使用你的账户购买东西的目的,因此跨域是出于安全的考虑而诞生的。实…

    2022年6月12日
    25
  • 标准C语言程序设计第七版pdf,C语言程序设计(向华)7.pdf[通俗易懂]

    标准C语言程序设计第七版pdf,C语言程序设计(向华)7.pdf[通俗易懂]《C语言程序设计》《C语言程序设计》第7章函数第7章函数《C语言程序设计》清华大学出版社本章内容要点本章内容要点••函数的定义和调用。函数的定义和调用。••函数参数和函数的返回值。函数参数和函数的返回值。••变量的作用域。变量的作用域。《C语言程序设计》…

    2025年6月12日
    2
  • 《UNIX网络编程 卷1:套接字联网API(第3版)》——8.16 小结

    《UNIX网络编程 卷1:套接字联网API(第3版)》——8.16 小结

    2022年3月2日
    38
  • leetcode-5最长回文子串(manacher算法)

    leetcode-5最长回文子串(manacher算法)原题链接给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = “babad”输出:”bab”解释:”aba” 同样是符合题意的答案。示例 2:输入:s = “cbbd”输出:”bb”示例 3:输入:s = “a”输出:”a”示例 4:输入:s = “ac”输出:”a” 提示:1 <= s.length <= 1000s 仅由数字和英文字母(大写和/或小写)组成题解暴力class Solution {public:

    2022年8月8日
    5
  • HTML5游戏开发实战–当心

    HTML5游戏开发实战–当心

    2022年1月14日
    40

发表回复

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

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