什么是網(wǎng)絡(luò )視頻直播?
什么是網(wǎng)絡(luò )視頻直播?
網(wǎng)絡(luò )視頻直播是指人們可以通過(guò)網(wǎng)絡(luò )收看到遠端正在進(jìn)行的現場(chǎng)音視頻實(shí)況,比如賽事、會(huì )議、教學(xué)、手術(shù)等等。網(wǎng)絡(luò )視頻直播的核心思想是利用既有的局域網(wǎng)、城域網(wǎng)甚至是萬(wàn)維網(wǎng)絡(luò )條件實(shí)現對音視頻信號的實(shí)時(shí)傳輸,并且能夠在遠端實(shí)現流暢的收看!
一個(gè)完整的直播過(guò)程包括但不限于以下環(huán)節:采集、處理、編碼、封裝、推流、傳輸、轉碼、分發(fā)、解碼、播放等。
一、采集
采集是整個(gè)視頻推流過(guò)程中的第一個(gè)環(huán)節,它從系統的采集設備中獲取原始視頻數據,將其輸出到下一個(gè)環(huán)節。視頻的采集涉及兩方面數據的采集:音頻采集和圖像采集,它們分別對應兩種完全不同的輸入源和數據格式。
音頻采集:音頻采集過(guò)程主要通過(guò)設備將環(huán)境中的模擬信號采集成PCM編碼的原始數據,然后將數據編碼壓縮成MP3格式分發(fā)出去。常見(jiàn)的音頻壓縮格式有:MP3,AAC,HE-AAC,Opus,FLAC,Vorbis (Ogg),Speex 和 AMR等。
圖像采集:圖像采集過(guò)程主要由攝像機和其他設備拍攝成YUV編碼的原始數據,然后編碼并壓縮成H.264格式數據進(jìn)行分發(fā)出去。常見(jiàn)的視頻封裝格式有:MP4、3GP、AVI、MKV、WMV、MPG、VOB、FLV、SWF、MOV、RMVB 和 WebM 等。
二、處理
在收集視頻或音頻之后,獲得原始數據。 為了增強一些現場(chǎng)效果或添加一些額外的效果,我們通常在壓縮之前處理代碼,例如加上時(shí)間或公司LOGO水印,美女雀斑和聲音混淆處理。在主播和觀(guān)眾連麥場(chǎng)景中,主播需要與一個(gè)或多個(gè)觀(guān)眾進(jìn)行對話(huà),并且將會(huì )話(huà)結果實(shí)時(shí)地與所有其他觀(guān)眾分享, 連麥的處理也有部分工作在推流端完成。
視頻處理:美顏、水印、濾鏡、自定義
音頻處理:混音、降噪、聲音特效、自定義
三、編碼
對于流媒體傳輸,編碼非常重要。 其編碼性能,編碼速度和編碼壓縮比直接影響整個(gè)流媒體傳輸的用戶(hù)體驗和傳輸成本。
常見(jiàn)的視頻編碼器:
1)H.264/AVC
2)HEVC/H.265
3)VP8
4)VP9
5)FFmpeg
音頻編碼器:Mp3, AAC等。
四、封裝
封裝可以理解為采用哪種貨車(chē)去運輸,也就是媒體的容器。所謂容器,把編碼器生成的多媒體內容(視頻,音頻,字幕,章節信息等)混合封裝在一起。
幾種常見(jiàn)的封裝格式:
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 協(xié)議。
五、推流
推流是指使用推流工具等內容抓取軟件把直播內容傳輸到服務(wù)器的過(guò)程。
推送協(xié)議主要有三種:
RTSP(Real Time Streaming Protocol):實(shí)時(shí)流傳送協(xié)議,是用來(lái)控制聲音或影像的多媒體串流協(xié)議, 由Real Networks和Netscape共同提出的;
RTMP(Real Time Messaging Protocol):實(shí)時(shí)消息傳送協(xié)議,是Adobe公司為Flash播放器和服務(wù)器之間音頻、視頻和數據傳輸 開(kāi)發(fā)的開(kāi)放協(xié)議;
HLS(HTTP Live Streaming):是蘋(píng)果公司(Apple Inc.)實(shí)現的基于HTTP的流媒體傳輸協(xié)議;
RTMP是目前主流的流媒體傳輸協(xié)議,廣泛用于直播領(lǐng)域,市面上絕大多數的直播產(chǎn)品都采用了這個(gè)協(xié)議。
RTMP協(xié)議基于 TCP,是一種設計用來(lái)進(jìn)行實(shí)時(shí)數據通信的網(wǎng)絡(luò )協(xié)議,主要用來(lái)在 flash/AIR 平臺和支持 RTMP 協(xié)議的流媒體/交互服務(wù)器之間進(jìn)行音視頻和數據通信。支持該協(xié)議的軟件包括 Adobe Media Server/Ultrant Media Server/red5 等。
它有三種變種:
RTMP工作在TCP之上的明文協(xié)議,使用端口1935;
RTMPT封裝在HTTP請求之中,可穿越防火墻;
RTMPS類(lèi)似RTMPT,但使用的是HTTPS連接;
RTMP協(xié)議就像一個(gè)用來(lái)裝數據包的容器,這些數據可以是AMF格式的數據,也可以是FLV中的視/音頻數據。一個(gè)單一的連接可以通過(guò)不同的通道傳輸多路網(wǎng)絡(luò )流。這些通道中的包都是按照固定大小的包傳輸的。
六、傳輸
推送出去的流媒體需要傳輸到觀(guān)眾,整個(gè)鏈路就是傳輸網(wǎng)絡(luò )。
七、轉碼
視頻直播播流端的碼率是根據推流端決定的,即播流端的碼率是與推流端的碼率一致的。但是遇到以下場(chǎng)景會(huì )造成直播效果不佳:
推流端碼率與播流端帶寬不相匹配。當推流端碼率較高而客戶(hù)端帶寬資源有限就會(huì )導致播放出現卡頓,而當推流端碼率較低但是客戶(hù)端對于直播效率要求較高時(shí)會(huì )導致播放效果較差。
播放器插件需要實(shí)現多碼率切換。前端播放器插件??梢栽O置碼率切換,這就需要同一路推流可以同時(shí)提供多種碼率的播流地址。
因此,視頻直播提供了實(shí)時(shí)轉碼功能對同一路推流地址同時(shí)提供多路不同碼率播流地址提供服務(wù)。
八、分發(fā)
流媒體服務(wù)器的作用是負責直播流的發(fā)布和轉播分發(fā)功能。
九、解碼
編碼器(Encoder):壓縮信號的設備或程序
解碼器(Decoder):解壓縮信號的設備或程序
編解碼器(Codec):編解碼器
十、播放
主要是實(shí)現直播節目在終端上的展現。因為這里使用的傳輸協(xié)議是RTMP, 所以只要支持 RTMP 流協(xié)議的播放器都可以使用,譬如:
電腦端:VLC等
手機端:Vitamio以及ijkplayer等