實作 BD 可隱藏式卡拉OK 字幕
目前市面上沒有任何一片 BD 有製作可隱藏式卡拉OK 字幕原先以為是目前的 BD 編輯軟體無法做出 卡拉OK 捲動式字幕, 直到上次網友推薦 easySUP 字幕軟體, 才讓人看到一線曙光
昨晚我實做了 可隱藏式卡拉OK 字幕, 套用到去年很紅的 "江蕙 - 初登場" BD 影片中.
Preview 時, 果然看到了令人滿意的 "隱藏式" 卡拉OK 字幕
因此可證明, BD 是做得到 可隱藏式卡拉OK 字幕 這種功能.
但是, 拿到播放機上觀賞時, 卻發現驚人的事實.
手邊所有的播放機, 沒有一台能 "完全" 正常顯示這種字幕.
目前測試結果如下:
SONY PS3 三台 (除了40GB 之外各一台) == 字幕時常出現閃爍
Panasonic DMR-BR550 ==字幕不停閃爍
SONY BDZ-RX50 == 字幕幾乎秀不出來, 只有停止捲動的靜止字幕才能順利顯示
日規硬體 BD 播放機可以說是全軍覆沒, 那麼... PC 的播放軟體呢?
由於我手邊沒有 Corel WinDVD, 所以只測了 Cyberlink Power DVD 以及 Arcsoft Totalmedia
Cyberlink Power DVD (9.0.2029)== 字幕不停閃爍
Arcsoft Totalmedia Theatre (2.2.6.129)== 幾乎正常, 但是播放捲動字幕時 CPU loading 相當高
(以下是 Totalmedia 的擷圖)
如果從 Totalmedia 的狀況來看, 在 BD 上要秀這種隱藏式 卡拉OK 字幕, 對一般播放機的 "處理器" 來說, 必定是極大的考驗.
以日系播放機的處理器來論, 處理這種字幕可能要比較強的處理能力才可以順利播放.
所以只有運算能力強的 PS3 勉強可以看, 其他全數陣亡.
PC 的部份, 原先是在工作的 Core i7 平台測試, 今天換到別的平台測試發現... 處理器的強弱果然有很大的影響.
測試一: NB Core 2 Duo L7500, 有硬解, 字幕一開始捲動就完全 LAG 了...
測試二: PC Core 2 Duo E4300 超頻至 3GHz, 有硬解, 字幕一開始捲動會發現畫面有點不太順暢... 才想說為什麼江蕙演唱會 BD 沒用卡拉 OK 字幕
原來可能是喜歡音樂那邊也搞不定這問題呀...?! 不知4核心的有辦法運作嗎?
期待大大的說明.謝謝... 本文章最後由 KOBSS 於 2010-8-10 01:06 編輯
原帖由 davidje 於 2010-3-6 02:14 發表 http://www.hd.club.tw/images/common/back.gif
才想說為什麼江蕙演唱會 BD 沒用卡拉 OK 字幕
原來可能是喜歡音樂那邊也搞不定這問題呀...?!
喜歡音樂 應該是還沒能力做到 BD隱藏式 卡拉OK 字幕
一般的製作軟體並沒辦法做得出來... 可以傳個 sup 檔看看嗎?
不過在那之前比較擔心一個問題
buffer 不會爆嗎?
就算是用 BD 內建的 In/Out Effects 去做
出來的字幕佔的 buffer 也是爆大的
而卡拉 OK 不像選單圖片可以重複利用
幾乎都是每張不一樣的
耗的 buffer 就更大了
機器播不動是不是就因為 buffer 爆了卻強制將字幕打包進去
所以才有播不動的現象? 本文章最後由 KOBSS 於 2010-8-10 01:06 編輯
原帖由 wirepole 於 2010-3-8 12:41 發表 http://www.hd.club.tw/images/common/back.gif
可以傳個 sup 檔看看嗎?
不過在那之前比較擔心一個問題
buffer 不會爆嗎?
呵呵... 我倒是沒想到 Buffer 爆掉的問題.
先傳一個測試用的 SUP 上來.
用 SUPread 可以開起來看.
本文章最後由 KOBSS 於 2010-9-8 01:46 編輯
Karaoke 字幕製作教學已經完成
http://www.hd.club.tw/viewthread.php?tid=39859
請各位不吝指教.
Thanks. 最近終於又有時間研究
看了一下附件的字幕檔
字幕檔的 timecode 並不連續
說不定這才是字幕播不順的原因
字幕檔中有好幾句 In 點 timecode 小於上一句的 Out 點 timecode
因此根本無法判別佔用了多少 buffer
不過這個字幕檔才幾千句, 原則上 buffer 應該不會爆
所以問題應該就出在 timecode 上了
用 SUPread 看也可以發現, 有好幾行 timecode 的 In / Out 是完全一樣的
這些就是有問題的地方
另外一提, SUPread 並不是走 BD 字幕的標準規格
所以有些地方連 SUPread 自己都會解錯
如果這個字幕檔是用 easySUP 生成的話
那就代表 easySUP 生成的字幕 timecode 排序有問題
才會發生下一句 timecode 小於前一句的情況
如果能解決這個問題, 說不定在播放時就不會有問題
雖然是能夠手動去解決
不過幾千句字幕要手動調整錯誤的 timecode 實在很費工
等有空時再想想有沒有別的方法可以調整吧 本文章最後由 KOBSS 於 2012-5-24 00:07 編輯
原帖由 wirepole 於 2010-3-26 18:31 發表 http://www.hd.club.tw/images/common/back.gif
看了一下附件的字幕檔
字幕檔的 timecode 並不連續
說不定這才是字幕播不順的原因
字幕檔中有好幾句 In 點 timecode 小於上一句的 Out 點 timecode
我原先也以為是這個問題, 但是後來仔細看, 發現下一個 timecode 並沒有小於上一個 timecode
頂多是 "同一個" timecode 而已, 所以... 字幕是完全連續的. easySUP 轉的並沒有錯誤... 唯一有問題的是, timecode 重疊的時候, 應該會顯示哪一個 SUP...
舉例:
|<---A-->|
|B|
|<--C-->|
A 的尾巴與 B 重疊, B 又與 C 的開頭重疊
也就是說, 在A的結尾, 正常情況應該是會直接顯示 C 的開頭 (TotalMedia 似乎就是如此顯示)
而忽略 B 的字幕
但是 PS3 播放時就會在這個點閃一下, 不知何故.
順便說一下另外一個故事...
前一陣子我做了 這個 字幕
結果我加上的 "特效" , 在 PS3 播放時就 "完全的LAG" , 是LAG到 聲音都不見的那種程度...
轉出來的字幕 SUP 超過五萬個... 這樣是不是就是所謂的 Buffer 爆掉了呢?
[ 本帖最後由 KOBSS 於 2010-3-26 19:15 編輯 ] 再引述一次
原帖由 wirepole 於 2010-3-26 18:31 發表 http://www.hd.club.tw/images/common/back.gif
另外一提, SUPread 並不是走 BD 字幕的標準規格
所以有些地方連 SUPread 自己都會解錯
從這個角度來說, 所以現在還沒有任何 "非商用" 軟體能正確瀏覽 sup 檔
據說 SUPread 的作者認為目前的功能已經夠了
完全不想去修正任何因為不符合規範而造成讀取錯誤的 bug
回到正題
這是上面提供的字幕檔
其中紅色粗體的部分就是錯誤的部分, 可以比對上一句 timecode
這也是之所以無法拿去測 buffer 的原因
所以簡單來說, 大致上應該是這樣的
1.easySUP 生成了錯誤的 timecode (如果 easySUP 寫的 timecode 機制是參考 SUPread 的, 那生成的 timecode 會錯誤很正常)
2.因為 SUPread 不能正確讀取 sup 檔, 導致讀取出來的字幕檔 "乍看" 是正常的
3.PS3 走的是 BD 標準規範, 所以在 timecode 錯誤的地方就無所遁形了
雖然 TotalMedia 也是走標準規範, 但可能是讀取 timecode 的方式和 PS3 不一樣, 所以問題比較小
PS3 可能是逐句顯示, 因此遇到 timecode 錯誤的地方就沒轍了
TotalMedia 或許是採用了與影片播放時間同步的方式顯示字幕
因此小於前一句 timecode 的字幕就被跳過而不顯示出來了 原帖由 wirepole 於 2010-3-27 09:54 發表 http://www.hd.club.tw/images/common/back.gif
http://www.hd.club.tw/attachments/month_1003/20100327_b38d261ad571bc61864aowQC1TQ7argT.jpg
另外再對這張圖簡單說明一下
Type 欄的 16 是代表字幕檔的 timecode 區段 (此區還包含了敘述字幕圖片編號、位置及使用的色盤編號等)
雖然其它區段也有 timecode 但基本上 BD 都是以區段 16 為 timecode 基準
Length 欄是代表區段的長度, 單位是 byte
pts 欄就是實際的 timecode, 換算過後就是右邊的 timecode 欄
dts 也是 timecode 原則上大約為 pts 值乘 128
前一欄的 flag 是代表 dts 值滿了幾次 FF FF FF FF, 滿了一次就會加 1
這欄是因為 dts 值實際只占 4 byte, 不能容納超過 FF FF FF FF 的數值
最後的 format 是額外加的, 這不是標準規範裡需要的參數
這只是用來判別此 timecode 到底是顯示或是消失字幕用的
in 就代表此 timecode 是顯示字幕用的, 沒有就代表是字幕消失用的, 也就是字幕結束點
判別方式是依據在 80 區段 (代表區段結束的區段) 之前是否含有 15 區段 (圖片物件區段)
若有圖片, 則代表是顯示字幕, 反之則代表不顯示字幕 (這並不是正確的判別方式, 但一般非日系 BD 字幕基本上都可以用這種方式判別)
以上
另外一提, 在字幕連續的時候, 可以不需要有字幕結束點
因此 easySUP 在連續字幕後面都加了結束點, 其實是多此一舉的動作
這種情況說不定在某些播放設備播放時會造成字幕閃爍的情況也說不定
[ 本帖最後由 wirepole 於 2010-3-27 10:19 編輯 ] 看了一下给的sup文件,确实如wirepole所说,里面有的时码重合,而且DisplaySet命令写的有问题,这导致了机器频繁闪烁。我重新输出了一下sup文件,有兴趣的话可以试验一下,看是否有问题。由于附件大小限制分成3块上传。 01_new.part02.rar 01_new.part03.rar 如果是DVD時代,卡拉OK字幕可以SUB來顯示;到了BD時代,我會選擇以PIP子畫面來顯示字幕,不過以非商業軟體而言,可能很難實現。
成功了!
本文章最後由 KOBSS 於 2010-8-10 01:07 編輯成功了!
修正後的字幕檔案合上後, 給 PS3 播放不會閃爍了!
但是....
在 Panasonic DMR-BR550 上播放時, 捲動並不順暢, 影像是正常的, 但是字幕感覺掉格嚴重, 幾乎以每秒不到十五張的速度在捲動... (X_X)
不過, 在 SONY BDZ-RX50 播放時, 意外的看到捲動速度竟然表現得與 PS3 相同!!並不會像 Panasonic 有掉格的感覺! (O_O) 大驚!
上一版在這台機器上可是完全不能看的啊~~~!
ArcSoft TotalMedia 播放, 處理器使用率依然上升, 與上一版的狀況相同. (T_T)
可能還要再測試一下其他廠牌的播放機, 說不定結果會讓人驚喜... (^_^)
目前只能手動修正這個問題嗎?不知道有沒有人願意寫個小軟體來轉呢? 播放不太流畅应该是因为有的刷新动作间隔太短,只有1-2帧。另外这种游动字幕还可以利用调色板的变化或者窗口滑动来实现,但不知道现在有没有相关工具。
頁:
[1]