Firefox、Android、iOS遇見WebRTC

來源:互聯網
上載者:User

    getUserMedia目前可以在Chrome瀏覽器中直接使用,此外還有Opera、Firefox Nightly構建版、Aurora瀏覽器(儘管在Firefox中需要設定喜好設定)。可以看一看simpl.info/gum上getUserMedia跨瀏覽器的示範,以及Chris Wilson使用getUserMedia來進行網路音頻輸入的驚人示範。         Chrome穩定版已經支援webkitRTCPeerConnection,並且無須在about:flgas裡設定。Chrome24及以上版本已經支援TURN伺服器(TURN協議允許NAT或者防火牆後面的對象可以通過TCP或者UDP接收到資料。這在使用了對稱式的NAT或者防火牆的網路中尤其具有實用價值)。在simpl.info/pc上有一個Chrome RTCPeerConnection非常簡單的示範,以及在apprtc.appspot.com上有一個超棒的視訊交談應用。(關於命名的解釋:經過幾次迭代,目前API的命名為webkitRTCPeerConnection。其他名稱及實現已被廢棄。當W3C標準已經穩定時,webkit首碼將被刪除。)         案頭版Firefox Nightly和Aurora瀏覽器也已經支援WebRTC,而在iOS和Android上可以通過愛立信Bowser瀏覽器支援。          DATACHANNEL         DataChannel是用於任意資料高效能、低延時、點對點通訊的WebRTC API。這個API非常簡單,類似於WebSocket,但是它的通訊是直接發生在瀏覽器之間的,所以DataChannel的速度遠遠超過WebSocket,即便我們還需要一個中繼(TURN)伺服器(用“TCP/UDP打孔”的方式來穿越防火牆和防止網路位址轉譯失敗)。         Chrome 25計劃支援DataChannel,需要通過about:flags啟用-儘管它可能會錯過這個版本。這將僅用於實驗,可能不會充分發揮全部的作用,而且無法和Firefox進行通訊。DataChannel在以後的版本中會更加穩定,並且可以和Firefox互連。         Firefox Nightly構建版和Aurora支援mozGetUserMedia、mozRTCPeerConnection和DataChannel(但是不要忘記在about:flags中設定參數!)         在Firefox中運行DataChannel的如下:  下面是代碼片斷: [html]  pc1.onconnection = function() {    log("pc1 onConnection ");    dc1 = pc1.createDataChannel("This is pc1",{}); // reliable (TCP-like)    dc1 = pc1.createDataChannel("This is pc1",{outOfOrderAllowed: true, maxRetransmitNum: 0}); // unreliable (UDP-like)    log("pc1 created channel " + dc1 + " binarytype = " + dc1.binaryType);    channel = dc1;    channel.binaryType = "blob";    log("pc1 new binarytype = " + dc1.binaryType);      // Since we create the datachannel, don't wait for onDataChannel!    channel.onmessage = function(evt) {      if (evt.data instanceof Blob) {        fancy_log("*** pc2 sent Blob: " + evt.data + ", length=" + evt.data.size,"blue");      } else {        fancy_log('pc2 said: ' + evt.data, "blue");      }    }    channel.onopen = function() {      log("pc1 onopen fired for " + channel);      channel.send("pc1 says Hello...");      log("pc1 state: " + channel.state);    }    channel.onclose = function() {      log("pc1 onclose fired");    };    log("pc1 state:" + channel.readyState);        }          hacks.mozilla.org部落格上有更多Firefox實現的資訊和示範。2013年初Firefox 18將會提供WebRTC基礎功能的支援,並且附加功能在支援計劃中,包括getUserMedia和createOffer/應答限制,以及TURN(允許瀏覽器在防火牆後進行互相通訊)。         WebRTC的更多資訊,請參閱WebRTC入門。這裡甚至還有一本正在印刷中的WebRTC書籍,目前以電子書格式提供。         解析度限制         Chrome 24及​​以上版本已經實現了解析度限制功能。它可用於為getUserMedia()和RTCPeerConnection的addStream()調用設定視頻的解析度。         在simpl.info/getusermedia/constraints上有一個樣本,通過設定一個斷點和改變參數值展示不同的限制,。         這裡有幾個陷阱。在一個瀏覽器標籤中設定getUserMedia的解析度限制會影響所有的標籤。設定不允許限制解析度會出現一個非常奇怪的錯誤資訊: [html]  navigator.getUserMedia error:  NavigatorUserMediaError {code: 1, PERMISSION_DENIED: 1}          如果你在本地而不是伺服器上使用getUserMedia,會出現和上面一樣的錯誤。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.