SRT字幕格式


[時間: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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM