什么是網絡視頻直播?
一、視頻采集:
采集是整個視頻推流過程中的第一個環節,它從系統的采集設備中獲取原始視頻數據,將其輸出到下一個環節。視頻的采集涉及兩方面數據的采集:音頻采集和圖像采集,它們分別對應兩種完全不同的輸入源和數據格式。
音頻采集:音頻采集過程主要通過設備將環境中的模擬信號采集成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 等。
二、視頻處理:
在收集視頻或音頻之后,獲得原始數據。 為了增強一些現場效果或添加一些額外的效果,我們通常在壓縮之前處理代碼,例如加上時間或公司LOGO水印,美女雀斑和聲音混淆處理。在主播和觀眾連麥場景中,主播需要與一個或多個觀眾進行對話,并且將會話結果實時地與所有其他觀眾分享, 連麥的處理也有部分工作在推流端完成。視頻處理:美顏、水印、濾鏡、自定義;音頻處理:混音、降噪、聲音特效、自定義;
三、視頻編碼:
對于流媒體傳輸,編碼非常重要。 其編碼性能,編碼速度和編碼壓縮比直接影響整個流媒體傳輸的用戶體驗和傳輸成本。常見的視頻編碼器:
1)H.264/AVC;2)HEVC/H.265;3)VP8;4)VP9;5)FFmpeg;6)音頻編碼器: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中的視/音頻數據。一個單一的連接可以通過不同的通道傳輸多路網絡流。這些通道中的包都是按照固定大小的包傳輸的。
六、視頻傳輸:
推送出去的流媒體需要傳輸到觀眾,整個鏈路就是傳輸網絡。
七、視頻轉碼:
視頻直播播流端的碼率是根據推流端決定的,即播流端的碼率是與推流端的碼率一致的。但是遇到以下場景會造成直播效果不佳:
推流端碼率與播流端帶寬不相匹配。當推流端碼率較高而客戶端帶寬資源有限就會導致播放出現卡頓,而當推流端碼率較低但是客戶端對于直播效率要求較高時會導致播放效果較差。
播放器插件需要實現多碼率切換。前端播放器插件??梢栽O置碼率切換,這就需要同一路推流可以同時提供多種碼率的播流地址。
因此,視頻直播提供了實時轉碼功能對同一路推流地址同時提供多路不同碼率播流地址提供服務。
八、視頻分發:
流媒體服務器的作用是負責直播流的發布和轉播分發功能。
九、視頻解碼:
編碼器(Encoder):壓縮信號的設備或程序;
解碼器(Decoder):解壓縮信號的設備或程序;
編解碼器(Codec):編解碼器;
十、視頻播放:
主要是實現直播節目在終端上的展現。因為這里使用的傳輸協議是RTMP, 所以只要支持 RTMP 流協議的播放器都可以使用,譬如:
電腦端:VLC等;手機端:Vitamio以及ijkplayer等;