如何修正 VOB 檔案的播放時間

將影片檔 *.vob 上傳至 Windows Azure Media Service,經編碼後有時會發現影片的長度變短,影片還沒播完便提前結束。

iStock_000014024761Small clock

造成此問題的可能是當時錄製影片過程中,有按下暫停後再錄製等動作,導致在 Windows Azure Media Service 編碼時誤判影片的結束點,這個問題目前已向 Windows Azure forums 提出。

尚未獲得正確解決方法前,筆者實驗發現,透過轉檔工具 (Avidemux、格式工廠) 先將原始 *.vob 轉碼輸出,可修正此問題。

以 Avidemux 轉檔

下載 Avidemux 2.6.6,按下列操作步驟

image
1. 開啟原始 *.vob 檔

2. 選擇輸出影音的設定,Video 選 Mpeg4 AVC (x264),Audio 選擇 AAC (Faac) 或 AAC (lav)

3. 儲存,輸入附檔名為 *.mp4

編碼完成後,須檢查:

1. 暫停的時間點前後影像是否連續?

2.影片的時間長度是否正確?

查看檔案的延伸資訊, Video > Length 是否是正確的。

SNAGHTML7ee6c8
原始檔時間是 00:02:32

SNAGHTML7f738c
編碼後時間是 00:43:56

 

以格式工廠轉檔

下載 格式工廠 3.2.0,按下列操作步驟

先建立輸出配置

針對日後會經常用到設定,另外儲存一個輸出配置會比較方便。

SNAGHTML642e23
進入格式工廠後,點擊 [影片] > [VOB]


SNAGHTML65a545
點擊 [輸出配置]


SNAGHTML675a41
設定 [影片流]中的各項設定,這部份視原始檔案做調整。
設定完成後點擊 [另存新檔為]。


SNAGHTML6aa88f
輸入配置名稱,按下 [確定],即完成常用的配置。

 

進行編碼

image
進入主畫面直接點擊 [影片] > [自訂]


SNAGHTML7461ff
1. 確認輸出配置的設定

2. 按下[新增檔案],選取要編碼的原始 VOB 檔案,可同時選取多個檔案。

3. 點擊[確定] 返回主畫面。

如上圖中可以看到影片時間長度,若是正確的,是不用先轉檔即可直接上傳至 Windows Azure Media Service


image
點擊 [開始],接著就等候產生新的檔案。

 

寫在後面

最佳組合

Avidemux、格式工廠均可校正影片時間長度。但轉檔後並不能保證可使影片從 Windows Azure Media Service 以串流播放。

兩種工具可輸出多種檔案格式,而每種檔案還有進階設定。在這麼多檔案組合進行實驗:本機轉檔 > 上傳Windows Azure > 線上編碼串流 > Silverlight 測試。每種組合實驗耗時約半小時以上,某些情況會會延伸其他問題:

1. 檔案上傳 Azure Media Service 後,無法編碼,例如:AVI, WMV

2. 輸出的影片有跳格現象,在有暫停的時間點,音訊正常但影片會中斷常達0.5~1分鐘,使用格式工廠會有此現象。

歷經多日實驗後找到的可行的結果是:

以 Avidemux 在本地端編碼一次(如上步驟),再上傳至 Windows Azure Media Service,如此一來播放時間是正確的,且沒有影像跳格的問題。

 

參考資源

用FFDShow讓Media Player也能撥放DVD、AVI影片