1.視訊格式(或視訊封裝格式)與視訊編碼的關系可以簡要的概括為:視訊格式是容器,視訊編碼是容器裡的部分内容。
因為一個完整的視訊檔案由視訊、音頻兩部分組成,不單單是視訊。
常見的AVI、RMVB、RM、ASF、MKV、WMV、MP4、3GP、FLV等檔案其實隻是一種封裝标準,也叫容器。
MPEG-1,MPEG-2,H264,Xvid等是常見的視訊編碼格式,MP3,AAC,AC3,mpeg4aac等是常見的音頻編碼格式。
例如:将一個h264視訊編碼檔案和一個mpeg4aac視訊編碼檔案按MP4封裝标準封裝以後,就得到一個MP4字尾的視訊檔案,這個就是我們常見的MP4視訊檔案了。
由于可以把多種視訊編碼檔案、音頻編碼檔案都按照MP4封裝要求封裝,這就意味着即使是MP4視訊格式的檔案,也可能裡面的視訊和音頻編碼格式都不同。是以在一些播放器上同是MP4字尾檔案,一些能正常播放,還有一些就無法播放。
播放器就是先從視訊格式中解析視訊的編碼格式,碼率,播放時間,幀率等資訊.然後根據編碼格式找相應的解碼器來解碼,然後進行播放。
不同的封裝格式,應用的範圍不一樣,目前我們經常見的視訊格式無非就是兩大類: 影像格式和流媒體格式。
比如3GP是一種3G流媒體的視訊封裝格式,主要是為了配合3G網絡的高傳輸速度而開發的,也是目前手機中最為常見的一種視訊格式。它使用 MPEG-4 或是 H.263 兩種視訊編碼方式,以及 AMR-NB 或是 AAC-LC 兩種音頻編碼方式,可以将影片以更經濟的方式存放在手機或是其他行動裝置裡,它最大的優點就是:容量小。
技術先進的封裝格式還可以同時封裝多個視訊、音頻編碼檔案,甚至同時封裝進字幕,比如MKV封裝格式幾乎是一個萬能的封裝容器,可以做到一個檔案包括多語種發音、多語種字幕,隻要制作的時候同時加入多種音軌和對應的字幕就可以了,在播放的時候,就可以自由選擇怕配音和相應的字幕。
2.視訊格式
http://www.mp4soft.cn/10.html
(1)M4V
M4V是一種應用于網絡視訊點播網站和移動手持裝置的視訊格式,是MP4格式的一種特殊類型,其字尾常為.MP4或.M4V,其視訊編碼采用H264,音頻編碼采用AAC。
M4V是一個标準視訊檔案格式,由蘋果公司創造。此種格式為 iPod 、 iPhone 和 PlayStation Portable 所使用,同時此格式基于 MPEG-4 編碼第二版。
(2).FLV
FLV流媒體格式是一種新的視訊格式,全稱為Flash Video。它形成的檔案極小、加載速度極快,使得網絡觀看視訊檔案成為可能,它有效地解決了視訊檔案導入Flash後,使導出的SWF檔案體積龐大,不能在網絡上很好的使用等缺點。
目前各線上視訊網站均采用此視訊格式。如新浪播客、56、優酷、洋芋、酷6、youtube等。FLV已經成為目前視訊檔案的主流格式。
FLV就是随着Flash MX的推出發展而來的視訊格式,是在sorenson 公司的壓縮算法的基礎上開發出來的。FLV格式不僅可以輕松的導入Flash 中,速度極快,并且能起到保護版權的作用,并且可以不通過本地的微軟或者REAL播放器播放視訊。
除了FLV視訊格式本身占有率低、視訊品質良好、體積小等特點适合目前網絡發展外,豐富多樣的資源也是FLV視訊格式統一線上播放視訊格式的一個重要因素。
目前在網際網路上提供FLV視訊的有兩類網站,一種是專門的視訊分享網站如美國的YouTube網站、國内的六間房、洋芋網等。另一種是門戶網站提供了視 頻播客的闆塊,提供了自己的視訊頻道,如新浪視訊播客等,也是使用FLV格式的視訊。此外,百度也推出了關于視訊搜尋的功能,裡面搜尋出來的視訊基本都是 采用了流行的FLV格式。
FLV 是一種全新的流媒體視訊格式,它利用了網頁上廣泛使用的Flash Player 平台,将視訊整合到Flash動畫中。網站的通路者隻要能看Flash動畫,自然也能看FLV 格式視訊,而無需再額外安裝其它視訊插件,FLV視訊的使用給視訊傳播帶來了極大便利。
3.視訊編碼
目前國際上制定視訊編解碼技術的組織有兩個,一個是“國際電聯(ITU-T)”,它制定的标準有H.261、H.263、H.263+等; 另一個是“國際标準化組織(ISO)”,它制定的标準有MPEG-1、MPEG-2、MPEG-4等。
常見的視訊編碼:Microsoft RLE,Microsoft Video 1,Microsoft H.261和H.263 Video Codec,Intel Indeo Video R3.2,Intel Indeo Video 4和5,Intel IYUV Codec,Microsoft MPEG-4 Video codec,DivX- MPEG-4 Low-Motion/Fast-Motion,DivX 3.11/4.12/5.0
4.視訊編碼 H.264
H.264是由兩個組織聯合組建的聯合視訊組(JVT)共同制定的新數字視訊編碼标準, 是以它既是ITU-T的H.264,又是ISO/IEC的MPEG-4進階視訊編碼(Advanced Video Coding,AVC),而且它将成為MPEG-4标準的第10部分。是以,不論是MPEG-4 AVC、MPEG-4 Part 10,還是ISO/IEC 14496-10,都是指H.264。
H.264最大的優勢是具有很高的資料壓縮比率,在同等圖像品質的條件 下,H.264的壓縮比是MPEG-2的2倍以上,是MPEG-4的1.5~2倍。舉個例子,原始檔案的大小如果為88GB,采用MPEG-2壓縮标準壓 縮後變成3.5GB,壓縮比為25∶1,而采用H.264壓縮标準壓縮後變為879MB,從88GB到879MB,H.264的壓縮比達到驚人的 102∶1!H.264為什麼有那麼高的壓縮比?低碼率(Low Bit Rate)起了重要的作用。尤其是,H.264在具有高壓縮比的同時還擁有高品質流暢的圖像.
H.264是在MPEG-4技術的基礎之上建立起來的,H.264/MPEG-4 AVC(H.264)是1995年自MPEG-2視訊壓縮标準釋出以後的新一代的視訊壓縮标準。通過該标準,在同等圖象品質下的壓縮效率比以前的标準(MPEG2)提高了2倍左右,是以,H.264被普遍認為是最有影響力的行業标準。
10.Flash Player
面對HTML5技術的發展,Flash節節敗退,首先是iOS裝置不支援Flash,後來Adobe又宣布将終止移動裝置上、Linux平台上Flash Player的開發工作,根據Adobe釋出的Flash路線圖來看,未來Flash将逐漸消弱普通的需求,專注于遊戲和增值視訊領域。
但從目前的技術來看,HTML5還遠遠替代不了Flash的地位。目前網際網路上大約80%的線上視訊是Flash格式。 不過,Firefox浏覽器的締造者Mozilla推出了一個新的解決方案,基于Javascript和HTML5的Flash Player播放器(Mozilla),使用HTML5技術來渲染和播放Flash檔案,不知道現在怎麼樣了。
據國外媒體報道,新版Flash Media Sever增加了HLS協定,讓iOS裝置能播放Flash影片,讓網絡内容供應廠商不必另外轉換格式,修改網頁内容。
參考 http://www.alloyteam.com/2012/06/javascript-and-html5-flash-player-is-mozilla/
11.網頁播放技術
網頁播放技術,都是以網頁代碼的形式利用 WMP 或 Real 播放器本身的一些函數、事件和方法,如暫停、快進、全屏等等,在網頁上實作對媒體檔案的一種播放控制。網頁播放器功能的多少,取決于對這些函數、事件和方法利用的多少。好的網頁播放器就好象把真的 WMP 或 Real 搬到了網頁上一樣,原因就是這種網頁播放器将使用者本地的 WMP 或 Real 進行了淋漓盡緻地控制。
是以,網頁播放技術就是在網頁上實作播放流媒體或本地媒體的一種應用。制作網頁播放器,并不是真的在網頁上“發明”了一種或幾種播放器。目前所有的網頁播放器基本上仍然都是使用者本地的 Windows Media Player (簡稱 WMP)和 Real 在發揮實質作用,也就是說,如果使用者本地沒有安裝 WMP 或 Real 這兩種真正的播放器軟體,“網頁播放”一切都是空談。
12.HLS,HTTP Live Streaming,http直播流
常用的流媒體協定主要有 HTTP 漸進下載下傳、和基于 RTSP/RTP 的實時流媒體協定。
目前比較友善又好用的是 HTTP 漸進下載下傳的方法。蘋果公司的 HTTP Live Streaming 是這方面的代表。它最初是蘋果公司針對iPhone、iPod、iTouch和iPad等移動裝置而開發的流,現在在桌面也有很多應用了, HTML5 直接支援這個。
在 HTML5 中直接支援這種視訊可以使用如下标簽
<video tabindex="0" height="480" width="640">
<source src="/content1/content1.m3u8">
</video>
自動過渡碼率
參考
http://blog.csdn.net/czgwdm/article/details/6416484
http://arctg30.iteye.com/blog/1141308
http://blog.csdn.net/shallon_luo/article/details/7257509
13.
把優酷的視訊網頁位址在UIWebView中測試,可以正常出錯頁面和視訊框,和播放按鈕,點選播放按鈕後,在控制台有看到輸出日志内容: setting movie path: http://v.youku.com/player/getM3U8/vid/102999102/type/flv/ts/1339575316/v.m3u8,這樣就判斷它通路了一個hls位址。
洋芋,酷6一樣,但在pptv網頁上沒找到播放按鈕。
并且發現把視訊全屏後,界面都是系統視訊界面,即浏覽器調用了系統視訊實作播放。
在蘋果電腦地firefox中測試,優酷網頁中視訊界面部分是通過通路 http://static.youku.com/v1.0.0333/v/swf/loader.swf這個位址出現的,并且嵌入的是video标簽,而非傳統的object标簽。
<video id="youku-html5-player-video" width="100%" height="458" x-webkit-airplay="allow" controls autoplay preload></video>
參考
線上視訊一般都是基于flash和flv來實作的,而衆所周知,iOS的safari不支援網頁中的flash,但支援html5的video标記(顯然這個時代蘋果必須以某種方式支援網絡視訊),對于video标記,會在其區域上顯示播放按鈕,點按後進入全屏播放。是以優酷等網站會針對iOS做出相容性處理:
通過user-agent來判斷使用者來源,如果是iOS使用者,則用video标記來替代傳統object,其src的則是源位址(不是flv,而是ts包裝 的源,m3u8是個文本檔案,其中指定了進一步的ts位址,包括一些視訊分段參數等);對于其他使用者,則出于相容性和功能性考慮,依舊使用swf播放器。
<video id="youku-html5-player-video" width="100%" height="100%" x-webkit-airplay="allow" controls="" autoplay="" preload="" src="/player/getM3U8/vid/91861269/type/flv/ts/1332059778/v.m3u8"> </video>
一些第三方網站嵌入調用的youku視訊在iOS上無法點選播放,這是因為第三方網站沒有對其做上述的相容性判斷切換為video标記所緻。
分析優酷HTML5位址
http://v.youku.com/player/getRealM3U8/vid/XMjUzMzUxNzQ4/type//video.m3u8
參考 http://chenxiao154.blog.163.com/blog/static/52946702201222893432528/