引用:
Originally posted by Shade
不是的,您的推論有誤。
所有的 MPEG-4 的資料流 bitstream 都是相容的,不同的 MPEG-4 codec 可以互相解碼播放彼此壓出來的 bitstream。
例如 DivX 可以播放 XviD 壓出來的 bitstream,XviD 可以播放 Nero Digital 壓出來的 bitstream。
因為今天我們使用的,用來裝載 bitstream 的"載體",也就是一般所說的檔案格式,是用 .avi 來裝這些 MPEG-4 的資料流。AVI 的檔頭有一個 FourCC 的資訊,會告知播放軟體要用哪一個 codec 來解碼裡面裝載的資料。DivX 的 AVI 會指定要用 DivX 的 codec 來解碼,如果系統上找不到 DivX codec,就會認為沒有對應的解碼器,而宣告解碼失敗。但是其實這個 AVI 裡面裝的東西,不一定要用 Divx codec 來解,用 XviD codec 來解也是可以,但是播放軟體不知道,他不會自動幫你用 XviD codec 來解碼 DivX 的 AVI。
如果我們手動更改 DivX AVI 的檔頭,把 FourCC 由 "DIVX" 改成為 "XVID",這樣播放軟體就會認為這個檔案要用 XviD 來解碼,就會自動使用 XviD codec 來解碼裡面的東西。
所以 MPEG-4 AVI 不同 codec 要用對應的 codec 來解碼的原因,是因 .avi 這個載體設計的關係,不是因為 MPEG-4 codec 彼此不相容,實際上是相容的,都可以互相解對方裡面放的東西,只是播放軟體不知道。
如果今天改用 MPEG-4 標準本身制訂的 .mp4 檔案格式做為載體,那麼所有支援 .mp4 檔案格式的 decoder 都可以自動地解碼,不管這個檔案是誰壓的,例如 3ivX 的 decoder,Envivo MPEG-4 player。
就如同,MPEG-2 有好多個 encoder,大家壓出來的資料都用 .mpg 這樣的檔案格式裝,所有支援 .mpg 播放的軟體,能夠辨認 .mpg 格式的軟體就可以自動地起來播放,不管這個檔案是用哪一個 MPEG-2 encoder 壓的。
MPEG-4 也是一樣,所有的 MPEG-4 都是互通的,大家都可以解,但是必須用 .mp4 這個標準的載體裝。
然而目前的 MPEG-4 流行趨勢,大家都還是用 AVI 來裝載,因為支援 AVI 的軟體比較多,事後要剪接處理會比較方便,流通也比較方便,不然還要向別人解釋「你要先裝一個能播放 .mp4 的軟體才能看喔」這樣很麻煩。
至於您說
當然不是這樣。
要播放 .mp4,首先你的播放軟體要能辨認 .mp4 這個檔案格式,以 Windows Media Player 來說的話,它沒有內建 .mp4 的 spiliter,你的系統上必須有 .mp4 file 的 spiliter,把 MPEG-4 video 的資料流分離出來,送給可以解碼 raw MPEG-4 資料流的 DirectShow Filter 去做解碼。
所以:
1. 播放軟體要能辨認、分離 .mp4,如果播放軟體沒有內建,系統上要有對應的 spiliter。
就如同播放 .avi 檔案格式,需要 AVI Spiliter,只是你不知道背後有它在運作,因為系統內建了,所以使用覺得開啟 AVI 是那麼自然。
2. 有了 .mp4 的 Spiliter 之後,還要有接受能 raw MPEG-4 資料流的輸入,做解碼的 DirectShow Filter。
由於你的系統缺少這兩樣東西,所以沒有辦法用 Windows Media Player 來播放 .mp4。如果你有安裝 3ivX codec,或者 Nero Digital,這兩個軟體在安裝的時候會自動幫你安裝對應 .mp4 的 DirectShow Filter,這樣你才能用 Windows Media Player 播放 .mp4。
所以「MPEG-4 用 .mp4 裝,就可以彼此相容」,這句話是說,AVI 這個載體因為格式的關係,需要對應的 codec 才能解碼,如果改用 .mp4 裝,則不管那個 encoder 壓的,所有能解 MPEG-4 的 codec 都可以解碼。但是你的播放軟體必須先能辨識 .mp4,分離出正確的資料給 codec 解碼啊,不然即使裡面的東西 codec 明明會解,他也沒有辦法取得資料來解啊。
「.mp4 裡面放的 MPEG-4 資料格式是相容的」和
「所有播放軟體都要可以播放 .mp4」,
這兩件事完全沒有關係。MPEG-4 的資料格式都是相容的沒錯,有的播放軟體不能放 .mp4 那是檔案操作的問題,和 MPEG-4 是否相容無關。
QuickTime Player 內建 .mp4 的 Spiliter 和 decoder,所以直接就可以放 .mp4。
|
太謝謝您了,太厲害,只有一個字可以形容,棒!
可否請教另一個問題,如果我把所有的.mp4的副檔名改成.avi,那可不可以播放?另外,如果以後有可以播放mepg4的DVD player,那一您猜測,有沒有可能可以直接播放.mp4?
再次的謝謝您!