我所在的項目用這個技術兩年多了,先說結論:
徹底能夠!
可是,凡事總有可是,
也沒那麼簡單。你覺得調用幾個Chrome的API就能直播了?too simple
樓上
米小嘉 回答中的猜測是不正確的,WebRTC用的不是插件,是Chrome自帶的功能,是原生js的API,也沒有什麼瀏覽器自帶的插件。
樓上
煎餅果子社長 的方法也不對,WebRTC的API不只僅是給你獲取本地信源的,所謂RTC是real time communication的縮寫,天然這套API是帶傳輸功能的。因此獲取圖像信源以後不該該用websocket發送圖像數據,而是直接用WebRTC的通訊相關API發送圖像和聲音(這套API是同時支持圖像和聲音的)數據。
因此,正確的方法是什麼呢?
一、你得有一個實現了WebRTC相關協議的客戶端。好比Chrome瀏覽器。
二、架設一個相似MCU系統的服務器。(不知道MCU是什麼?看這:
MCU(視頻會議系統中心控制設備))
第一步,用你的客戶端,好比Chrome瀏覽器,經過WebRTC相關的媒體API獲取圖像及聲音信源,再用WebRTC中的通訊API將圖像和聲音數據發送到MCU服務器。
第二步,MCU服務器根據你的需求對圖像和聲音數據進行必要的處理,好比壓縮、混音等。
第三步,須要看直播的用戶,經過他們的Chrome瀏覽器,連接上你的MCU服務器,並收取服務器轉發來的圖像和聲音流。
先說步驟一,若是你只是作着玩玩,徹底能夠直接用Chrome瀏覽器作你的直播客戶端。把攝像頭麥克風連上電腦以後,Chrome能夠用相關的js的API獲取到攝像頭和麥克風的數據。缺點就是若是長時間直播,Chrome的穩定性堪憂,我不是嚇唬你。咱們項目的經驗是,chrome這樣運行24小時以上內存佔用很厲害,並且容易崩潰。
第二步,你可能要問,WebRTC能夠直接在瀏覽器之間P2P地傳輸流,爲何還要有中轉的MCU服務器?由於Chrome的功能很弱,視頻的分辨率控制、多路語音的混音都作不了,因此須要MCU參與。最重要的是,Chrome同時給6個客戶端發視頻流就很消耗資源了,因此你若是有超過10個用戶收看的話,Chrome很容易崩潰。
第三步就比較簡單了,沒什麼好說的。
最後最後,仍是老話題,兼容性。你能夠查一下如今支持的瀏覽器有款,IE聽說支持,可是咱們研究了一下好像他用的協議和Chrome不同,不能互通。firefox和opera狀況也不是很理想。
-------------------------2015年11月17日 更新--------------------------
韋易笑 的答案中說「10人之內使用,超過10人就掛了」。從我我的的經驗來看,我認爲WebRTC並無那麼不堪。我不知道他是用什麼樣的方案,可是我原來的那個項目,13年作的結果是 1人廣播,39人收看,在一臺i3 + 4G + Centos6.4 mini的機器上跑MCU,連續運行48小時沒有出現問題。CPU的使用率大概在60%左右,內存使用率是多少我記不清了,可是印象中不高,並且比較穩定。能不能支持更多的客戶端咱們沒有嘗試,由於當時已經知足咱們的需求了。