視頻基礎(chǔ)一

視頻容器

視頻容器(又稱視頻文件格式)就是用來裝載多媒體數(shù)據(jù)流(包含:視頻流、音頻流和字幕流)的文件格式健霹,一般包含:文件頭部分(說明多媒體數(shù)據(jù)符合的編碼格式及規(guī)范信息)、索引部分哮笆、媒體數(shù)據(jù)部分菇曲。

常見的視頻容器有:

FLV

flash video 流媒體文件格式,是隨著Flash MX的推出發(fā)展而來的網(wǎng)絡(luò)視頻封裝格式码党。具有如下特點:

文件體積小德崭,清晰的FLV視頻1分鐘在1MB左右,是普通文件體積的1/3

再加上CPU占有率低

提供數(shù)字版本保護(hù)功能

解決了視頻文件導(dǎo)入Flash后揖盘,導(dǎo)出的SWF文件體積龐大問題

FLV的文件構(gòu)成


flv_struct.png

Tag Header由11字節(jié)組成:

1:Tag的類型:音頻(0x08)眉厨,視頻(0x09),Script Data(0x12)

2-4:表示一個無符號24位整型數(shù)值兽狭,表示當(dāng)前Tag Data的大泻豆伞鹿蜀;

5-7:無符號24位整型數(shù)值,當(dāng)前Tag的開始時間戳(單位為ms)

8:為時間戳的擴(kuò)展字節(jié)服球,當(dāng)前24位不夠用時茴恰,該字節(jié)作為最高位,將時間戳擴(kuò)展為32位無符號整數(shù)

9-11:表示Stream ID斩熊,總是0

音頻Tag Data:第一個字節(jié)是音頻流信息往枣,接著是音頻流數(shù)據(jù),其中第一個字節(jié)中信息有:

4位 表音頻編碼格式

2位 表示采樣率

1位 采樣的長度(0: 8bit/1: 16bit),壓縮過的都1

1位 音頻類型(0: Mono/1: Stereo)

視頻Tag Data:第一個字節(jié)也是視頻流信息(4bit表示幀類型粉渠、4bit表示編碼類型)分冈,接著是視頻流數(shù)據(jù)。

Script Data:是flv的第一個Tag,僅有一個霸株,用于存放flv中存放媒體流的總體信息雕沉,包括時長、創(chuàng)建時間等去件,數(shù)據(jù)都是以:數(shù)據(jù)類型 [數(shù)據(jù)長度] 數(shù)據(jù) 格式出現(xiàn)

FLV在H.264的視頻規(guī)格或是AAC的音源規(guī)格都達(dá)到功能極限坡椒,為了克服這個格式上的限制,F4V于是誕生箫攀。F4V是基于ISO base media file format(MPEG-4 Part 12)定制的肠牲,支持視頻類型為H.264,圖片類型為GIF靴跛、PNG缀雳、JPEG,音頻類型為AAC梢睛、MP3肥印。由于MPEG-4 Part 14 (即MP4規(guī)范)也是對MPEG-4 Part 12的擴(kuò)展,直接分析MP4的文件結(jié)構(gòu)绝葡。

參考

FLV文件格式解析

FLV and F4V File Format Specification

mp4

mp4是一種符合MPEG-4 part 14規(guī)范的文件格式深碱,文件擴(kuò)展名為.mp4,以存儲數(shù)字音頻及數(shù)字視頻為主藏畅。該標(biāo)準(zhǔn)是對MPEG-4 part 12的擴(kuò)展敷硅。 1998年2月11日,國際標(biāo)準(zhǔn)組織(IS0)認(rèn)可QuickTime(蘋果支持的視頻文件格式MOV)檔案格式作為MPEG-4標(biāo)準(zhǔn)的基礎(chǔ)。所以兩種文件格式大致相同愉阎。

MP4的文件結(jié)構(gòu):

MP4文件中的所有數(shù)據(jù)都裝在box(QuickTime中為atom)中绞蹦,由若干個box組成。每個box有類型和長度榜旦,可以將理解為一個數(shù)據(jù)對象塊幽七。box中可以包含另外一個box,這種box稱為container box溅呢。

一個MP4文件首先會有且只有一個“ftyp”類型的box澡屡,作為MP4格式的標(biāo)志并包含關(guān)于文件的一些信息猿挚;
有且只有一個“moov”類型的box(Movie Box),包含了媒體的metadata信息驶鹉;
MP4文件的媒體數(shù)據(jù)包含在多個“mdat”類型的box中绩蜻。

image

在流媒體應(yīng)用場景,不能預(yù)先保存關(guān)于整個流數(shù)據(jù)的metadata信息室埋,且預(yù)先保存的metadata越少獲取到數(shù)據(jù)越快辜羊。所以上面的文件組合方式就不太適用于流媒體。然而MPEG-4 標(biāo)準(zhǔn)允許以fragmented方式組合mdat box 以及其metadata (moof box)词顾,結(jié)構(gòu)如下圖所示:

