再探 Youtube 技術

現在已經有 Panasonic 的電視可以支援 Youtube 了! 雖然美國朋友說比較紅的已經變成 Hulu, 不過美國境外的人暫時還看不到 Hulu 網站, 所以我們還是先搞懂 Youtube.

Youtube 的網站有幾個地方值得探討:

Q1. Video/Audio 壓縮格式

Q2. 可否下載?

Q3. 未來發展

A1. 關於第一個問題:

Youtube 支援的格式為:

Platform Container Video Audio
PC SWF/FLV FLV1=Sorenson MP3
覆蓋式廣告(480×70)
影片內廣告(320×250)
SWF (Shockwave Flash) + FLA    
手機  3GP  H263 AMR 

手機 Youtube 資料來源: http://www.thinknext.net/archives/tag/youtube#

 

A2. Youtube 使用 streaming 串流技術, 基本上不希望大家下載.

然而, 還是有網站和工具協助大家下載這些影片:

http://blog.roodo.com/jojos/archives/3434155.html

下載之後, 還有很多轉檔工具.

http://download.longtermly.com/category/internet-tools/youtube-tools/

如果 user 端可以支援 streaming 的話 (也就是採用 RTP、RTSP 網路協議), 當然可以藉著 Youtube 的網址, 播出正確的內容. 當然, 若實際上不支援 SWF, 就要 hack 到檔案正確的位置, 透過 HTTP 網路協議, 將整個檔案 (FLV) 拿來解.

Youtube 為了防範大家找到 FLV 真正的位置, 會在 streaming URL 與 file storage URL 之間改變對應關係. 也就是說, 如果大家乖乖 streaming, 那個 URL 是不會變的. 但是如果想要 download 的話, 就要找出兩者對應的規則.

通常這個規則也很簡單. 引用啾啾的部落格的文字:

舉例來說如果我想下載此影片:
原網址:
http://www.youtube.com/watch?v=IncztAzMsck

將「watch?v=」換成「v/」後貼到瀏覽器上
http://www.youtube.com/v/IncztAzMsck
網址將會變成
http://www.youtube.com/p.swf?video_id=IncztAzMsck&eurl=&iurl=http…

再把「p.swf?」改成「get_video.php?」變成
http://www.youtube.com/get_video.php?video_id=IncztAzMsck&eurl=&i…

之後就可以直接下載影片了,記得要加上 .flv 副檔名,這就是直接下載的方法.

A3. 關於第三個問題, 因為 SWF 已經是 Adobe 的資產. 在 Adobe 的藍圖之中, 未來會用 H.264 和 AAC 來當作 Adobe SWF/FLV decoder 的音視頻格式.

也有一種說法是, Youtube 其實已經悄悄地在提供 SWF 9 的輸出. 使用 popcorn hour 這台機器連上 Youtube 就會看到畫質較佳的 streaming quality.這一點未經證實.

如果連結到其他 Youtube like 的網站, 它的 video 可能是 VP6. 主要是 flash player 的版本不同. 詳見下表:

version container video 格式
6 SWF/FLV TrueMotion VP6 (H.263-like)(audio = NellyMoser)
7 SWF/FLV Screen video bitstream
format = lossless
 8 SWF/FLV TrueMotion VP6 (H.263-like)
9 SWF/FLV H.264
10 SWF/FLV 多了 3D effect, audio mixing 等功能