2016年9月30日 星期五

播放DVD和外加字幕

最近開始和YuYu找一些經典喜劇片來看,發現學校的Fine Arts Library有很多的DVD可外借,同時也讓沒進過這個圖書館的我可以一睹它的風采,果然非常的工藝美術感,甚至出現一台吊掛在天花板的鋼琴!除此之外,居然還有傳說的3D印表機。


當然以上跟此文章標題沒有太大的關聯,簡言之就是借出來的DVD想當然爾是沒有中文字幕的,而MAC內建的DVD player雖然非常好用,但目前無法加入外來的字幕,這讓臨時起義想看電影的我們浪費了點時間克服,所以想記錄解決問題的過程。


過程想到可以用來播放DVD又同時可以外加字幕的「MPlayerX」和「VLC」,但嘗試MPlayerX 1.1.4版後發現非常不流暢,不知道是否軟體版本問題。所以改使用VLC播放,然後再拖曳外加字幕進播放視窗,但卻只有顯示數字而沒有字幕,後來才發現原來是字幕裡表示時間的「sec」和「msec」之間是空格而不是 ',',格式沒有完全正確。

解決方式可以直接用以下簡單的Python script讀進原本的字幕後,再一一加上逗號。

 import numpy as np  
   
 text =''  
 f = open('correct_format.srt', 'w')  
 with open('original.srt') as g:  
        
      for line in g:  
           a=line.split()  
             
           if ('-->' in a) == False:  
                text = text + line  
           if ('-->' in a) == True:  
                text += a[0] + ',' + a[1] + ' ' + a[2] + ' ' + a[3] + ',' + a[4] + '\n'  
                       
   
 f.write(text)  
 f.close()  


結果開始播放以後,發現字幕總是慢了1.5秒,經過一番摸索,VLC(此為2.2.4版本)可以直接更正字幕顯示時間,方式如下:
  1.  在Menu bar上點選「Window」,並再點選「Track Synchronization」
  2.  並在視窗中裡的「Subtitle track synchronization」直接輸入要更正的時間,在我的case就是 -1.5 sec。


附註:
  • VLC下載網址:http://www.videolan.org/vlc/index.html
  • 另外,下載的中文字幕編碼部分,繁體字很常是Big5,而簡體字則是GBK,這樣在VLC播放時很可能會變亂碼,可用iconv指令改成萬國碼(UTF8):
          iconv -f BIG-5 -t UTF-8 sub_big5.srt > sub_utf8.srt
  • 並可以透過 iconv -l 顯示其所有支援的編碼。
  • 如果不想用軟體改字幕時間,可以參考我之前的文章中的script更正時間:https://ysztheory.blogspot.tw/2015/11/srt_2.html

沒有留言: