流媒體知識點概述

流媒體

流媒體,又叫流式媒體,是邊傳邊播的媒體,是多媒體的一種。邊傳邊播是指媒體提供商在網絡上傳輸媒體的同時,用戶一邊不斷地接收並觀看或收聽被傳輸的媒體。「流」媒體的「流」指的是這種媒體的傳輸方式(流的方式),而並非指媒體自己。流媒體分爲直播和點播,被普遍運用於在線直播、視頻點播、遠程教育、實時視頻會議等領域。瀏覽器

流媒體協議

流媒體協議包括RTP,RTCP,RTMP,MMS,HLS,HTTP-FLV等。一般來講點播使用的都是HTTP協議,直播主要用的是RTMP,HLS,HTTP-FLV等。緩存

  • RTMP:是Adobe公司爲Flash/AIR平臺和服務器之間音、視頻及數據傳輸開發的實時消息傳送協議,協議創建在TCP協議之上。RTMP協議中,視頻必須是H264編碼,音頻必須是AAC或MP3編碼,且多以flv格式封包。RTMP是目前最主流的流媒體傳輸協議,對CDN支持良好,實現難度較低,是大多數的直播平臺的選擇。RTMP基於flash沒法在iOS的瀏覽器裏播放,可是實時性比HLS要好。服務器

  • HLS:是蘋果公司實現的基於HTTP的流媒體傳輸協議,可實現流媒體的直播和點播,iOS和 Android 都自然支持這種協議,配置簡單,直接使用video標籤便可。HLS點播基本上就是常見的分段HTTP點播,不一樣在於它的分段很是小。HLS直播的原理是將視頻分紅5-10秒的小分片,而後用m3u8索引表進行管理,因爲客戶端下載到的視頻都是5-10秒的完整數據,故視頻的流暢性很好,但因爲分段推送的技術特色,決定了HLS的延遲通常會高於普通的流媒體直播協議。

 

協議 優勢 缺點 播放延時
RTMP 1.速度快,誤碼率低,延遲低 2.協議在制定的時候就考慮到不少底層的優化 3.消息塊的傳輸可以提供更加穩定的直播環境 1.不支持HTML5直播、瀏覽器推送 2.開發難度大,門檻較高 3.硬件要求相較於HLS較高 1s-3s
HLS 1.手機瀏覽器支持度高 2.HLS協議客戶端支持簡單,只須要支持HTTP請求便可,HTTP協議無狀態,只須要按順序下載媒體片斷便可 3.網絡兼容性好,HTTP數據包也能夠方便地經過防火牆或者代理服務器 1.相比RTMP這類長鏈接協議,HLS延時較高,難以用到直播場景 2.對於點播服務來講,因爲海量小分片在文件分發,對一致性緩存,存儲等挑戰性較大 10s-30s

直播的推流和拉流

  • 推流:指的是把採集階段封包好的內容傳輸到服務器的過程。

流程以下:網絡

1.通過輸出設備(AVCaptureVideoDataOutput)獲得原始的採樣數據–視頻數據(YUV)和音頻數據(AAC)ide

2.使用硬編碼(對應系統的API)或軟編碼(FFMpeg)來編碼壓縮音視頻數據優化

3.分別獲得已編碼的H.264視頻數據和AAC音頻數據編碼

4.根據不一樣的封裝格式(如FLV、TS、MPEG-TS)代理

5.使用HLS協議的時候加上這一步(HLS分段生成策略及m3u8索引文件)視頻

6.經過流上傳到服務器索引

7.服務器進行相關協議的分發

 

  • 拉流(播放):指服務器已有直播內容,用指定地址進行拉取的過程。

根據協議類型與服務器創建鏈接並接收數據流程以下:

1.解析二進制數據,從中找到相關流信息

2.根據不一樣的封裝格式(如FLV、TS)解複用(demux)

3.分別獲得已編碼的H.264視頻數據和AAC音頻數據

4.使用硬解碼(對應系統的API)或軟解碼(FFMpeg)來解壓音視頻數據

5.通過解碼後獲得原始的視頻數據(YUV)和音頻數據(AAC)

6.由於音頻和視頻解碼是分開的,因此咱們得把它們同步起來,不然會出現音視頻不一樣步的現象,好比別人說話會跟口型對不上

7.最後把同步的音頻數據送到耳機或外放,視頻數據送到屏幕上顯示

相關文章
相關標籤/搜索