視頻
WebRTC的視頻部分,包含采集、編解碼(I420/VP8)、加密、媒體文件、圖像處理、顯示、網(wǎng)絡(luò)傳輸與流控(RTP/RTCP)等功能。
視頻采集---video_capture
源代碼在webrtc\modules\video_capture\main目錄下,包含接口和各個(gè)平臺的源代碼。
在windows平臺上,WebRTC采用的是dshow技術(shù),來實(shí)現(xiàn)枚舉視頻的設(shè)備信息和視頻數(shù)據(jù)的采集,這意味著可以支持大多數(shù)的視頻采集設(shè)備;對那些需要單獨(dú)驅(qū)動(dòng)程序的視頻采集卡(比如?蹈咔蹇ǎ┚蜔o能為力了。
視頻采集支持多種媒體類型,比如I420、YUY2、RGB、UYUY等,并可以進(jìn)行幀大小和幀率控制。
視頻編解碼---video_coding
源代碼在webrtc\modules\video_coding目錄下。
WebRTC采用I420/VP8編解碼技術(shù)。VP8是google收購ON2后的開源實(shí)現(xiàn),并且也用在WebM項(xiàng)目中。VP8能以更少的數(shù)據(jù)提供更高質(zhì)量的視頻,特別適合視頻會議這樣的需求。
視頻加密--video_engine_encryption
視頻加密是WebRTC的video_engine一部分,相當(dāng)于視頻應(yīng)用層面的功能,給點(diǎn)對點(diǎn)的視頻雙方提供了數(shù)據(jù)上的安全保證,可以防止在Web上視頻數(shù)據(jù)的泄漏。
視頻加密在發(fā)送端和接收端進(jìn)行加解密視頻數(shù)據(jù),密鑰由視頻雙方協(xié)商,代價(jià)是會影響視頻數(shù)據(jù)處理的性能;也可以不使用視頻加密功能,這樣在性能上會好些。
視頻加密的數(shù)據(jù)源可能是原始的數(shù)據(jù)流,也可能是編碼后的數(shù)據(jù)流。估計(jì)是編碼后的數(shù)據(jù)流,這樣加密代價(jià)會小一些,需要進(jìn)一步研究。
視頻媒體文件--media_file
源代碼在webrtc\modules\media_file目錄下。
該功能是可以用本地文件作為視頻源,有點(diǎn)類似虛擬攝像頭的功能;支持的格式有Avi。
另外,WebRTC還可以錄制音視頻到本地文件,比較實(shí)用的功能。
視頻圖像處理--video_processing
源代碼在webrtc\modules\video_processing目錄下。
視頻圖像處理針對每一幀的圖像進(jìn)行處理,包括明暗度檢測、顏色增強(qiáng)、降噪處理等功能,用來提升視頻質(zhì)量。
視頻顯示--video_render
源代碼在webrtc\modules\video_render目錄下。
在windows平臺,WebRTC采用direct3d9和directdraw的方式來顯示視頻,只能這樣,必須這樣。
網(wǎng)絡(luò)傳輸與流控
對于網(wǎng)絡(luò)視頻來講,數(shù)據(jù)的傳輸與控制是核心價(jià)值。WebRTC采用的是成熟的RTP/RTCP技術(shù)。
音頻
WebRTC的音頻部分,包含設(shè)備、編解碼(iLIBC/iSAC/G722/PCM16/RED/AVT、NetEQ)、加密、聲音文件、聲音處理、聲音輸出、音量控制、音視頻同步、網(wǎng)絡(luò)傳輸與流控(RTP/RTCP)等功能。
音頻設(shè)備---audio_device
源代碼在webrtc\modules\audio_device\main目錄下,包含接口和各個(gè)平臺的源代碼。
在windows平臺上,WebRTC采用的是Windows Core Audio和Windows Wave技術(shù)來管理音頻設(shè)備,還提供了一個(gè)混音管理器。
利用音頻設(shè)備,可以實(shí)現(xiàn)聲音輸出,音量控制等功能。
音頻編解碼---audio_coding
源代碼在webrtc\modules\audio_coding目錄下。
WebRTC采用iLIBC/iSAC/G722/PCM16/RED/AVT編解碼技術(shù)。
WebRTC還提供NetEQ功能---抖動(dòng)緩沖器及丟包補(bǔ)償模塊,能夠提高音質(zhì),并把延遲減至最小。
另外一個(gè)核心功能是基于語音會議的混音處理。
聲音加密--voice_engine_encryption
和視頻一樣,WebRTC也提供聲音加密功能。
聲音文件
該功能是可以用本地文件作為音頻源,支持的格式有Pcm和Wav。
同樣,WebRTC也可以錄制音頻到本地文件。
聲音處理--audio_processing
源代碼在webrtc\modules\audio_processing目錄下。
聲音處理針對音頻數(shù)據(jù)進(jìn)行處理,包括回聲消除(AEC)、AECM(AEC Mobile)、自動(dòng)增益(AGC)、降噪(NS)、靜音檢測(VAD)處理等功能,用來提升聲音質(zhì)量。
網(wǎng)絡(luò)傳輸與流控
和視頻一樣,WebRTC采用的是成熟的RTP/RTCP技術(shù)。
WebRTC的視頻部分,包含采集、編解碼(I420/VP8)、加密、媒體文件、圖像處理、顯示、網(wǎng)絡(luò)傳輸與流控(RTP/RTCP)等功能。
視頻采集---video_capture
源代碼在webrtc\modules\video_capture\main目錄下,包含接口和各個(gè)平臺的源代碼。
在windows平臺上,WebRTC采用的是dshow技術(shù),來實(shí)現(xiàn)枚舉視頻的設(shè)備信息和視頻數(shù)據(jù)的采集,這意味著可以支持大多數(shù)的視頻采集設(shè)備;對那些需要單獨(dú)驅(qū)動(dòng)程序的視頻采集卡(比如?蹈咔蹇ǎ┚蜔o能為力了。
視頻采集支持多種媒體類型,比如I420、YUY2、RGB、UYUY等,并可以進(jìn)行幀大小和幀率控制。
視頻編解碼---video_coding
源代碼在webrtc\modules\video_coding目錄下。
WebRTC采用I420/VP8編解碼技術(shù)。VP8是google收購ON2后的開源實(shí)現(xiàn),并且也用在WebM項(xiàng)目中。VP8能以更少的數(shù)據(jù)提供更高質(zhì)量的視頻,特別適合視頻會議這樣的需求。
視頻加密--video_engine_encryption
視頻加密是WebRTC的video_engine一部分,相當(dāng)于視頻應(yīng)用層面的功能,給點(diǎn)對點(diǎn)的視頻雙方提供了數(shù)據(jù)上的安全保證,可以防止在Web上視頻數(shù)據(jù)的泄漏。
視頻加密在發(fā)送端和接收端進(jìn)行加解密視頻數(shù)據(jù),密鑰由視頻雙方協(xié)商,代價(jià)是會影響視頻數(shù)據(jù)處理的性能;也可以不使用視頻加密功能,這樣在性能上會好些。
視頻加密的數(shù)據(jù)源可能是原始的數(shù)據(jù)流,也可能是編碼后的數(shù)據(jù)流。估計(jì)是編碼后的數(shù)據(jù)流,這樣加密代價(jià)會小一些,需要進(jìn)一步研究。
視頻媒體文件--media_file
源代碼在webrtc\modules\media_file目錄下。
該功能是可以用本地文件作為視頻源,有點(diǎn)類似虛擬攝像頭的功能;支持的格式有Avi。
另外,WebRTC還可以錄制音視頻到本地文件,比較實(shí)用的功能。
視頻圖像處理--video_processing
源代碼在webrtc\modules\video_processing目錄下。
視頻圖像處理針對每一幀的圖像進(jìn)行處理,包括明暗度檢測、顏色增強(qiáng)、降噪處理等功能,用來提升視頻質(zhì)量。
視頻顯示--video_render
源代碼在webrtc\modules\video_render目錄下。
在windows平臺,WebRTC采用direct3d9和directdraw的方式來顯示視頻,只能這樣,必須這樣。
網(wǎng)絡(luò)傳輸與流控
對于網(wǎng)絡(luò)視頻來講,數(shù)據(jù)的傳輸與控制是核心價(jià)值。WebRTC采用的是成熟的RTP/RTCP技術(shù)。
音頻
WebRTC的音頻部分,包含設(shè)備、編解碼(iLIBC/iSAC/G722/PCM16/RED/AVT、NetEQ)、加密、聲音文件、聲音處理、聲音輸出、音量控制、音視頻同步、網(wǎng)絡(luò)傳輸與流控(RTP/RTCP)等功能。
音頻設(shè)備---audio_device
源代碼在webrtc\modules\audio_device\main目錄下,包含接口和各個(gè)平臺的源代碼。
在windows平臺上,WebRTC采用的是Windows Core Audio和Windows Wave技術(shù)來管理音頻設(shè)備,還提供了一個(gè)混音管理器。
利用音頻設(shè)備,可以實(shí)現(xiàn)聲音輸出,音量控制等功能。
音頻編解碼---audio_coding
源代碼在webrtc\modules\audio_coding目錄下。
WebRTC采用iLIBC/iSAC/G722/PCM16/RED/AVT編解碼技術(shù)。
WebRTC還提供NetEQ功能---抖動(dòng)緩沖器及丟包補(bǔ)償模塊,能夠提高音質(zhì),并把延遲減至最小。
另外一個(gè)核心功能是基于語音會議的混音處理。
聲音加密--voice_engine_encryption
和視頻一樣,WebRTC也提供聲音加密功能。
聲音文件
該功能是可以用本地文件作為音頻源,支持的格式有Pcm和Wav。
同樣,WebRTC也可以錄制音頻到本地文件。
聲音處理--audio_processing
源代碼在webrtc\modules\audio_processing目錄下。
聲音處理針對音頻數(shù)據(jù)進(jìn)行處理,包括回聲消除(AEC)、AECM(AEC Mobile)、自動(dòng)增益(AGC)、降噪(NS)、靜音檢測(VAD)處理等功能,用來提升聲音質(zhì)量。
網(wǎng)絡(luò)傳輸與流控
和視頻一樣,WebRTC采用的是成熟的RTP/RTCP技術(shù)。