流媒體相關知識點概述

流媒體

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

流媒體協議

流媒體協議包括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)
    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.最後把同步的音頻數據送到耳機或外放,視頻數據送到屏幕上顯示
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章