為令人員易於除錯以及利於理解方便,廣論App使用SRT(SubRip)檔案格式作為字幕格式,此格式可以簡單的使用文字編輯器開啟、編輯與除錯,時間解析度可達千分之一秒,此字幕檔案可相容於其他支援SRT格式的播放器。 字幕檔案位於[廣論App資源中心 -> subtitle],在廣論App下載字幕時,會從該位置下載到手機/平板中。字幕在手機/平板中存放的位置為[Android -> data -> eyes.blue -> lamrimreader -> files -> lamrimreader -> Subtitle],您或許需要先取得最高使用者權限(Root)才能存取該位置,請注意字幕檔案在廣論App的命名規則為: 001A.SRT 002A.SRT .... 160B.SRT 大小寫必須吻合廣論App才能正確使用該檔案。 字幕編碼規則 廣論App的字幕檔案由字幕編輯器所輸出,字幕文字為最簡單的文字輸出,不包含字形標籤(如<i>Elephant's Dream</i>, <font color="cyan">Some text</font>等),以001A.SRT為例,開頭內容如下: 1
00:00:00,217 --> 00:00:08,162
南無本師釋迦牟尼佛;
2
00:00:08,163 --> 00:00:16,053
南無本師釋迦牟尼佛;
3
00:00:16,054 --> 00:00:24,216
南無本師釋迦牟尼佛;
4
00:00:24,217 --> 00:00:30,547
無上甚深微妙法,
5
00:00:30,548 --> 00:00:36,642
百千萬劫難遭遇,
6
00:00:36,643 --> 00:00:42,701
我今見聞得受持,
7
00:00:42,702 --> 00:00:48,597
願解如來真實義。
8
00:00:48,598 --> 00:00:57,976
今天我們開始修習《菩提道次第廣論》,
9
00:00:57,977 --> 00:01:03,237
這是宗喀巴大師所造的。 字幕編輯器的輸出規則如下所列,請注意下列每一筆資訊皆以換行結尾。
字幕解碼規則 由上述編碼規則可瞭解,除(1)數字序列外,有用的資訊為字幕開始時間、結束時間與字幕文字三項,廣論App在解碼字幕檔案時,不使用數字序列,僅取字幕開始時間、結束時間與字幕文字三項資訊,儲存於資料結構SubtitleElement中,依序將整個檔案的資料取出後取出後存入陣列中(SubtitleElement的陣列),字幕在陣列中的位置即為數字序列相關的資訊。 在程式中,字幕檔案的解讀由 eyes.blue.Util.loadSubtitle 所處理,有興趣可研讀該程式碼以瞭解詳細執行過程。 使用者與廣論App的互動過程中,或許會拉動進度條或點選上一句/下一句的按鈕,當發生這類的事件時,廣論App必須根據進度條上面的時間去SubtitleElement陣列中查找相對應的字幕來顯示,這類以時間去查找相對應的字幕的方法,末學使用二元搜尋法(Binary Search)來降低搜尋時間,該函式位於eyes.blue.Util.subtitleBSearch中,研讀前您可能需要先了解Divide and Conquer演算法。 |
技術文件 >