image

參考

mp4文件格式解析

MPEG HomePage

QuickTime File Format Specification

MPEG-4 part 12

MPEG-4 part 14

TS

MPEG2-TS(Transport Stream“傳輸流”;又稱MTS碱妆、TS)是一種傳輸和存儲包含音效肉盹、視頻與通信協(xié)議各種數(shù)據(jù)的標(biāo)準(zhǔn)格式,多用于數(shù)字電視廣播系統(tǒng)疹尾。在傳輸中Packet是最基本單位上忍,由 Header 和 Payload 組成,固定長度為188個字節(jié)纳本,但是后面有可能會追加一些驗證字節(jié)窍蓝,所以packets的長度有可能變?yōu)?92、204或者208Byte的長度繁成。Packet結(jié)構(gòu)如圖所示


image

終端接收到的視頻數(shù)據(jù)其實是一段段的碼流吓笙,根據(jù)處理階段可以分成以下幾個類型:

TS流(Transport stream):傳輸流,將具有共同時間基準(zhǔn)或獨立時間基準(zhǔn)的一個或多個PES組合而成的單一數(shù)據(jù)流巾腕,用于數(shù)據(jù)傳輸面睛。

PES流(Packetized elementary stream):把基本碼流ES分割成段,并加上相應(yīng)頭打包成形的打包基本碼流尊搬。

ES流(Elementary stream):基本碼流叁鉴,不分段的音頻、視頻或其他信息的連續(xù)碼流佛寿。

參考

解析TS格式

MPEG-2 Data Structures

其它視頻容器格式還有:mkv幌墓、vob、 avi冀泻、asf常侣、3gp、mov腔长、rm袭祟、rvm、rmvb捞附、vob 等

ps:目前我們項目中使用的ExoPlayer巾乳,支持的視頻容器有

extrators.png

ps支持文件格式并不代表能播放視頻您没。
因為Exoplayer采用的是硬解碼方式,視頻能否播放取決于當(dāng)前系統(tǒng)是否支持該視頻編碼方式胆绊。

視頻編碼格式

通俗的講就是音視頻數(shù)據(jù)的壓縮標(biāo)準(zhǔn)氨鹏,主要作用于將視頻像素數(shù)據(jù)(RGB,YUV等)、音頻PCM數(shù)據(jù)壓縮成視頻碼流压状、音頻碼流等仆抵。每種視頻容器對兼容的編碼格式有所限制,基于Matroska(開源的多媒體封裝規(guī)范)實現(xiàn)的mkv容器种冬,可以把多種不同編碼的音視頻封裝到一個容器里镣丑。

MPEG系列

(由ISO[國際標(biāo)準(zhǔn)組織機(jī)構(gòu)]下屬的MPEG[運動圖象專家組]開發(fā) )視頻編碼方面主要是Mpeg1(vcd用的就是它)、Mpeg2(DVD使用)娱两、Mpeg4(的DVDRIP使用的都是它的變種莺匠,如:divx,xvid等)十兢、Mpeg4 AVC(正熱門)趣竣;

音頻編碼方面主要是MPEG Audio Layer 1/2、MPEG Audio Layer 3(大名鼎鼎的mp3)旱物、MPEG-2 AAC 遥缕、MPEG-4 AAC等等。注意:DVD音頻沒有采用Mpeg的宵呛。

H.26X系列

(由ITU[國際電傳視訊聯(lián)盟]主導(dǎo)单匣,側(cè)重網(wǎng)絡(luò)傳輸,注意:只是視頻編碼)
包括H.261宝穗、H.262封孙、H.263、H.263+讽营、H.263++虎忌、H.264、H.265

其它

RealNetworks公司的:RealVideo (rm橱鹏、rvm膜蠢、rmvb 容器支持的編碼方式)

