1、LRC格式
歌詞文件的格式非常簡單,給個示例:
[ti:被遺忘的時光]
[ar:蔡琴]
[al:出塞曲]
[offset:500]
[00:00.80]是誰在敲打我窗
[00:09.50]是誰在撩動琴弦
這里,ti是標(biāo)題,ar是歌手,al是專輯,offset是延時(單位ms,正數(shù)代表整體后延,負(fù)數(shù)代表整體前提),后面再就是具體哪個時間后(分:秒.毫秒)顯示哪些歌詞了。而在視頻播放中,實際上只需要用到offset和后面的具體時間。
2、SRT格式
SRT格式是一種非常簡單的字幕文件格式,示例:
1
00:00:22,027 --> 00:00:24,320
世人都喜歡抱怨。
2
00:00:25,865 --> 00:00:29,783
可事實卻是:萬事無絕對。
這便是兩條字幕,每條字幕有三行,第1行是當(dāng)前字幕序號(從1開始),第二行是字幕顯示的時間段(時:分:秒,毫秒 --> 時:分:秒,毫秒),第三行才是要顯示的字幕。對比可以看到,這兩種格式的文件還是非常相似的,要做的便是一行一行地讀取LRC文件,然后得到時間,組合成起止時間,寫成SRT格式。需要提醒的是SRT時間是用逗號來分隔毫秒部分的,而LRC是用的點號。
3、基礎(chǔ)數(shù)據(jù)
作為一個LRC文件,我們的數(shù)據(jù)結(jié)構(gòu)大概是這樣的:
1 public class LRC 2 { 3 public LRC(string path,int rank) 4 { 5 Path = path; 6 Rank = rank; 7 } 8 public string Path {get;set;} 9 public int Rank {get;set;}10 public TimeSpan Length {get;set;}11 public int Delay {get;set;}12 }
在此我省略了一些內(nèi)容(主要就是INotifyPropertyChanged接口的實現(xiàn)部分),Path是一個歌詞文件的所在路徑,Rank是它在轉(zhuǎn)換成字幕文件時所在的序號,Length則是歌曲應(yīng)有的長度(默認(rèn)為0,程序?qū)⒂嬎鉲rc文件中最后一行歌詞),Delay是歌曲的延時(也以ms為單位,正為延時,負(fù)為提前),但它與前面LRC文件中的offset不同,這是另外一個校對時間,是由我們自己來輸入的,與LRC文件內(nèi)容無關(guān),默認(rèn)也為0。
- PC官方版
- 安卓官方手機版
- IOS官方手機版