為什麼這篇gop影像鄉民發文收入到精華區:因為在gop影像這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!●12032 7 5/09 kisaraki R[問題] 大家會想收藏哪種格式的動畫文章...
作者: kisaraki (如月未緒) 看板: C_Chat
標題: Re: [問題] 大家會想收藏哪種格式的動畫
時間: Wed May 9 14:06:16 2012
純就技術方面來討論
wohtp 提到 :
現代的影像壓縮法都是一次處理連續幾個frame,所以要解壓縮出現在螢幕上面的
這個frame,播放器需要先讀取未來的frame的資料,而avi不支援這個先讀
的動作。所以它才會被淘汰。
和 xmax0083 :
AVI就已經開始跟不上時代一點啦
不支援b-frame就很難把影片跑得方便又好用,加上只能有一影一音,很簡陋
關於這部份,應該都是指 B-Frame
先從一般 Mpeg-4(DivX/Xvid/AVC H.264) 的影像結構來看
一段完整的影像通常由一群 GOP ( Groupo of Picture ) 所組成
GOP 內通常包含了 I, P, B 三種 Frame 格式
I-Frame 為一整個完整畫面,可以單一獨立解碼,也通稱為 Key-Frame
P-Frame 為向前參考,必須要參考前一張畫面,才能解碼
B-Frame 為雙向參考,除前張外,也必須要參考下一張畫面才能解碼
在一般的狀態下,一個影片的 GOP 通常應為 IPPPPPP.....
因此只考慮單純播放,放完就沒了,所以只需要有 I, P
但若影片有倒轉的需求,那麼編碼時 GOP 就可能會改成 IBPBPBP
其中 GOP 內 B 和 P 的數量是可以依參數設定不同而異的
AVI 格式由於 RIFF Chunk 的限制,Chunk 在播放時只能循序讀取
因此原生並不支援 B-Frame,但不表示不能用其他手段讓它支援
DivX 就在 AVI 內使用 [PB] 的方式將二個 Frame 給 Pack 在一起
使下一張的 P 可以讓 B 來參考,而此方式目前也為多數 Player 所接受
所以在目前的狀況下,說要在 AVI 內使用 B-Frame 也不是不可能的
--
另一方面,AVI 也可以一影多音,甚至可以內嵌字幕
請看 AVI 的 StreamHeader 結構
typedef struct {
FOURCC fccType;
FOURCC fccHandler;
DWORD dwFlags;
WORD wPriority;
WORD wLanguage;
DWORD dwInitialFrames;
DWORD dwScale;
DWORD dwRate; /* dwRate / dwScale == samples/second */
DWORD dwStart;
DWORD dwLength; /* In units above... */
DWORD dwSuggestedBufferSize;
DWORD dwQuality;
DWORD dwSampleSize;
RECT rcFrame;
}AVIStreamHeader;
其中的 FURCC fccType 便包含了
'vids' -video
'auds' -audio
'txts' -subtitle
AVI 並沒有說一個 AVI 只能有一個 Audio Chunk List
因此多個聲音軌是完全沒問題的,在下自己就壓過 1 Video + 8 Audio 的 AVI
然而,說到內嵌字幕的多樣性,AVI 就沒有辦法像 MKV/MP4 那樣靈活,充其量也只是讓人能看
什麼卡拉 OK , MV 的,就忘了它吧
--
除了封裝內容,MKV / MP4 比 AVI 方便(或說惱人)的地方,就是支援動態 Resolution 和 FPS
動態 Resolution 實務上還找不太到有什麼人在使用
但動態 FPS 卻有不少人在影像編碼時用到﹝FPS 隨畫面動態而調整﹞
過去也有不少伊莉琴斯的魔人們在嘗試這方面的編碼
MP4/MKV 由於在每一個結構內的 Block 都有自己的 Time Stamp,因此只需要調整 Time Stamp
就可以達到動態 FPS
AVI 則由於已在 Header 內固定了 FPS 的值,因此只能用固定 FPS 播放
若要實作動態 FPS ,就必須取不同 FPS 的最小公倍數﹝如混合 24/30 後的 120FPS﹞
在 120FPS 內,屬於 24/30 以外的影像 AVI 如何處理?
答案就是插入 AVI 特有的 D-Frame,也就是 NULL,Player 在看到 D-Frame 後,會自動
忽略它,直到找到下一個 I, P, B 為止
--
回到最原始發文的問題,會要什麼格式,像在下這種老人家,仍傾向 AVI,再來才是 MP4
最不推 MKV
原因在於
1.編輯軟體的適用性﹝如 Adobe Premiere、TMPGEnc、AVIUtl﹞,仍以 AVI 最高,若
使用 MKV,有很大的機會必須要透過 AviSynth + DirectShowSource 才能動
如果 MKV 內封裝的東西太雜亂,甚至有可能動不了,就必須先把檔案 Demux 成影音
分離檔再另外處理,傷透腦筋。
2.沒有影片倒轉的需求,因此 B-Frame 的原生支援便不是那麼重要,如果有大量 Seeking
的編輯需求,那在下反而會考慮把整個影片都先轉成 HuffYUV 或 Lagarith 再處理,反
而方便些
3.沒有動態 FPS 的需求,是多少 FPS 就多少處理
4.對在下而言,字幕實在不是那麼需要的東西
--
好吧,我承認我是來幫 AVI 講點話的。 :)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.133.190.68