SMPTE 系統(tǒng)列:VC-1(基于Windows Media Video 9壓縮技術(shù)的視頻壓縮標(biāo)準(zhǔn)、 VC-2 VC-3莉兰、 VC-5

開放媒體聯(lián)盟:AV1(AOMedia Video 1挑围,是一個開放,免專利的視頻編碼格式,由google 推出的 VP9延展糖荒、WebM視頻容器支持的編碼)

AVS(Audio Video coding Standard)杉辙,即數(shù)字音視頻編解碼技術(shù)標(biāo)準(zhǔn),為中國第二代信源編碼標(biāo)準(zhǔn)捶朵。

目前最新視頻編碼:AV1 \ H265\ AVS的對比:

AV1 :延展VP9(目前好像還是VP9使用的比較多),開放蜘矢、免專利狂男,但是硬件支持有限,需要純軟件實現(xiàn)編解碼品腹,現(xiàn)有技術(shù)有定的瓶頸岖食。

H265: 旨在有限帶寬下傳輸更高質(zhì)量的網(wǎng)絡(luò)視頻,使在線播放1080p的全高清視頻舞吭、4K和8K超高清視頻成為可能泡垃;且硬件支持比較廣泛。(缺點收費)

AVS 國產(chǎn)

更多詳情信息參考:
視頻編碼

視頻傳輸

首先得了解幾個概念:
視頻流:服務(wù)器在向用戶傳輸視頻文件時羡鸥,不是一次將文件整體發(fā)送出去蔑穴,將一連串的媒體數(shù)據(jù)壓縮后,經(jīng)過網(wǎng)絡(luò)分段發(fā)送數(shù)據(jù)惧浴,使得數(shù)據(jù)包得以像流水一樣發(fā)送澎剥,每一段都是獨立可播的小片斷。

下面將介紹視頻傳輸相關(guān)的幾個常用協(xié)議:

RTP/RTCP/RTSP

RTSP:實時流協(xié)議(Real Time Streaming Protocol)

應(yīng)用層協(xié)議赶舆,RTSP提供了一個可供擴(kuò)展的框架,它的意義在于使得實時流媒體數(shù)據(jù)的受控和點播變得可能祭饭,提供DESCRIBE,SETUP,PLAY,PAUSE,TEARDOWN,OPTIONS等方法芜茵,本身并不傳輸數(shù)據(jù),基于面向無連接的傳輸協(xié)議UDP倡蝙。

RTP:實時傳輸協(xié)議(Real-time Transport Protocol)

應(yīng)用層網(wǎng)絡(luò)傳輸協(xié)議九串,對流媒體數(shù)據(jù)進(jìn)行封包并實現(xiàn)媒體流的實時傳輸,每一個RTP數(shù)據(jù)報都由頭部(Header)和負(fù)載(Payload)兩個部分組成寺鸥,其中頭部前12個字節(jié)的含義是固定的猪钮,而負(fù)載則可以是音頻或者視頻數(shù)據(jù)。與控制協(xié)議RTCP一起使用胆建,而且它是創(chuàng)建在UDP協(xié)議上的烤低。該協(xié)議直接傳輸視頻流不再需要容器進(jìn)行封裝。

RTCP :實時傳輸控制協(xié)議(Real-time Transport Control Protocol)

和RTP一起協(xié)作將多媒體數(shù)據(jù)打包和發(fā)送笆载。RTCP定期在流多媒體會話參加者之間傳輸控制數(shù)據(jù)扑馁。RTCP的主要功能是為RTP所提供的服務(wù)質(zhì)量 提供反饋。

RTSP發(fā)起/終結(jié)流媒體凉驻、RTP傳輸流媒體數(shù)據(jù) 腻要、RTCP對RTP進(jìn)行控制、同步

其它的實時流傳輸協(xié)議還有:RTMP(Adobe公司提出基于TCP實時消息傳輸應(yīng)用層協(xié)議)涝登、MMS(微軟提出的一種串流媒體傳送協(xié)議雄家,傳遞和接收Windows Media服務(wù)器中.asf文件)

HLS - HTTP live streaming

蘋果公司實現(xiàn)的基于HTTP的流媒體傳輸協(xié)議,可實現(xiàn)直播和點播胀滚,相對于RTMP其它有較高的延遲趟济。當(dāng)媒體流正在播放時乱投,客戶端可以選擇從許多不同的備用源中以不同的速率下載同樣的資源,允許流媒體會話適應(yīng)不同的數(shù)據(jù)速率咙好。HTML5可以直接打開播放篡腌。

獲取視頻流程是如下圖所示:


其中index文件是包含元數(shù)據(jù)的extended M3U (m3u8) 文件。如果視頻具備有不同帶寬切換則會有二級:主index文件中包含子index文件的下載地址勾效,子index文件包含視頻流 MPEG-TS 文件的下載地址嘹悼。m3u8是個文本文件,其中標(biāo)簽定義可參考HTTP Live Streaming

點播VOD實現(xiàn):首先下載index文件层宫,再根據(jù)不同帶寬獲取子index文件地址杨伙,下載子index文件,再根據(jù)其中記錄的視頻流地址下載視頻文件萌腿,進(jìn)行解碼播放限匣。如果不切換碼率,m3u8 文件只需要下載一次毁菱,且二級index中包含所有的ts文件下載地址米死。

Live 實現(xiàn):實時生成 m3u8 和 ts 文件, 在點播放的基礎(chǔ)上更新二級index文件贮庞。

其它基于HTTP實現(xiàn)的自適應(yīng)串流技術(shù)有:

MPEG-DASH 是基于HTTP的自適應(yīng)串流方案中的唯一國際標(biāo)準(zhǔn)峦筒,與具體編碼無關(guān),僅是作為一個標(biāo)準(zhǔn)

HDS(Adobe HTTP Dynamic Streaming窗慎,切片文件格式為 FLV/F4V/MP4物喷,索引文件為f4m,同時支持直播和時移)

MSS(Microsoft Smooth Streaming遮斥,切片格式為 mp4峦失,索引文件為ism/ismc)

目前我們項目中使用的ExoPlayer 提供了DASH(DashMediaSource)
SmoothStreaming (SsMediaSource), HLS(HlsMediaSource)` and regular media files (ExtractorMediaSource)

實時傳輸協(xié)議 vs HTTP 自適應(yīng)流

有些實時傳輸協(xié)議被許多公司防火墻拒絕,而HTTP可以作為一個普通的文件通過术吗;流傳輸協(xié)議適合于大數(shù)據(jù)量尉辑、高可用性的流,如直播事件较屿、長事件或大型文材蹬,可實時對流進(jìn)行一些操作,如暫停吝镣、快進(jìn)等

HTTP 自適應(yīng)流 適合于較小的數(shù)據(jù)傳輸和交互,只能在分片文件流下載完成后堤器,本地模擬暫停、快進(jìn)操作末贾,并非真正的實時流闸溃。

ps:我們現(xiàn)在播放預(yù)告片就是使用HTTP漸進(jìn)式下載,依賴是HTTP漸進(jìn)式下載技術(shù)。以MP4文件舉例辉川,只有在下載到媒體的元信息(Moov box)才能開始播放表蝙,Moov box中有媒體數(shù)據(jù)的索引表及開始位置,通過HTTP的range 字段獲取我需要的媒體數(shù)據(jù)乓旗。如果Moov atom 放在最后府蛇,則需要下載全部文件內(nèi)容才能開始播放。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末屿愚,一起剝皮案震驚了整個濱河市汇跨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌妆距,老刑警劉巖穷遂,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異娱据,居然都是意外死亡蚪黑,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門中剩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來忌穿,“玉大人,你說我怎么就攤上這事结啼÷咏#” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵妆棒,是天一觀的道長。 經(jīng)常有香客問我沸伏,道長糕珊,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任毅糟,我火速辦了婚禮红选,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘姆另。我一直安慰自己喇肋,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布迹辐。 她就那樣靜靜地躺著蝶防,像睡著了一般。 火紅的嫁衣襯著肌膚如雪明吩。 梳的紋絲不亂的頭發(fā)上间学,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼低葫。 笑死详羡,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的嘿悬。 我是一名探鬼主播实柠,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼善涨!你這毒婦竟也來了窒盐?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤躯概,失蹤者是張志新(化名)和其女友劉穎登钥,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體娶靡,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡牧牢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了姿锭。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片塔鳍。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖呻此,靈堂內(nèi)的尸體忽然破棺而出轮纫,到底是詐尸還是另有隱情,我是刑警寧澤焚鲜,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布掌唾,位于F島的核電站,受9級特大地震影響忿磅,放射性物質(zhì)發(fā)生泄漏糯彬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一葱她、第九天 我趴在偏房一處隱蔽的房頂上張望撩扒。 院中可真熱鬧,春花似錦吨些、人聲如沸搓谆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽泉手。三九已至,卻和暖如春偶器,著一層夾襖步出監(jiān)牢的瞬間螃诅,已是汗流浹背啡氢。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留术裸,地道東北人倘是。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像袭艺,于是被迫代替她去往敵國和親搀崭。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 視頻編碼與封裝方式詳解 1.編碼方式和封裝格式 2.視頻編碼標(biāo)準(zhǔn)兩大系統(tǒng) MPEG-1 MPEG-2 MPEG-3...
    latthias閱讀 6,366評論 0 22
  • 前言 說到視頻,大家自己腦子里基本都會想起電影答倡、電視劇轰传、在線視頻等等,也會想起一些視頻格式 AVI瘪撇、MP4获茬、RMV...
    ForestSen閱讀 22,927評論 10 202
  • 視頻編碼格式全面解析 我們在詳解各種主流的視頻格式之前,先拋開各種視頻格式的定義倔既,來討論這樣一件事情:你覺得目前的...
    latthias閱讀 21,139評論 2 30
  • 無論什么雄心壯志慢慢的都會被生活所磨滅恕曲,是我太軟弱,不夠堅強(qiáng)渤涌,還是我其實并不知道自己想要的是什么佩谣。工作幾年下來,疲...
    言其采薇閱讀 200評論 0 0
  • 我不希望你知道我喜歡你实蓬,但是我真的希望你能讓我在一邊默默地看著你茸俭,你做的所有事情我都會支持你的,希望我們能做永...
    不忘初心的陀螺閱讀 158評論 0 2