天天看點

google開源了WebRTC項目(2)

======cymlife原創,轉載請注明。======

WebRTC的視訊處理分析(windows平台)

WebRTC的視訊部分,包含采集、編解碼(I420/VP8)、加密、媒體檔案、圖像處理、顯示、網絡傳輸與流控(RTP/RTCP)等功能。

視訊采集---video_capture

    源代碼在webrtc/modules/video_capture/main目錄下,包含接口和各個平台的源代碼。

    在windows平台上,WebRTC采用的是dshow技術,來實作枚舉視訊的裝置資訊和視訊資料的采集,這意味着可以支援大多數的視訊采集裝置;對那些需要單獨驅動程式的視訊采集卡(比如海康高清卡)就無能為力了。

    視訊采集支援多種媒體類型,比如I420、YUY2、RGB、UYUY等,并可以進行幀大小和幀率控制。

視訊編解碼---video_coding

    源代碼在webrtc/modules/video_coding目錄下。

    WebRTC采用I420/VP8編解碼技術。VP8是google收購ON2後的開源實作,并且也用在WebM項目中。VP8能以更少的資料提供更高品質的視訊,特别适合視訊會議這樣的需求。

視訊加密--video_engine_encryption

    視訊加密是WebRTC的video_engine一部分,相當于視訊應用層面的功能,給點對點的視訊雙方提供了資料上的安全保證,可以防止在Web上視訊資料的洩漏。

    視訊加密在發送端和接收端進行加解密視訊資料,密鑰由視訊雙方協商,代價是會影響視訊資料處理的性能;也可以不使用視訊加密功能,這樣在性能上會好些。

    視訊加密的資料源可能是原始的資料流,也可能是編碼後的資料流。估計是編碼後的資料流,這樣加密代價會小一些,需要進一步研究。

視訊媒體檔案--media_file

    源代碼在webrtc/modules/media_file目錄下。

    該功能是可以用本地檔案作為視訊源,有點類似虛拟攝像頭的功能;支援的格式有Avi。

    另外,WebRTC還可以錄制音視訊到本地檔案,比較實用的功能。

視訊圖像處理--video_processing

    源代碼在webrtc/modules/video_processing目錄下。

    視訊圖像處理針對每一幀的圖像進行處理,包括明暗度檢測、顔色增強、降噪處理等功能,用來提升視訊品質。

視訊顯示--video_render

    源代碼在webrtc/modules/video_render目錄下。

    在windows平台,WebRTC采用direct3d9和directdraw的方式來顯示視訊,隻能這樣,必須這樣。

網絡傳輸與流控

    對于網絡視訊來講,資料的傳輸與控制是核心價值。WebRTC采用的是成熟的RTP/RTCP技術。

繼續閱讀