視頻直播系統的完整處理流程

完整的視頻直播過程

採集
處理
編碼
封裝
推流
傳輸
轉碼
分發
解碼
播放

一、採集

音頻採集 音頻的採集過程主要通過設備將環境中的模擬信號採集成 PCM 編碼的原始數據,然後編碼壓縮成 MP3
等格式的數據分發出去。常見的音頻壓縮格式有:MP3,AAC,HE-AAC,Opus,FLAC,Vorbis (Ogg),Speex 和 AMR等。
圖像採集 圖像的採集過程主要由攝像頭等設備拍攝成 YUV 編碼的原始數據,然後經過編碼壓縮成 H.264
等格式的數據分發出去。常見的視頻封裝格式有:MP4、3GP、AVI、MKV、WMV、MPG、VOB、FLV、SWF、MOV、RMVB 和 WebM 等。

二、處理

視頻或者音頻完成採集之後得到原始數據,爲了增強一些現場效果或者加上一些額外的效果,我們一般會在將其編碼壓縮前進行處理。
視頻:美顏、水印、路徑、自定義
音頻:混音、降噪、特效、自定義

三、編碼

對流媒體傳輸來說,編碼非常重要,它的編碼性能、編碼速度和編碼壓縮比會直接影響整個流媒體傳輸的用戶體驗和傳輸成本。
常見的視頻編碼器:
1)H.264/AVC
2)HEVC/H.265
3)VP8
4)VP9
5)FFmpeg
音頻編碼器:Mp3, AAC等。

四、封裝

把編碼器生成的多媒體內容(視頻,音頻,字幕,章節信息等)混合封裝在一起
幾種常見的封裝格式:
1)AVI 格式(後綴爲 .avi)
2)DV-AVI 格式(後綴爲 .avi)
3)QuickTime File Format 格式(後綴爲 .mov)
4)MPEG 格式(文件後綴可以是 .mpg .mpeg .mpe .dat .vob .asf .3gp .mp4等)
5)WMV 格式(後綴爲.wmv .asf)
6)Real Video 格式(後綴爲 .rm .rmvb)
7)Flash Video 格式(後綴爲 .flv)
8)Matroska 格式(後綴爲 .mkv)
9)MPEG2-TS 格式 (後綴爲 .ts)
目前,我們在流媒體傳輸,尤其是直播中主要採用的就是 FLV 和 MPEG2-TS 格式,分別用於 RTMP/HTTP-FLV 和 HLS 協議。

五、推流

推流是指使用推流工具等內容抓取軟件把直播內容傳輸到服務器的過程。
推送協議主要有三種:
RTSP(Real Time Streaming Protocol):實時流傳送協議,是用來控制聲音或影像的多媒體串流協議, 由Real
Networks和Netscape共同提出的;
RTMP(Real Time Messaging Protocol):實時消息傳送協議,是Adobe公司爲Flash播放器和服務器之間音頻、視頻和數據傳輸
開發的開放協議;
HLS(HTTP Live Streaming):是蘋果公司(Apple Inc.)實現的基於HTTP的流媒體傳輸協議;
RTMP是目前主流的流媒體傳輸協議,廣泛用於直播領域,市面上絕大多數的直播產品都採用了這個協議。
RTMP協議基於 TCP,是一種設計用來進行實時數據通信的網絡協議,主要用來在 flash/AIR 平臺和支持 RTMP
協議的流媒體/交互服務器之間進行音視頻和數據通信。支持該協議的軟件包括 Adobe Media Server/Ultrant Media Server/red5
等。
它有三種變種:
RTMP工作在TCP之上的明文協議,使用端口1935;
RTMPT封裝在HTTP請求之中,可穿越防火牆;
RTMPS類似RTMPT,但使用的是HTTPS連接;
RTMP協議就像一個用來裝數據包的容器,這些數據可以是AMF格式的數據,也可以是FLV中的視/音頻數據。一個單一的連接可以通過不同的通道傳輸多路網絡流。這些通道中的包都是按照固定大小的包傳輸的。

六、傳輸

推送出去的流媒體需要傳輸到觀衆,整個鏈路就是傳輸網絡。

七、轉碼

視頻直播播流端的碼率是根據推流端決定的,即播流端的碼率是與推流端的碼率一致的。但是遇到以下場景會造成直播效果較差:
推流端碼率與播流端帶寬不相匹配。當推流端碼率較高而客戶端帶寬資源有限就會導致播放出現卡頓,而當推流端碼率較低但是客戶端對於直播效率要求較高時會導致播放效果較差。
播放器插件需要實現多碼率切換。前端播放器插件常可以設置碼率切換,這就需要同一路推流可以同時提供多種碼率的播流地址。
因此,視頻直播提供了實時轉碼功能對同一路推流地址同時提供多路不同碼率播流地址提供服務。

八、分發

流媒體服務器的作用是負責直播流的發佈和轉播分發功能。

九、解碼

編碼器(Encoder):壓縮信號的設備或程序
解碼器(Decoder):解壓縮信號的設備或程序
編解碼器(Codec):編解碼器對

十、播放器流播放

主要是實現直播節目在終端上的展現。因爲這裏使用的傳輸協議是RTMP, 所以只要支持 RTMP 流協議的播放器都可以使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章