webrtc開發
⑴ 基於開源WebRTC開發實時音視頻靠譜嗎
WebRTC是一個支持網頁瀏覽器進行實時語音對話或視頻對話的技術,在行業內得到了廣泛的支持和應用,成為下一代視頻通話的標准,所以來說還是靠譜的。
話說回來,雖然作為實時音視頻領域最火的開源技術,WebRTC 點對點的架構模式卻無法支持大規模並發,怎麼解決呢?即構自研WebRTC網關伺服器架構實踐就很好解決了這個問題。
Zego-Gateway架構的改進
在加入WebRTC網關之前,即構自研系統架構如下圖所示,主要分成兩部分,左邊是低延時用戶,而右邊是圍觀用戶。低延時用戶主要是通過ZEGO的實時傳輸網路進行推拉流。
在加入了WebRTC網關伺服器後(圖中紅線部分所示),即構的系統已經能全面支持網頁端視頻互動場景,同時實現了APP、微信小程序、WebRTC三端的連麥互通。
⑵ webrtc可以用php開發嗎
WebRTC是一個建議標准——當前正在被W3C完善——用於提供一系列基於網路的工具,任何設備都可以用它來實時共享音頻、視頻和數據。當然,它仍在早起階段,但是WebRTC有可能取代在任何設備上工作的Skype、Flash和很多基於Web的本地應用程序。
即便WebRTC很酷,它並不是個簡單的工作,為此Mozilla Hacks博客與開發商合作,創建了conversat.io,旨在簡化WebRTC的實現。
⑶ WebRTC有前途嗎
我覺得webrtc 遲早會代替現在flash media server成為新的多媒體通信的解決方案, 我們公司的直播產品就是使用的webrtc。
相比flash那套, webrtc優勢很大:
1. windows, ios, android全部支持。
2. 內置的NetEQ, AudioProcess模塊能夠更好的保證語音質量, 這是google高價收購的GIPS的解決方案, 很有權威性
3. 一整套的解決方案, 從採集,編解碼,RTP打包, 流量控制, 音頻處理, 多通道混音, 都給於了很好的支持, 並且是開源的代碼。
現在webrtc還在持續的開發中, 相信依靠google的推動, 它會徹底幹掉flash
⑷ google為什麼要開源webrtc
google開源了WebRTC項目,網址是:http://code.google.com/p/webrtc/。
WebRTC實現了基於網頁的視頻會議,標準是WHATWG 協議,目的是通過瀏覽器提供簡單的javascript就可以達到實時通訊(Real-Time Communications (RTC))能力。
通過對源碼的粗略分析,WebRTC提供了視頻會議的核心技術,包括音視頻的採集、編解碼、網路傳輸、顯示等功能,並且還支持跨平台:windows,linux,mac,android。
WebRTC的視頻處理分析(windows平台)
WebRTC的視頻部分,包含採集、編解碼(I420/VP8)、加密、媒體文件、圖像處理、顯示、網路傳輸與流控(RTP/RTCP)等功能。
視頻採集---video_capture
源代碼在webrtc\moles\video_capture\main目錄下,包含介面和各個平台的源代碼。
在windows平台上,WebRTC採用的是dshow技術,來實現枚舉視頻的設備信息和視頻數據的採集,這意味著可以支持大多數的視頻採集設備;對那些需要單獨驅動程序的視頻採集卡(比如海康高清卡)就無能為力了。
視頻採集支持多種媒體類型,比如I420、YUY2、RGB、UYUY等,並可以進行幀大小和幀率控制。
視頻編解碼---video_coding
源代碼在webrtc\moles\video_coding目錄下。
WebRTC採用I420/VP8編解碼技術。VP8是google收購ON2後的開源實現,並且也用在WebM項目中。VP8能以更少的數據提供更高質量的視頻,特別適合視頻會議這樣的需求。
視頻加密--video_engine_encryption
視頻加密是WebRTC的video_engine一部分,相當於視頻應用層面的功能,給點對點的視頻雙方提供了數據上的安全保證,可以防止在Web上視頻數據的泄漏。
視頻加密在發送端和接收端進行加解密視頻數據,密鑰由視頻雙方協商,代價是會影響視頻數據處理的性能;也可以不使用視頻加密功能,這樣在性能上會好些。
視頻加密的數據源可能是原始的數據流,也可能是編碼後的數據流。估計是編碼後的數據流,這樣加密代價會小一些,需要進一步研究。
視頻媒體文件--media_file
源代碼在webrtc\moles\media_file目錄下。
該功能是可以用本地文件作為視頻源,有點類似虛擬攝像頭的功能;支持的格式有Avi。
另外,WebRTC還可以錄制音視頻到本地文件,比較實用的功能。
視頻圖像處理--video_processing
源代碼在webrtc\moles\video_processing目錄下。
視頻圖像處理針對每一幀的圖像進行處理,包括明暗度檢測、顏色增強、降噪處理等功能,用來提升視頻質量。
視頻顯示--video_render
源代碼在webrtc\moles\video_render目錄下。
在windows平台,WebRTC採用direct3d9和directdraw的方式來顯示視頻,只能這樣,必須這樣。
網路傳輸與流控
對於網路視頻來講,數據的傳輸與控制是核心價值。WebRTC採用的是成熟的RTP/RTCP技術。
WebRTC的音頻處理分析(windows平台)
WebRTC的音頻部分,包含設備、編解碼(iLIBC/iSAC/G722/PCM16/RED/AVT、NetEQ)、加密、聲音文件、聲音處理、聲音輸出、音量控制、音視頻同步、網路傳輸與流控(RTP/RTCP)等功能。
音頻設備---audio_device
源代碼在webrtc\moles\audio_device\main目錄下,包含介面和各個平台的源代碼。
在windows平台上,WebRTC採用的是Windows Core Audio和Windows Wave技術來管理音頻設備,還提供了一個混音管理器。
利用音頻設備,可以實現聲音輸出,音量控制等功能。
音頻編解碼---audio_coding
源代碼在webrtc\moles\audio_coding目錄下。
WebRTC採用iLIBC/iSAC/G722/PCM16/RED/AVT編解碼技術。
WebRTC還提供NetEQ功能---抖動緩沖器及丟包補償模塊,能夠提高音質,並把延遲減至最小。
另外一個核心功能是基於語音會議的混音處理。
聲音加密--voice_engine_encryption
和視頻一樣,WebRTC也提供聲音加密功能。
聲音文件
該功能是可以用本地文件作為音頻源,支持的格式有Pcm和Wav。
同樣,WebRTC也可以錄制音頻到本地文件。
聲音處理--audio_processing
源代碼在webrtc\moles\audio_processing目錄下。
聲音處理針對音頻數據進行處理,包括回聲消除(AEC)、AECM、自動增益(AGC)、降噪處理等功能,用來提升聲音質量。
網路傳輸與流控
和視頻一樣,WebRTC採用的是成熟的RTP/RTCP技術。
WebRTC的官網是http://www.webrtc.org/,其中的FAQ解答了很多大家關心的問題。有這么幾點可以關註:
1.license
採用BSD licenses,可以用於商業軟體;即使你修改了源代碼,也不必公開你修改的部分。
2.為什麼WebRTC要免費
音視頻針對目前的互聯網應用,還是至關重要的。google這樣做的目的,無非是吸引大量的開發者在chrome平台上開發音視頻相關應用,和當年微軟windows集成IE是一個道理。
3.下載和編譯
a).下載google的源碼工具depot_tools:
svn co http://src.chromium.org/svn/trunk/tools/depot_tools
並把depot_tools添加到系統的環境變數PATH里;
b).下載git工具:並把git添加到系統的環境變數PATH里;
c).創建webrtc工作目錄,並在該目錄下運行:
gclient config https://webrtc.googlecode.com/svn/trunk
gclient sync --force
sync命令也會產生基於本地環境(Linux:make, OSX: XCode, Windows: Visual Studio)的build文件。
也可以用命令:
gclient runhooks --force
對windows平台,在trunk目錄下,已經有針對Visual Studio的工程文件:
webrtc.sln
好了,打開它,這就可以編譯了。
註:webrtc默認使用了C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses。我的機器上只有v7.0的sdk,於是構造了一個v7.1的目錄,僅包含Samples\multimedia\directshow\baseclasses。
⑸ 如何使用h5 開發一個webrtc的直播間
巧了,這個業務我們做過,當時是接入zego即構科技的直播SDK進行開發的,他們的SDK多終端適配,支持WebRTC終端接入,可在瀏覽器上與其它終端互通連麥,即構的連麥是音視頻領域內最好的,音視頻技術也很前沿,都是自己研發的,連麥技術也是國內首創
⑹ 基於開源WebRTC開發實時音視頻安全可靠嗎
從大的方向看WebRTC是靠譜的,不過它點對點的架構模式卻無法支持大規模並發,可以考慮接入zego即構科技音視頻 sdk來解決,它支持超高並發,低延遲、開發的音視頻效果很好,可以試一試,反正免費試用
⑺ WebRTC是一項什麼技術架構
架構編輯
顏色標識說明
(1)紫色部分是Web開發者API層;
(2)藍色實線部分是面向瀏覽器廠商的API層
(3)藍色虛線部分瀏覽器廠商可以自定義實現
架構組件介紹
(1) Your Web App
Web開發者開發的程序,Web開發者可以基於集成WebRTC的瀏覽器提供的web API開發基於視頻、音頻的實時通信應用。[1]
(2)Web API
面向第三方開發者的WebRTC標准API(Javascript),使開發者能夠容易地開發出類似於網路視頻聊天的web應用,最新的標准化進程可以查看這里。[2]
這些API可分成Network Stream API、 RTCPeerConnection、Peer-to-peer Data API三類,詳細的API說明可以看這里。
Network Stream API
MediaStream:MediaStream用來表示一個媒體數據流。
MediaStreamTrack在瀏覽器中表示一個媒體源。
RTCPeerConnection
RTCPeerConnection: 一個RTCPeerConnection對象允許用戶在兩個瀏覽器之間直接通訊。
RTCIceCandidate :表示一個ICE協議的候選者。
RTCIceServer:表示一個ICE Server。
Peer-to-peer Data API
DataChannel:數據通道( DataChannel)介面表示一個在兩個節點之間的雙向的數據通道 。
(3)WebRTC Native C++ API
本地C++ API層,使瀏覽器廠商容易實現WebRTC標準的Web API,抽象地對數字信號過程進行處理。
(4)Transport / Session
傳輸/會話層
會話層組件採用了libjingle庫的部分組件實現,無須使用xmpp/jingle協議
a. RTP Stack協議棧
Real Time Protocol
b. STUN/ICE
可以通過STUN和ICE組件來建立不同類型網路間的呼叫連接。
c. Session Management
一個抽象的會話層,提供會話建立和管理功能。該層協議留給應用開發者自定義實現。
(5)VoiceEngine
音頻引擎是包含一系列音頻多媒體處理的框架,包括從視頻採集卡到網路傳輸端等整個解決方案。
PS:VoiceEngine是WebRTC極具價值的技術之一,是Google收購GIPS公司後開源的。在VoIP上,技術業界領先,後面的文章會詳細了解
a. iSAC
Internet Speech Audio Codec
針對VoIP和音頻流的寬頻和超寬頻音頻編解碼器,是WebRTC音頻引擎的默認的編解碼器
采樣頻率:16khz,24khz,32khz;(默認為16khz)
自適應速率為10kbit/s ~ 52kbit/;
自適應包大小:30~60ms;
演算法延時:frame + 3ms
b.iLBC
Internet Low Bitrate Codec
VoIP音頻流的窄帶語音編解碼器
采樣頻率:8khz;
20ms幀比特率為15.2kbps
30ms幀比特率為13.33kbps
標准由IETF RFC3951和RFC3952定義
c.NetEQ for Voice
針對音頻軟體實現的語音信號處理元件
NetEQ演算法:自適應抖動控制演算法以及語音包丟失隱藏演算法。使其能夠快速且高解析度地適應不斷變化的網路環境,確保音質優美且緩沖延遲最小。
是GIPS公司獨步天下的技術,能夠有效的處理由於網路抖動和語音包丟失時候對語音質量產生的影響。
PS:NetEQ 也是WebRTC中一個極具價值的技術,對於提高VoIP質量有明顯效果,加以AEC\NR\AGC等模塊集成使用,效果更好。
d.Acoustic Echo Canceler (AEC)
回聲消除器是一個基於軟體的信號處理元件,能實時的去除mic採集到的回聲。
e.Noise Rection (NR)
雜訊抑制也是一個基於軟體的信號處理元件,用於消除與相關VoIP的某些類型的背景雜訊(嘶嘶聲,風扇噪音等等… …)
(6)VideoEngine
WebRTC視頻處理引擎
VideoEngine是包含一系列視頻處理的整體框架,從攝像頭採集視頻到視頻信息網路傳輸再到視頻顯示整個完整過程的解決方案。
a. VP8
視頻圖像編解碼器,是WebRTC視頻引擎的默認的編解碼器
VP8適合實時通信應用場景,因為它主要是針對低延時而設計的編解碼器。
PS:VPx編解碼器是Google收購ON2公司後開源的,VPx現在是WebM項目的一部分,而WebM項目是Google致力於推動的HTML5標准之一
b. Video Jitter Buffer
視頻抖動緩沖器,可以降低由於視頻抖動和視頻信息包丟失帶來的不良影響。
c. Image enhancements
圖像質量增強模塊
對網路攝像頭採集到的圖像進行處理,包括明暗度檢測、顏色增強、降噪處理等功能,用來提升視頻質量。
WebRTC,名稱源自網頁實時通信(Web Real-Time Communication)的縮寫,是一個支持網頁瀏覽器進行實時語音對話或視頻對話的技術,是谷歌2010年以6820萬美元收購Global IP Solutions公司而獲得的一項技術。
特點編輯
WebRTC實現了基於網頁的視頻會議,標準是WHATWG 協議,目的是通過瀏覽器提供簡單的javascript就可以達到實時通訊(Real-Time Communications (RTC))能力。
WebRTC(Web Real-Time Communication)項目的最終目的主要是讓Web開發者能夠基於瀏覽器(Chrome\FireFox\...)輕易快捷開發出豐富的實時多媒體應用,而無需下載安裝任何插件,Web開發者也無需關注多媒體的數字信號處理過程,只需編寫簡單的Javascript程序即可實現,W3C等組織正在制定Javascript 標准API,目前是WebRTC 1.0版本,Draft狀態;另外WebRTC還希望能夠建立一個多互聯網瀏覽器間健壯的實時通信的平台,形成開發者與瀏覽器廠商良好的生態環境。同時,Google也希望和致力於讓WebRTC的技術成為HTML5標准之一,可見Google布局之深遠。[1]
WebRTC提供了視頻會議的核心技術,包括音視頻的採集、編解碼、網路傳輸、顯示等功能,並且還支持跨平台:windows,linux,mac,android。
⑻ 可以用WebRTC來做視頻直播嗎
首先看一下什麼是WebRTC,
那麼我們這次將介紹的WebRTC在流媒體傳輸,就是採用了在RTP/RTCP協議基礎上的安全協議SRTP/SRTCP。這里可能有人會問,WebRTC究竟是什麼呢? WebRTC是一個Google免費開源的項目,其目的是為瀏覽器和移動應用程序提供實時通信(RTC)功能。可以理解為,WebRTC就是一套瀏覽器的JavaScript API,通過這套API,可以開創性地快速實現瀏覽器之間的實時音視頻通訊,數據傳輸功能。
網上一篇介紹WebRTC的科普文中有一句話說到,「demo和實用之間還差著一萬個WebRTC」,額,古人誠不我欺。
⑼ 如何著手學習WebRTC開發
可以使用WebRTC庫-PeerJS來實現點對點視頻聊天。 官網有詳細的API文檔,以及簡單的視頻聊天示例,隨機演算法得自己寫了。 還可以學習下canvas,有選擇性的把視頻流畫到canvas上,可以或許可以減少帶寬壓力
⑽ 開發WebRTC使用什麼語言
看什麼系統了。一般是設置 ,應用管理 ,找到webrtc,下拉看許可權 找到打開攝像頭許可權,再點開就可以了