關(guān)于直播的技術(shù)文章不少,成體系的不多。我們將用七篇文章,更系統(tǒng)化地介紹當(dāng)下大熱的視頻直播各環(huán)節(jié)的關(guān)鍵技術(shù),幫助視頻直播創(chuàng)業(yè)者們更全面、深入地了解視頻直播技術(shù),更好地技術(shù)選型。
視頻編碼是視頻直播技術(shù)系列文章的第三篇,是本系列一個(gè)非常重要的部分,是移動(dòng)開發(fā)必修的基礎(chǔ)課程,本篇文章從理論到實(shí)踐一網(wǎng)打盡主流編碼器。
如果把整個(gè)流媒體比喻成一個(gè)物流系統(tǒng),那么編解碼就是其中配貨和裝貨的過程,這個(gè)過程非常重要,它的速度和壓縮比對物流系統(tǒng)的意義非常大,影響物流系統(tǒng)的整體速度和成本。同樣,對流媒體傳輸來說,編碼也非常重要,它的編碼性能、編碼速度和編碼壓縮比會直接影響整個(gè)流媒體傳輸?shù)挠脩趔w驗(yàn)和傳輸成本。
本系列文章大綱如下,想復(fù)習(xí)之前文章的直接點(diǎn)擊直達(dá)鏈接:
?。ㄒ唬┎杉?/p>
?。ǘ┨幚?/p>
(三)編碼和封裝
?。ㄋ模┩屏骱蛡鬏?/p>
(五)現(xiàn)代播放器原理
?。┭舆t優(yōu)化
?。ㄆ撸㏒DK 性能測試模型
視頻編碼的意義
原始視頻數(shù)據(jù)存儲空間大,一個(gè) 1080P 的 7 s 視頻需要 817 MB
原始視頻數(shù)據(jù)傳輸占用帶寬大,10 Mbps 的帶寬傳輸上述 7 s 視頻需要 11 分鐘
而經(jīng)過 H.264 編碼壓縮之后,視頻大小只有 708 k ,10 Mbps 的帶寬僅僅需要 500 ms ,可以滿足實(shí)時(shí)傳輸?shù)男枨螅詮囊曨l采集傳感器采集來的原始視頻勢必要經(jīng)過視頻編碼。
基本原理
那為什么巨大的原始視頻可以編碼成很小的視頻呢?這其中的技術(shù)是什么呢?
核心思想就是去除冗余信息:
空間冗余:圖像相鄰像素之間有較強(qiáng)的相關(guān)性
時(shí)間冗余:視頻序列的相鄰圖像之間內(nèi)容相似
編碼冗余:不同像素值出現(xiàn)的概率不同
視覺冗余:人的視覺系統(tǒng)對某些細(xì)節(jié)不敏感
知識冗余:規(guī)律性的結(jié)構(gòu)可由先驗(yàn)知識和背景知識得到
視頻本質(zhì)上講是一系列圖片連續(xù)快速的播放,最簡單的壓縮方式就是對每一幀圖片進(jìn)行壓縮,例如比較古老的 MJPEG 編碼就是這種編碼方式,這種編碼方式只有幀內(nèi)編碼,利用空間上的取樣預(yù)測來編碼。形象的比喻就是把每幀都作為一張圖片,采用 JPEG 的編碼格式對圖片進(jìn)行壓縮,這種編碼只考慮了一張圖片內(nèi)的冗余信息壓縮,如圖 1,綠色的部分就是當(dāng)前待編碼的區(qū)域,灰色就是尚未編碼的區(qū)域,綠色區(qū)域可以根據(jù)已經(jīng)編碼的部分進(jìn)行預(yù)測(綠色的左邊,下邊,左下等)。
圖1
但是幀和幀之間因?yàn)闀r(shí)間的相關(guān)性,后續(xù)開發(fā)出了一些比較高級的編碼器可以采用幀間編碼,簡單點(diǎn)說就是通過搜索算法選定了幀上的某些區(qū)域,然后通過計(jì)算當(dāng)前幀和前后參考幀的向量差進(jìn)行編碼的一種形式,通過下面兩個(gè)圖 2 連續(xù)幀我們可以看到,滑雪的同學(xué)是向前位移的,但實(shí)際上是雪景在向后位移,P 幀通過參考幀(I 或其他 P 幀)就可以進(jìn)行編碼了,編碼之后的大小非常小,壓縮比非常高。
圖 2
可能有同學(xué)對這兩張圖片怎么來的感興趣,這里用了 FFmpeg 的兩行命令來實(shí)現(xiàn),具體 FFmpeg 的更多內(nèi)容請看后續(xù)章節(jié):
第一行生成帶有移動(dòng)矢量的視頻
第二行把每一幀都輸出成圖片
ffmpeg -flags2 +export_mvs -i tutu.mp4 -vf codecview=mv=pf+bf+bb tutudebug2.mp4 ffmpeg -i tutudebug2.mp4 'tutunormal-%03d.bmp'
除了空間冗余和時(shí)間冗余的壓縮,主要還有編碼壓縮和視覺壓縮,下面是一個(gè)編碼器主要的流程圖:
圖 3
圖 4
圖 3、圖 4 兩個(gè)流程,圖 3 是幀內(nèi)編碼,圖 4 是幀間編碼,從圖上看到的主要區(qū)別就是第一步不相同,其實(shí)這兩個(gè)流程也是結(jié)合在一起的,我們通常說的 I 幀和 P 幀就是分別采用了幀內(nèi)編碼和幀間編碼。
編碼器的選擇
前面梳理了一下編碼器的原理和基本流程,編碼器經(jīng)歷了數(shù)十年的發(fā)展,已經(jīng)從開始的只支持幀內(nèi)編碼演進(jìn)到現(xiàn)如今的 H.265 和 VP9 為代表的新一代編碼器,就目前一些常見的編碼器進(jìn)行分析,帶大家探索一下編碼器的世界。
1) H.264簡介
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ù)雜度使得無法實(shí)現(xiàn)或?qū)崿F(xiàn)成本過高。另一目的是提供足夠的靈活性以在各種應(yīng)用、網(wǎng)絡(luò)及系統(tǒng)中使用,包括高、低帶寬,高、低視頻分辨率,廣播,DVD 存儲,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)用。這些專利許可的主要來源是一家稱為 MPEG-LA LLC 的私有組織,該組織和 MPEG 標(biāo)準(zhǔn)化組織沒有任何關(guān)系,但是該組織也管理著 MPEG-2 第一部分系統(tǒng)、第二部分視頻、MPEG-4 第二部分視頻和其它一些技術(shù)的專利許可。
其他的專利許可則需要向另一家稱為 VIA Licensing 的私有組織申請,這家公司另外也管理偏向音頻壓縮的標(biāo)準(zhǔn)如 MPEG-2 AAC 及 MPEG-4 Audio 的專利許可。
H.264 的開源實(shí)現(xiàn)
openh264
x264
openh264是思科實(shí)現(xiàn)的開源 H.264 編碼,雖然 H.264 需要交納不菲的專利費(fèi)用,但是專利費(fèi)有一個(gè)年度上限,思科把 OpenH264 實(shí)現(xiàn)的年度專利費(fèi)交滿后,OpenH264 事實(shí)上就可以免費(fèi)自由的使用了。
x264x264是一個(gè)采用GPL授權(quán)的視頻編碼自由軟件。x264 的主要功能在于進(jìn)行 H.264/MPEG-4 AVC 的視頻編碼,而不是作為解碼器(decoder)之用。
除去費(fèi)用問題比較來看:
openh264 CPU 的占用相對 x264低很多
openh264 只支持 baseline profile,x264 支持更多 profile
2) HEVC/H.265簡介
高效率視頻編碼(High Efficiency Video Coding,簡稱HEVC)是一種視頻壓縮標(biāo)準(zhǔn),被視為是 ITU-T H.264/MPEG-4 AVC 標(biāo)準(zhǔn)的繼任者。2004 年開始由 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 開始制定。第一版的 HEVC/H.265 視頻壓縮標(biāo)準(zhǔn)在 2013 年 4 月 13 日被接受為國際電信聯(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 的開源實(shí)現(xiàn)
libde265
x265
libde265HEVC 由 struktur 公司以開源許可證 GNU LesserGeneral Public License (LGPL) 提供,觀眾可以較慢的網(wǎng)速下欣賞到最高品質(zhì)的影像。跟以前基于H.264標(biāo)準(zhǔn)的解碼器相比,libde265 HEVC 解碼器可以將您的全高清內(nèi)容帶給多達(dá)兩倍的受眾,或者,減少 50% 流媒體播放所需要的帶寬。高清或者 4K/8K 超高清流媒體播放,低延遲/低帶寬視頻會議,以及完整的移動(dòng)設(shè)備覆蓋。具有「擁塞感知」視頻編碼的穩(wěn)定性,十分適合應(yīng)用在 3/4G 和 LTE 網(wǎng)絡(luò)。
專利許可
HEVC Advance 要求所有包括蘋果、YouTube、Netflix、Facebook、亞馬遜等使用 H.265 技術(shù)的內(nèi)容制造商上繳內(nèi)容收入的 0.5%作為技術(shù)使用費(fèi),而整個(gè)流媒體市場每年達(dá)到約 1000 億美元的規(guī)模,且不斷增長中,征收 0.5%絕對是一筆龐大的費(fèi)用。而且他們還沒有放過設(shè)備制造商,其中電視廠商需要支付每臺 1.5 美元、移動(dòng)設(shè)備廠商每臺 0.8 美元的專利費(fèi)。他們甚至沒有放過藍(lán)光設(shè)備播放器、游戲機(jī)、錄像機(jī)這樣的廠商,這些廠商必須支付每臺 1.1 美元的費(fèi)用。最無法令人接受的是,HEVC Advance 的專利使用權(quán)追溯到了廠商的「」”,意思是之前已經(jīng)發(fā)售的產(chǎn)品依然要追繳費(fèi)用。
x265是由 MulticoreWare 開發(fā),并開源。采用 GPL 協(xié)議,但是資助這個(gè)項(xiàng)目的幾個(gè)公司組成了聯(lián)盟可以在非 GPL 協(xié)議下使用這個(gè)軟件。
3) VP8簡介
VP8 是一個(gè)開放的視頻壓縮格式,最早由 On2 Technologies 開發(fā),隨后由 Google 發(fā)布。同時(shí) Google 也發(fā)布了 VP8 編碼的實(shí)做庫:libvpx,以 BSD 授權(quán)條款的方式發(fā)行,隨后也附加了專利使用權(quán)。而在經(jīng)過一些爭論之后,最終 VP8 的授權(quán)確認(rèn)為一個(gè)開放源代碼授權(quán)。
目前支持 VP8 的網(wǎng)頁瀏覽器有 Opera、Firefox 和 Chrome。
專利許可
2013 年三月,Google 與 MPEG LA 及 11 個(gè)專利持有者達(dá)成協(xié)議,讓Google 獲取 VP8 以及其之前的 VPx 等編碼所可能侵犯的專利授權(quán),同時(shí) Google 也可以無償再次授權(quán)相關(guān)專利給 VP8 的用戶,此協(xié)議同時(shí)適用于下一代 VPx 編碼。至此 MPEG LA 放棄成立 VP8 專利集中授權(quán)聯(lián)盟,VP8 的用戶將可確定無償使用此編碼而無須擔(dān)心可能的專利侵權(quán)授權(quán)金的問題。
VP8 的開源實(shí)現(xiàn)
libvpx
libvpx是 VP8 的唯一開源實(shí)現(xiàn),由 On2 Technologies 開發(fā),Google 收購后將其開放源碼,License 非常寬松可以自由使用。
4) VP9簡介
VP9 的開發(fā)從 2011 年第三季開始,目標(biāo)是在同畫質(zhì)下,比 VP8 編碼減少 50%的文件大小,另一個(gè)目標(biāo)則是要在編碼效率上超越 HEVC 編碼。
2012 年 12 月 13 日,Chromium 瀏覽器加入了 VP9 編碼的支持。Chrome 瀏覽器則是在 2013 年 2 月 21 日開始支持 VP9 編碼的視頻播放。
Google 宣布會在 2013 年 6 月 17 日完成 VP9 編碼的制定工作,屆時(shí)Chrome 瀏覽器將會把 VP9 編碼默認(rèn)引導(dǎo)。2014 年 3 月 18 日,Mozilla 在 Firefox 瀏覽器中加入了 VP9 的支持。
2015 年 4 月 3 日,谷歌發(fā)布了 libvpx1.4.0 增加了對 10 位和 12 位的比特深度支持、4:2:2 和 4:4:4 色度抽樣,并 VP9 多核心編/解碼。
專利許可
VP9 是一個(gè)開放格式、無權(quán)利金的視頻編碼格式。
VP9 的開源實(shí)現(xiàn)
libvpx
libvpx是 VP9 的唯一開源實(shí)現(xiàn),由 Google 開發(fā)維護(hù),里面有部分代碼是 VP8 和 VP9 公用的,其余分別是 VP8 和 VP9 的編解碼實(shí)現(xiàn)。
VP9 和 H.264 和 HEVC 比較
CodecHEVCx264vp9HEVC-42.2%32.6%x26475.8%18.5%vp948.3%-14.6%CodecHEVC vs. VP9(in %)VP9 vs. x264 (in %)Total Average61239399
引用 Comparative Assessment of H.265/MPEG-HEVC, VP9, and
H.264/MPEG-AVC Encoders for Low-Delay Video Applications 這篇比較新的論文對,低延遲視頻進(jìn)行編碼的測試結(jié)果。
HEVC 和 H.264 在不同分辨率下的比較
跟 H.264/MPEG-4 相比,HEVC 的平均比特率減低值為:
分辨率480P720P1080P4K UHDHEVC52%56%62%64%
可見碼率下降了 60% 以上。
HEVC (H.265) 對 VP9 和 H.264 在碼率節(jié)省上有較大的優(yōu)勢,在相同 PSNR 下分別節(jié)省了 48.3% 和 75.8%。
H.264 在編碼時(shí)間上有巨大優(yōu)勢,對比 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)目中音頻和視頻的解碼器庫,以及 libavformat ——一個(gè)音頻與視頻格式轉(zhuǎn)換庫。
FFmpeg 這個(gè)單詞中的 FF 指的是 Fast Forward。有些新手寫信給 FFmpeg 的項(xiàng)目負(fù)責(zé)人,詢問 FF 是不是代表 Fast Free 或者 Fast Fourier 等意思,F(xiàn)Fmpeg 的項(xiàng)目負(fù)責(zé)人回信說:「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的開發(fā)者同時(shí)也是 MPlayer 項(xiàng)目的成員,F(xiàn)Fmpeg 在 MPlayer 項(xiàng)目中是被設(shè)計(jì)為服務(wù)器版本進(jìn)行開發(fā)。
FFmpeg 下載地址是 : FFmpeg Download
可以瀏覽器輸入下載,目前支持 Linux ,Mac OS,Windows 三個(gè)主流的平臺,也可以自己編譯到 Android 或者 iOS 平臺。
如果是 Mac OS ,可以通過 brew 安裝 brew install ffmpeg --with-libvpx --with-libvorbis --with-ffplay
我們可以用 FFmpeg 來做哪些有用有好玩的事情呢?通過一系列小實(shí)驗(yàn)來帶大家領(lǐng)略 FFmpeg 的神奇和強(qiáng)大。
FFmpeg 錄屏
通過一個(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è)備的列表和編號,我本地有兩塊顯示器,所以 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 或者 h264 做編碼器
ffmpeg -r 30 -f avfoundation -i 1 -vcodec vp8 -quality realtime screen2.webm # -quality realtime 用來優(yōu)化編碼器,如果不加在我的 Air 上幀率只能達(dá)到 2
or
ffmpeg -r 30 -f avfoundation -i 1 -vcodec h264 screen.mp4
然后用 ffplay 播放就可以了
ffplay screen.mp4
or
ffplay screen2.webpFFmpeg 視頻轉(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 開始轉(zhuǎn)碼,-t 指轉(zhuǎn)換 10s 的視頻 -sFFmpeg 錄制屏幕并直播
可以繼續(xù)擴(kuò)展例子1,直播當(dāng)前屏幕的內(nèi)容,向大家介紹一下怎么通過幾行命令搭建一個(gè)測試用的直播服務(wù):
Step 1:首先安裝 docker:
訪問 Docker Download,按操作系統(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-rtmp
Step 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/test
Step 5:用 ffplay 播放
ffplay rtmp://127.0.0.1/live/test
總結(jié)一下,F(xiàn)Fmpeg 是個(gè)優(yōu)秀的工具,可以通過它完成很多日常的工作和實(shí)驗(yàn),但是距離提供真正可用的流媒體服務(wù)、直播服務(wù)還有非常多的工作要做,這方面可以參考七牛云發(fā)布的 七牛直播云服務(wù)。
封裝
介紹完了視頻編碼后,再來介紹一些封裝。沿用前面的比喻,封裝可以理解為采用哪種貨車去運(yùn)輸,也就是媒體的容器。
所謂容器,就是把編碼器生成的多媒體內(nèi)容(視頻,音頻,字幕,章節(jié)信息等)混合封裝在一起的標(biāo)準(zhǔn)。容器使得不同多媒體內(nèi)容同步播放變得很簡單,而容器的另一個(gè)作用就是為多媒體內(nèi)容提供索引,也就是說如果沒有容器存在的話一部影片你只能從一開始看到最后,不能拖動(dòng)進(jìn)度條(當(dāng)然這種情況下有的播放器會話比較長的時(shí)間臨時(shí)創(chuàng)建索引),而且如果你不自己去手動(dòng)另外載入音頻就沒有聲音,下面介紹幾種常見的封裝格式和優(yōu)缺點(diǎn):
AVI 格式(后綴為 .AVI): 它的英文全稱為 Audio Video Interleaved ,即音頻視頻交錯(cuò)格式。它于 1992 年被 Microsoft 公司推出。
這種視頻格式的優(yōu)點(diǎn)是圖像質(zhì)量好。由于無損AVI可以保存 alpha 通道,經(jīng)常被我們使用。缺點(diǎn)太多,體積過于龐大,而且更加糟糕的是壓縮標(biāo)準(zhǔn)不統(tǒng)一,最普遍的現(xiàn)象就是高版本 Windows 媒體播放器播放不了采用早期編碼編輯的AVI格式視頻,而低版本 Windows 媒體播放器又播放不了采用最新編碼編輯的AVI格式視頻,所以我們在進(jìn)行一些AVI格式的視頻播放時(shí)常會出現(xiàn)由于視頻編碼問題而造成的視頻不能播放或即使能夠播放,但存在不能調(diào)節(jié)播放進(jìn)度和播放時(shí)只有聲音沒有圖像等一些莫名其妙的問題。
DV-AVI 格式(后綴為 .AVI): DV的英文全稱是 Digital Video Format ,是由索尼、松下、JVC 等多家廠商聯(lián)合提出的一種家用數(shù)字視頻格式。
數(shù)字?jǐn)z像機(jī)就是使用這種格式記錄視頻數(shù)據(jù)的。它可以通過電腦的 IEEE 1394 端口傳輸視頻數(shù)據(jù)到電腦,也可以將電腦中編輯好的的視頻數(shù)據(jù)回錄到數(shù)碼攝像機(jī)中。這種視頻格式的文件擴(kuò)展名也是 avi。電視臺采用錄像帶記錄模擬信號,通過 EDIUS 由IEEE 1394端口采集卡從錄像帶中采集出來的視頻就是這種格式。
QuickTime File Format 格式(后綴為 .MOV): 美國Apple公司開發(fā)的一種視頻格式,默認(rèn)的播放器是蘋果的QuickTime。
具有較高的壓縮比率和較完美的視頻清晰度等特點(diǎn),并可以保存alpha通道。
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)圖像壓縮算法的國際標(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ì)的小體積視頻文件。
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( 簡稱 WMP ),很不方便,現(xiàn)在已經(jīng)幾乎沒有網(wǎng)站采用了。
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視頻格式升級延伸出的新視頻格式,當(dāng)然性能上有很大的提升。RMVB 視頻也是有著較明顯的優(yōu)勢,一部大小為700MB左右的 DVD 影片,如果將其轉(zhuǎn)錄成同樣品質(zhì)的 RMVB 格式,其個(gè)頭最多也就 400MB 左右。大家可能注意到了,以前在網(wǎng)絡(luò)上下載電影和視頻的時(shí)候,經(jīng)常接觸到 RMVB 格式,但是隨著時(shí)代的發(fā)展這種格式被越來越多的更優(yōu)秀的格式替代,著名的人人影視字幕組在2013年已經(jīng)宣布不再壓制 RMVB 格式視頻。
Flash Video 格式(后綴為 .FLV):由 Adobe Flash 延伸出來的的一種流行網(wǎng)絡(luò)視頻封裝格式。隨著視頻網(wǎng)站的豐富,這個(gè)格式已經(jīng)非常普及。
Matroska 格式(后綴為 .MKV):是一種新的多媒體封裝格式,這個(gè)封裝格式可把多種不同編碼的視頻及16條或以上不同格式的音頻和語言不同的字幕封裝到一個(gè) Matroska Media 檔內(nèi)。它也是其中一種開放源代碼的多媒體封裝格式。Matroska 同時(shí)還可以提供非常好的交互功能,而且比 MPEG 的方便、強(qiáng)大。
MPEG2-TS 格式 (后綴為 .ts)(Transport Stream“傳輸流”;又稱MTS、TS)是一種傳輸和存儲包含音效、視頻與通信協(xié)議各種數(shù)據(jù)的標(biāo)準(zhǔn)格式,用于數(shù)字電視廣播系統(tǒng),如DVB、ATSC、IPTV等等。
MPEG2-TS 定義于 MPEG-2 第一部分,系統(tǒng)(即原來之ISO/IEC標(biāo)準(zhǔn)13818-1或ITU-T Rec. H.222.0)。
Media Player Classic、VLC 多媒體播放器等軟件可以直接播放MPEG-TS文件。
目前,我們在流媒體傳輸,尤其是直播中主要采用的就是 FLV 和 MPEG2-TS 格式,分別用于 RTMP/HTTP-FLV 和 HLS 協(xié)議。
下一期我們將系統(tǒng)講解視頻直播的推流和傳輸,敬請期待~
轉(zhuǎn)載請注明來自夕逆IT,本文標(biāo)題:《全套開源直播系統(tǒng)源碼直播程序源碼全新直播APP定制開發(fā)視頻》

還沒有評論,來說兩句吧...