视频直播技术详解(3)编码和封装
聲明:本文為CSDN原創(chuàng)投稿文章,未經(jīng)許可,禁止任何形式的轉(zhuǎn)載。
作者:七牛云
責(zé)編:錢曙光,關(guān)注架構(gòu)和算法領(lǐng)域,尋求報(bào)道或者投稿請(qǐng)發(fā)郵件qianshg@csdn.net,另有「CSDN 高級(jí)架構(gòu)師群」,內(nèi)有諸多知名互聯(lián)網(wǎng)公司的大牛架構(gòu)師,歡迎架構(gòu)師加微信qshuguang2008申請(qǐng)入群,備注姓名+公司+職位。
from: http://geek.csdn.net/news/detail/99498
七牛云于6月底發(fā)布了一個(gè)針對(duì)視頻直播的實(shí)時(shí)流網(wǎng)絡(luò)LiveNet和完整的直播云解決方案,很多開(kāi)發(fā)者對(duì)這個(gè)網(wǎng)絡(luò)和解決方案的細(xì)節(jié)和使用場(chǎng)景非常感興趣。
結(jié)合該實(shí)時(shí)流網(wǎng)絡(luò)LiveNet和直播云解決方案的實(shí)踐,我們將用七篇文章,更系統(tǒng)化地介紹當(dāng)下大熱的視頻直播各環(huán)節(jié)的關(guān)鍵技術(shù),幫助視頻直播創(chuàng)業(yè)者們更全面、深入地了解視頻直播技術(shù),更好地技術(shù)選型。
本系列文章大綱如下:
(一)采集
(二)處理
(三)編碼和封裝
(四)推流和傳輸
(五)現(xiàn)代播放器原理
(六)延遲優(yōu)化
(七)SDK性能測(cè)試模型
在上一期的處理篇中,我們介紹了講解常見(jiàn)視頻處理功能如美顏、視頻水印、濾鏡、連麥等。 本篇是《解密視頻直播技術(shù)》系列之三:編碼和封裝。視頻編碼是本系列一個(gè)重要的部分,如果把整個(gè)流媒體比喻成一個(gè)物流系統(tǒng),那么編解碼就是其中配貨和裝貨的過(guò)程,這個(gè)過(guò)程非常重要,它的速度和壓縮比對(duì)物流系統(tǒng)的意義非常大,影響物流系統(tǒng)的整體速度和成本。同樣,對(duì)流媒體傳輸來(lái)說(shuō),編碼也非常重要,它的編碼性能、編碼速度和編碼壓縮比會(huì)直接影響整個(gè)流媒體傳輸?shù)挠脩趔w驗(yàn)和傳輸成本。
視頻編碼的意義
- 原始視頻數(shù)據(jù)存儲(chǔ)空間大,一個(gè)1080P的7s視頻需要817MB
- 原始視頻數(shù)據(jù)傳輸占用帶寬大,10Mbps的帶寬傳輸上述7s視頻需要11分鐘
而經(jīng)過(guò)H.264編碼壓縮之后,視頻大小只有708k,10Mbps的帶寬僅僅需要500ms,可以滿足實(shí)時(shí)傳輸?shù)男枨?#xff0c;所以從視頻采集傳感器采集來(lái)的原始視頻勢(shì)必要經(jīng)過(guò)視頻編碼。
基本原理
那為什么巨大的原始視頻可以編碼成很小的視頻呢?這其中的技術(shù)是什么呢?核心思想就是去除冗余信息:
- 空間冗余:圖像相鄰像素之間有較強(qiáng)的相關(guān)性
- 時(shí)間冗余:視頻序列的相鄰圖像之間內(nèi)容相似
- 編碼冗余:不同像素值出現(xiàn)的概率不同
- 視覺(jué)冗余:人的視覺(jué)系統(tǒng)對(duì)某些細(xì)節(jié)不敏感
- 知識(shí)冗余:規(guī)律性的結(jié)構(gòu)可由先驗(yàn)知識(shí)和背景知識(shí)得到
視頻本質(zhì)上講是一系列圖片連續(xù)快速的播放,最簡(jiǎn)單的壓縮方式就是對(duì)每一幀圖片進(jìn)行壓縮,例如比較古老的MJPEG編碼就是這種編碼方式,這種編碼方式只有幀內(nèi)編碼,利用空間上的取樣預(yù)測(cè)來(lái)編碼。形象的比喻就是把每幀都作為一張圖片,采用JPEG的編碼格式對(duì)圖片進(jìn)行壓縮,這種編碼只考慮了一張圖片內(nèi)的冗余信息壓縮,如圖1,綠色的部分就是當(dāng)前待編碼的區(qū)域,灰色就是尚未編碼的區(qū)域,綠色區(qū)域可以根據(jù)已經(jīng)編碼的部分進(jìn)行預(yù)測(cè)(綠色的左邊,下邊,左下等)。
圖 1但是幀和幀之間因?yàn)闀r(shí)間的相關(guān)性,后續(xù)開(kāi)發(fā)出了一些比較高級(jí)的編碼器可以采用幀間編碼,簡(jiǎn)單點(diǎn)說(shuō)就是通過(guò)搜索算法選定了幀上的某些區(qū)域,然后通過(guò)計(jì)算當(dāng)前幀和前后參考幀的向量差進(jìn)行編碼的一種形式,通過(guò)下面兩個(gè)圖2連續(xù)幀我們可以看到,滑雪的同學(xué)是向前位移的,但實(shí)際上是雪景在向后位移,P幀通過(guò)參考幀(I或其他P幀)就可以進(jìn)行編碼了,編碼之后的大小非常小,壓縮比非常高。
圖 2可能有同學(xué)對(duì)這兩張圖片怎么來(lái)的感興趣,這里用了FFmpeg的兩行命令來(lái)實(shí)現(xiàn),具體FFmpeg的更多內(nèi)容請(qǐng)看后續(xù)章節(jié):
- 第一行生成帶有移動(dòng)矢量的視頻
- 第二行把每一幀都輸出成圖片
除了空間冗余和時(shí)間冗余的壓縮,主要還有編碼壓縮和視覺(jué)壓縮,下面是一個(gè)編碼器主要的流程圖:
?
圖3、圖4兩個(gè)流程,圖3是幀內(nèi)編碼,圖4是幀間編碼,從圖上看到的主要區(qū)別就是第一步不相同,其實(shí)這兩個(gè)流程也是結(jié)合在一起的,我們通常說(shuō)的I幀和P幀就是分別采用了幀內(nèi)編碼和幀間編碼。
編碼器的選擇
前面梳理了一下編碼器的原理和基本流程,編碼器經(jīng)歷了數(shù)十年的發(fā)展,已經(jīng)從開(kāi)始的只支持幀內(nèi)編碼演進(jìn)到現(xiàn)如今的H.265和VP9為代表的新一代編碼器,就目前一些常見(jiàn)的編碼器進(jìn)行分析,帶大家探索一下編碼器的世界。
1) H.264簡(jiǎn)介
H.264/AVC項(xiàng)目意圖創(chuàng)建一種視頻標(biāo)準(zhǔn)。與舊標(biāo)準(zhǔn)相比,它能夠在更低帶寬下提供優(yōu)質(zhì)視頻(換言之,只有MPEG-2,H.263或MPEG-4第2部分的一半帶寬或更少),也不增加太多設(shè)計(jì)復(fù)雜度使得無(wú)法實(shí)現(xiàn)或?qū)崿F(xiàn)成本過(guò)高。另一目的是提供足夠的靈活性以在各種應(yīng)用、網(wǎng)絡(luò)及系統(tǒng)中使用,包括高、低帶寬,高、低視頻分辨率,廣播,DVD存儲(chǔ),RTP/IP網(wǎng)絡(luò),以及ITU-T多媒體電話系統(tǒng)。
H.264/AVC包含了一系列新的特征,使得它比起以前的編解碼器不但能夠更有效的進(jìn)行編碼,還能在各種網(wǎng)絡(luò)環(huán)境下的應(yīng)用中使用。這樣的技術(shù)基礎(chǔ)讓H.264成為包括YouTube在內(nèi)的在線視頻公司采用它作為主要的編解碼器,但是使用它并不是一件很輕松的事情,理論上講使用H.264需要交納不菲的專利費(fèi)用。
專利許可
和MPEG-2第一部分、第二部分,MPEG-4第二部分一樣,使用H.264/AVC的產(chǎn)品制造商和服務(wù)提供商需要向他們的產(chǎn)品所使用的專利的持有者支付專利許可費(fèi)用。這些專利許可的主要來(lái)源是一家稱為MPEG-LA LLC的私有組織,該組織和MPEG標(biāo)準(zhǔn)化組織沒(méi)有任何關(guān)系,但是該組織也管理著MPEG-2第一部分系統(tǒng)、第二部分視頻、MPEG-4第二部分視頻和其它一些技術(shù)的專利許可。
其他的專利許可則需要向另一家稱為VIA Licensing的私有組織申請(qǐng),這家公司另外也管理偏向音頻壓縮的標(biāo)準(zhǔn)如MPEG-2 AAC及MPEG-4 Audio的專利許可。
H.264的開(kāi)源實(shí)現(xiàn)
- OpenH264
- x264
OpenH264是思科實(shí)現(xiàn)的開(kāi)源H.264編碼,雖然H.264需要交納不菲的專利費(fèi)用,但是專利費(fèi)有一個(gè)年度上限,思科把OpenH264實(shí)現(xiàn)的年度專利費(fèi)交滿后,OpenH264事實(shí)上就可以免費(fèi)自由地使用了。
x264是一個(gè)采用GPL授權(quán)的視頻編碼自由軟件。x264的主要功能在于進(jìn)行H.264/MPEG-4 AVC的視頻編碼,而不是作為解碼器(decoder)之用。
除去費(fèi)用問(wèn)題比較來(lái)看:
- OpenH264CPU的占用相對(duì)x264低很多
- OpenH264只支持baseline profile,x264支持更多profile
2) HEVC/H.265簡(jiǎn)介
高效率視頻編碼(High Efficiency Video Coding,簡(jiǎn)稱HEVC)是一種視頻壓縮標(biāo)準(zhǔn),被視為是ITU-T H.264/MPEG-4 AVC標(biāo)準(zhǔn)的繼任者。2004年開(kāi)始由ISO/IEC Moving Picture Experts Group(MPEG)和ITU-T Video Coding Experts Group(VCEG)作為ISO/IEC 23008-2 MPEG-H Part 2或稱作ITU-T H.265開(kāi)始制定。第一版的HEVC/H.265視頻壓縮標(biāo)準(zhǔn)在2013年4月13日被接受為國(guó)際電信聯(lián)盟(ITU-T)的正式標(biāo)準(zhǔn)。HEVC被認(rèn)為不僅提升視頻質(zhì)量,同時(shí)也能達(dá)到H.264/MPEG-4 AVC兩倍之壓縮率(等同于同樣畫面質(zhì)量下比特率減少了50%),可支持4K分辨率甚至到超高清電視(UHDTV),最高分辨率可達(dá)到8192×4320(8K分辨率)。
H.265的開(kāi)源實(shí)現(xiàn)
- libde265
- x265
libde265 HEVC由struktur公司以開(kāi)源許可證GNU LesserGeneral Public License(LGPL)提供,觀眾可以較慢的網(wǎng)速下欣賞到最高品質(zhì)的影像。跟以前基于H.264標(biāo)準(zhǔn)的解碼器相比,libde265 HEVC解碼器可以將您的全高清內(nèi)容帶給多達(dá)兩倍的受眾,或者,減少50%流媒體播放所需要的帶寬。高清或者4K/8K超高清流媒體播放,低延遲/低帶寬視頻會(huì)議,以及完整的移動(dòng)設(shè)備覆蓋。具有「擁塞感知」視頻編碼的穩(wěn)定性,十分適合應(yīng)用在3/4G和LTE網(wǎng)絡(luò)。
x265是由MulticoreWare開(kāi)發(fā),并開(kāi)源。采用GPL協(xié)議,但是資助這個(gè)項(xiàng)目的幾個(gè)公司組成了聯(lián)盟可以在非GPL協(xié)議下使用這個(gè)軟件。
3) VP8簡(jiǎn)介
VP8是一個(gè)開(kāi)放的視頻壓縮格式,最早由On2 Technologies開(kāi)發(fā),隨后由Google發(fā)布。同時(shí)Google也發(fā)布了VP8編碼的實(shí)做庫(kù):libvpx,以BSD授權(quán)條款的方式發(fā)行,隨后也附加了專利使用權(quán)。而在經(jīng)過(guò)一些爭(zhēng)論之后,最終VP8的授權(quán)確認(rèn)為一個(gè)開(kāi)放源代碼授權(quán)。
目前支持VP8的網(wǎng)頁(yè)瀏覽器有Opera、Firefox和Chrome。
專利許可
2013年三月,Google與MPEG LA及11個(gè)專利持有者達(dá)成協(xié)議,讓Google獲取VP8以及其之前的VPx等編碼所可能侵犯的專利授權(quán),同時(shí)Google也可以無(wú)償再次授權(quán)相關(guān)專利給VP8的用戶,此協(xié)議同時(shí)適用于下一代VPx編碼。至此MPEG LA放棄成立VP8專利集中授權(quán)聯(lián)盟,VP8的用戶將可確定無(wú)償使用此編碼而無(wú)須擔(dān)心可能的專利侵權(quán)授權(quán)金的問(wèn)題。
VP8 的開(kāi)源實(shí)現(xiàn)
- libvpx
libvpx是VP8的唯一開(kāi)源實(shí)現(xiàn),由On2 Technologies開(kāi)發(fā),Google收購(gòu)后將其開(kāi)放源碼,License非常寬松可以自由使用。
4) VP9簡(jiǎn)介
VP9的開(kāi)發(fā)從2011年第三季開(kāi)始,目標(biāo)是在同畫質(zhì)下,比VP8編碼減少50%的文件大小,另一個(gè)目標(biāo)則是要在編碼效率上超越HEVC編碼。
2012年12月13日,Chromium瀏覽器加入了VP9編碼的支持。Chrome瀏覽器則是在2013年2月21日開(kāi)始支持VP9編碼的視頻播放。
Google宣布會(huì)在2013年6月17日完成VP9編碼的制定工作,屆時(shí)Chrome瀏覽器將會(huì)把VP9編碼默認(rèn)引導(dǎo)。2014年3月18日,Mozilla在Firefox瀏覽器中加入了VP9的支持。
2015年4月3日,谷歌發(fā)布了libvpx1.4.0增加了對(duì)10位和12位的比特深度支持、4:2:2和4:4:4色度抽樣,并VP9多核心編/解碼。
專利許可
VP9是一個(gè)開(kāi)放格式、無(wú)權(quán)利金的視頻編碼格式。
VP9的開(kāi)源實(shí)現(xiàn)
- libvpx
libvpx是VP9的唯一開(kāi)源實(shí)現(xiàn),由Google開(kāi)發(fā)維護(hù),里面有部分代碼是VP8和VP9公用的,其余分別是VP8和VP9的編解碼實(shí)現(xiàn)。
VP9和H.264和HEVC比較
HEVC和H.264在不同分辨率下的比較
跟H.264/MPEG-4相比,HEVC的平均比特率減低值為:
可見(jiàn)碼率下降了60%以上。
- HEVC(H.265)對(duì)VP9和H.264在碼率節(jié)省上有較大的優(yōu)勢(shì),在相同PSNR下分別節(jié)省了48.3%和75.8%。
- H.264在編碼時(shí)間上有巨大優(yōu)勢(shì),對(duì)比VP9和HEVC(H.265),HEVC是VP9的6倍,VP9是H.264的將近40倍
5) FFmpeg
談到視頻編碼相關(guān)內(nèi)容就不得不提一個(gè)偉大的軟件包——FFmpeg。
FFmpeg是一個(gè)自由軟件,可以運(yùn)行音頻和視頻多種格式的錄影、轉(zhuǎn)換、流功能,包含了libavcodec——這是一個(gè)用于多個(gè)項(xiàng)目中音頻和視頻的解碼器庫(kù),以及l(fā)ibavformat——一個(gè)音頻與視頻格式轉(zhuǎn)換庫(kù)。
FFmpeg這個(gè)單詞中的FF指的是Fast Forward。有些新手寫信給FFmpeg的項(xiàng)目負(fù)責(zé)人,詢問(wèn)FF是不是代表Fast Free或者Fast Fourier等意思,FFmpeg的項(xiàng)目負(fù)責(zé)人回信說(shuō):「Just for the record, the original meaning of FF in FFmpeg is Fast Forward.」
這個(gè)項(xiàng)目最初是由Fabrice Bellard發(fā)起的,而現(xiàn)在是由Michael Niedermayer在進(jìn)行維護(hù)。許多FFmpeg的開(kāi)發(fā)者同時(shí)也是MPlayer項(xiàng)目的成員,FFmpeg在MPlayer項(xiàng)目中是被設(shè)計(jì)為服務(wù)器版本進(jìn)行開(kāi)發(fā)。
FFmpeg下載地址是:https://ffmpeg.org/download.html
- 可以瀏覽器輸入下載,目前支持Linux、Mac OS、Windows三個(gè)主流的平臺(tái),也可以自己編譯到Android或者iOS平臺(tái)。
- 如果是Mac OS,可以通過(guò)brew安裝
brew install ffmpeg --with-libvpx --with-libvorbis --with-ffplay
我們可以用FFmpeg來(lái)做哪些有用有好玩的事情呢?通過(guò)一系列小實(shí)驗(yàn)來(lái)帶大家領(lǐng)略FFmpeg的神奇和強(qiáng)大。
FFmpeg錄屏
通過(guò)一個(gè)小例子看一下怎么在Mac OS下面使用FFmpeg進(jìn)行錄屏:
輸入:
ffmpeg -f avfoundation -list_devices true -i ""
輸出:
[AVFoundation input device @ 0x7fbec0c10940] AVFoundation video devices: [AVFoundation input device @ 0x7fbec0c10940] [0] FaceTime HD Camera [AVFoundation input device @ 0x7fbec0c10940] [1] Capture screen 0 [AVFoundation input device @ 0x7fbec0c10940] [2] Capture screen 1 [AVFoundation input device @ 0x7fbec0c10940] AVFoundation audio devices: [AVFoundation input device @ 0x7fbec0c10940] [0] Built-in Microphone給出了當(dāng)前設(shè)備支持的所有輸入設(shè)備的列表和編號(hào),我本地有兩塊顯示器,所以1和2都是我屏幕,可以選擇一塊進(jìn)行錄屏。
查看當(dāng)前的H.264編解碼器:
輸入:
ffmpeg -codecs | grep 264
輸出:
DEV.LS h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (decoders: h264 h264_vda ) (encoders: libx264 libx264rgb )查看當(dāng)前的VP8編解碼器:
輸入:
ffmpeg -codecs | grep vp8
輸出:
DEV.L. vp8 On2 VP8 (decoders: vp8 libvpx ) (encoders: libvpx )可以選擇用vp8或者h(yuǎn)264做編碼器
ffmpeg -r 30 -f avfoundation -i 1 -vcodec vp8 -quality realtime screen2.webm # -quality realtime 用來(lái)優(yōu)化編碼器,如果不加在我的 Air 上幀率只能達(dá)到 2or
ffmpeg -r 30 -f avfoundation -i 1 -vcodec h264 screen.mp4然后用ffplay播放就可以了
ffplay screen.mp4
or
ffplay screen2.webp
FFmpeg視頻轉(zhuǎn)換成gif
有一個(gè)特別有用的需求,在網(wǎng)上發(fā)現(xiàn)了一個(gè)特別有趣的視頻想把她轉(zhuǎn)換成一個(gè)動(dòng)態(tài)表情,作為一個(gè)IT從業(yè)者,我第一個(gè)想到的不是下載一個(gè)轉(zhuǎn)碼器,也不是去找一個(gè)在線轉(zhuǎn)換網(wǎng)站,直接利用手邊的工具FFmpeg,瞬間就完成了轉(zhuǎn)碼:
ffmpeg -ss 10 -t 10 -i tutu.mp4 -s 80x60 tutu.gif ## -ss 指從 10s 開(kāi)始轉(zhuǎn)碼,-t 指轉(zhuǎn)換 10s 的視頻 -sFFmpeg錄制屏幕并直播
可以繼續(xù)擴(kuò)展例子1,直播當(dāng)前屏幕的內(nèi)容,向大家介紹一下怎么通過(guò)幾行命令搭建一個(gè)測(cè)試用的直播服務(wù):
Step 1:首先安裝docker:訪問(wèn)https://www.docker.com/products/docker,按操作系統(tǒng)下載安裝。
Step 2:下載nginx-rtmp鏡像:
docker pull chakkritte/docker-nginx-rtmp
Step 3:創(chuàng)建nginx html路徑,啟動(dòng)docker-nginx-rtmp:
mkdir ~/rtmp docker run -d -p 80:80 -p 1935:1935 -v ~/rtmp:/usr/local/nginx/html chakkritte/docker-nginx-rtmpStep 4:推送屏幕錄制到nignx-rtmp:
ffmpeg -y -loglevel warning -f avfoundation -i 2 -r 30 -s 480x320 -threads 2 -vcodec libx264 -f flv rtmp://127.0.0.1/live/testStep 5:用FFplay播放:
ffplay rtmp://127.0.0.1/live/test
總結(jié)一下,FFmpeg是個(gè)優(yōu)秀的工具,可以通過(guò)它完成很多日常的工作和實(shí)驗(yàn),但是距離提供真正可用的流媒體服務(wù)、直播服務(wù)還有非常多的工作要做,這方面可以參考七牛云發(fā)布的七牛直播云服務(wù)。
封裝
介紹完了視頻編碼后,再來(lái)介紹一些封裝。沿用前面的比喻,封裝可以理解為采用哪種貨車去運(yùn)輸,也就是媒體的容器。
所謂容器,就是把編碼器生成的多媒體內(nèi)容(視頻,音頻,字幕,章節(jié)信息等)混合封裝在一起的標(biāo)準(zhǔn)。容器使得不同多媒體內(nèi)容同步播放變得很簡(jiǎn)單,而容器的另一個(gè)作用就是為多媒體內(nèi)容提供索引,也就是說(shuō)如果沒(méi)有容器存在的話一部影片你只能從一開(kāi)始看到最后,不能拖動(dòng)進(jìn)度條(當(dāng)然這種情況下有的播放器會(huì)話比較長(zhǎng)的時(shí)間臨時(shí)創(chuàng)建索引),而且如果你不自己去手動(dòng)另外載入音頻就沒(méi)有聲音,下面介紹幾種常見(jiàn)的封裝格式和優(yōu)缺點(diǎn):
1)AVI格式(后綴為.avi):它的英文全稱為Audio Video Interleaved,即音頻視頻交錯(cuò)格式。它于1992年被Microsoft公司推出。這種視頻格式的優(yōu)點(diǎn)是圖像質(zhì)量好。由于無(wú)損AVI可以保存alpha通道,經(jīng)常被我們使用。缺點(diǎn)太多,體積過(guò)于龐大,而且更加糟糕的是壓縮標(biāo)準(zhǔn)不統(tǒng)一,最普遍的現(xiàn)象就是高版本W(wǎng)indows媒體播放器播放不了采用早期編碼編輯的AVI格式視頻,而低版本W(wǎng)indows媒體播放器又播放不了采用最新編碼編輯的AVI格式視頻,所以我們?cè)谶M(jìn)行一些AVI格式的視頻播放時(shí)常會(huì)出現(xiàn)由于視頻編碼問(wèn)題而造成的視頻不能播放或即使能夠播放,但存在不能調(diào)節(jié)播放進(jìn)度和播放時(shí)只有聲音沒(méi)有圖像等一些莫名其妙的問(wèn)題。
2)DV-AVI格式(后綴為.avi):DV的英文全稱是Digital Video Format,是由索尼、松下、JVC等多家廠商聯(lián)合提出的一種家用數(shù)字視頻格式。數(shù)字?jǐn)z像機(jī)就是使用這種格式記錄視頻數(shù)據(jù)的。它可以通過(guò)電腦的IEEE 1394端口傳輸視頻數(shù)據(jù)到電腦,也可以將電腦中編輯好的的視頻數(shù)據(jù)回錄到數(shù)碼攝像機(jī)中。這種視頻格式的文件擴(kuò)展名也是AVI。電視臺(tái)采用錄像帶記錄模擬信號(hào),通過(guò)EDIUS由IEEE 1394端口采集卡從錄像帶中采集出來(lái)的視頻就是這種格式。
3)QuickTime File Format格式(后綴為.mov):美國(guó)Apple公司開(kāi)發(fā)的一種視頻格式,默認(rèn)的播放器是蘋果的QuickTime。具有較高的壓縮比率和較完美的視頻清晰度等特點(diǎn),并可以保存alpha通道。
4)MPEG格式(文件后綴可以是.mpg、.mpeg、.mpe、.dat、.vob、.asf、.3gp、.mp4等):它的英文全稱為Moving Picture Experts Group,即運(yùn)動(dòng)圖像專家組格式,該專家組建于1988年,專門負(fù)責(zé)為CD建立視頻和音頻標(biāo)準(zhǔn),而成員都是為視頻、音頻及系統(tǒng)領(lǐng)域的技術(shù)專家。MPEG文件格式是運(yùn)動(dòng)圖像壓縮算法的國(guó)際標(biāo)準(zhǔn)。MPEG格式目前有三個(gè)壓縮標(biāo)準(zhǔn),分別是MPEG-1、MPEG-2、和MPEG-4。MPEG-1、MPEG-2目前已經(jīng)使用較少,著重介紹MPEG-4,其制定于1998年,MPEG-4是為了播放流式媒體的高質(zhì)量視頻而專門設(shè)計(jì)的,以求使用最少的數(shù)據(jù)獲得最佳的圖像質(zhì)量。目前MPEG-4最有吸引力的地方在于它能夠保存接近于DVD畫質(zhì)的小體積視頻文件。
5)WMV格式(后綴為.wmv、.asf):它的英文全稱為Windows Media Video,也是微軟推出的一種采用獨(dú)立編碼方式并且可以直接在網(wǎng)上實(shí)時(shí)觀看視頻節(jié)目的文件壓縮格式。WMV格式的主要優(yōu)點(diǎn)包括:本地或網(wǎng)絡(luò)回放,豐富的流間關(guān)系以及擴(kuò)展性等。WMV格式需要在網(wǎng)站上播放,需要安裝Windows Media Player(簡(jiǎn)稱WMP),很不方便,現(xiàn)在已經(jīng)幾乎沒(méi)有網(wǎng)站采用了。
6)Real Video格式(后綴為.rm、.rmvb):Real Networks公司所制定的音頻視頻壓縮規(guī)范稱為Real Media。用戶可以使用RealPlayer根據(jù)不同的網(wǎng)絡(luò)傳輸速率制定出不同的壓縮比率,從而實(shí)現(xiàn)在低速率的網(wǎng)絡(luò)上進(jìn)行影像數(shù)據(jù)實(shí)時(shí)傳送和播放。RMVB格式:這是一種由RM視頻格式升級(jí)延伸出的新視頻格式,當(dāng)然性能上有很大的提升。RMVB視頻也是有著較明顯的優(yōu)勢(shì),一部大小為700 MB左右的DVD影片,如果將其轉(zhuǎn)錄成同樣品質(zhì)的RMVB格式,其個(gè)頭最多也就400 MB左右。大家可能注意到了,以前在網(wǎng)絡(luò)上下載電影和視頻的時(shí)候,經(jīng)常接觸到RMVB格式,但是隨著時(shí)代的發(fā)展這種格式被越來(lái)越多的更優(yōu)秀的格式替代,著名的人人影視字幕組在2013年已經(jīng)宣布不再壓制RMVB格式視頻。
7)Flash Video格式(后綴為.flv):由Adobe Flash延伸出來(lái)的的一種流行網(wǎng)絡(luò)視頻封裝格式。隨著視頻網(wǎng)站的豐富,這個(gè)格式已經(jīng)非常普及。
8)Matroska格式(后綴為.mkv):是一種新的多媒體封裝格式,這個(gè)封裝格式可把多種不同編碼的視頻及16條或以上不同格式的音頻和語(yǔ)言不同的字幕封裝到一個(gè)Matroska Media檔內(nèi)。它也是其中一種開(kāi)放源代碼的多媒體封裝格式。Matroska同時(shí)還可以提供非常好的交互功能,而且比MPEG的方便、強(qiáng)大。
9)MPEG2-TS格式(后綴為.ts)(Transport Stream「?jìng)鬏斄鳌?#xff1b;又稱MTS、TS)是一種傳輸和存儲(chǔ)包含音效、視頻與通信協(xié)議各種數(shù)據(jù)的標(biāo)準(zhǔn)格式,用于數(shù)字電視廣播系統(tǒng),如DVB、ATSC、IPTV等。MPEG2-TS定義于MPEG-2第一部分,系統(tǒng)(即原來(lái)之ISO/IEC標(biāo)準(zhǔn)13818-1或ITU-T Rec. H.222.0)。Media Player Classic、VLC多媒體播放器等軟件可以直接播放MPEG-TS文件。
目前,我們?cè)诹髅襟w傳輸,尤其是直播中主要采用的就是FLV和MPEG2-TS格式,分別用于RTMP/HTTP-FLV和HLS協(xié)議。
在下一篇連載中,我們將詳細(xì)介紹推流和傳輸,敬請(qǐng)期待!
總結(jié)
以上是生活随笔為你收集整理的视频直播技术详解(3)编码和封装的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 视频直播技术详解(1)采集
- 下一篇: 聊聊高并发系统之队列术