音視訊處理的一般流程
資料采集→資料編碼→資料傳輸(流媒體伺服器) →解碼資料→播放顯示
1.資料采集:錄影機及拾音器收集視訊及音頻資料,此時得到的為原始資料涉及技術或協定:錄影機:CCD、CMOS拾音器:聲電轉換裝置(咪頭)、音頻放大電路。
2.資料編碼:使用相關硬體或軟體對音視訊原始資料進行編碼處理(數字化)及加工(如音視訊混合、打包封裝等),得到可用的音視訊資料涉及技術或協定:編碼方式:CBR、VBR編碼格式視訊:H.265、H.264、MPEG-4等,封裝容器有TS、MKV、AVI、MP4等音頻:G.711μ、AAC、Opus等,封裝有MP3、OGG、AAC等
3.資料傳輸:将編碼完成後的音視訊資料進行傳輸,早期的音視訊通過同軸電纜之類的線纜進行傳輸,IP網絡發展後,使用IP網絡優傳輸涉及技術或協定:傳輸協定:RTP與RTCP、RTSP、RTMP、HTTP、HLS(HTTP Live Streaming)等控制信令:SIP和SDP、SNMP等。
4、解碼資料:使用相關硬體或軟體對接收到的編碼後的音視訊資料進行解碼,得到可以直接顯示的圖像/聲音涉及技術或協定:一般對應的編碼器都會帶有相應的解碼器,也有一些第三方解碼插件等5、播放顯示:在顯示器(電視、監視屏等)或揚聲器(耳機、喇叭等)裡,顯示相應的圖像畫面或聲音涉及技術或協定:顯示器、揚聲器、3D眼鏡等。
推流端的四個環節
1、 首先是采集環節:采集是指對圖像和聲音的采集,簡單說就是能讓網絡視訊直播系統和主播攝像頭連起來,軟體能擷取到外界的音視訊資訊。
然後是前處理階段:這裡也是俗稱美顔的階段,這要求我們在網絡視訊直播系統中加入美顔、特效、萌顔等效果,而這個算法需要涉及到GPU程式設計,這個階段的難點不在于美顔,因為美顔通常使用SDK來解決的,重點在于GPU占比。
2、 目前市面上的手機硬體配置已經越來越高了,但在一些老舊機型上,功耗仍然是個很大的問題,GPU占用太高會導緻手機發燙、攝像頭掉幀甚至軟體閃退。
3、 接下來就是編碼了,編碼是為了壓縮資料也是為了更好的解碼,通常我們會選擇用寫死來平衡編碼速度和編碼品質之間的效率比,但軟編仍然是畫面品質更高的選擇,也有使用者願意使用軟編碼的方式,是以在最初設計系統時,我們應當同時設計好軟編硬編兩種編碼方式。
4、 推流端最後一個操作就是推流,把視訊推流到伺服器,以便于直播視訊的分發和拉流。