WebRTC เริ่มให้บริการ Firefox, Android และ iOS แล้ว

เกิดเหตุการณ์มากมายกับ WebRTC ในช่วง 2-3 สัปดาห์ที่ผ่านมา ได้เวลาอัปเดตแล้ว

โดยเฉพาะอย่างยิ่ง เราตื่นเต้นมากที่ได้เห็น WebRTC เกิดขึ้นบนเบราว์เซอร์และแพลตฟอร์มที่หลากหลาย

getUserMedia พร้อมใช้งานแล้วใน Chrome โดยไม่ต้องตั้งค่าสถานะ รวมทั้ง Opera และ Firefox Nightly/Aurora (แต่สำหรับ Firefox คุณจะต้องตั้งค่ากำหนด) ลองดูการสาธิตการใช้ getUserMedia แบบหลายเบราว์เซอร์ที่ simpl.info/gum และดูตัวอย่างน่าทึ่งของ Chris Wilson ในการใช้ getUserMedia เป็นอินพุตสำหรับ Web Audio

ตอนนี้ webkitRTCPeerConnection อยู่ใน Chrome เวอร์ชันเสถียรและไม่ต้องแฟล็กแล้ว การสนับสนุนเซิร์ฟเวอร์ TURN พร้อมให้บริการใน Chrome 24 ขึ้นไป มีการสาธิตการใช้งาน RTCPeerConnection ของ Chrome แบบง่ายๆ ที่ simpl.info/pc และแอปพลิเคชันวิดีโอแชทที่ยอดเยี่ยมที่ apprtc.appspot.com (คำอธิบายเกี่ยวกับชื่อ: หลังจากใช้ซ้ำหลายครั้ง ปัจจุบันใช้ชื่อว่า webkitRTCPeerConnection ชื่อและการติดตั้งใช้งานอื่นๆ ถูกเลิกใช้งานแล้ว เมื่อกระบวนการมาตรฐานมีความเสถียรแล้ว เราจะนำคำนำหน้า webkit ออก)

นอกจากนี้ WebRTC ยังมีการใช้งานสำหรับเดสก์ท็อปใน Firefox Nightly และ Aurora รวมถึงสำหรับ iOS และ Android ผ่านเบราว์เซอร์ Bowser ของ Ericsson อีกด้วย

DataChannel

DataChannel คือ WebRTC API สําหรับการสื่อสารระหว่างข้อมูลที่กําหนดเองที่มีประสิทธิภาพสูง มีเวลาในการตอบสนองต่ำ และสื่อสารระหว่างเครื่องได้ API นั้นคล้ายกับ WebSocket แต่การสื่อสารจะเกิดขึ้นโดยตรงระหว่างเบราว์เซอร์ ดังนั้น DataChannel จึงสามารถทำงานเร็วกว่า WebSocket ได้มากแม้ว่าจะต้องใช้เซิร์ฟเวอร์แบบรีเลย์ (TURN) ก็ตาม (เมื่อ "การเจาะรู" เพื่อรับมือกับไฟร์วอลล์และ NAT ล้มเหลว)

DataChannel วางแผนสำหรับ Chrome เวอร์ชัน 25 โดยมีการแจ้งว่าไม่เหมาะสม แต่อาจขาดเวอร์ชันนี้ไป มีไว้สำหรับการทดลองเท่านั้น อาจทำงานได้ไม่สมบูรณ์ และจะไม่สามารถสื่อสารได้เมื่อใช้ Firefox DataChannel ในเวอร์ชันต่อๆ ไปควรมีความเสถียรมากกว่าและจะมีการนําไปใช้เพื่อให้สามารถโต้ตอบกับ DataChannel ใน Firefox ได้

Firefox Nightly/Aurora รองรับ mozGetUserMedia, mozRTCPeerConnection และ DataChannel (แต่อย่าลืมตั้งค่า about:config ของคุณด้วย)

นี่คือภาพหน้าจอของ DataChannel ที่ทํางานใน Firefox

ภาพหน้าจอ Firefox DataChannel

การสาธิตนี้อยู่ที่ http://mozilla.github.com/webrtc-landing/data_test.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);
        }

สามารถดูข้อมูลเพิ่มเติมและการสาธิตการใช้งาน Firefox ได้จากบล็อก hacks.mozilla.org การสนับสนุน WebRTC พื้นฐานมีกำหนดเปิดตัวใน Firefox 18 ในช่วงต้นปี 2013 และวางแผนรองรับฟีเจอร์เพิ่มเติม ซึ่งรวมถึง getUserMedia และข้อจำกัด createOffer/Answer ตลอดจน TURN (เพื่ออนุญาตให้มีการสื่อสารระหว่างเบราว์เซอร์ที่อยู่หลังไฟร์วอลล์)

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ WebRTC โปรดดูที่การเริ่มต้นใช้งาน WebRTC นอกจากนี้ยังมีหนังสือ WebRTC ซึ่งให้บริการในรูปแบบฉบับพิมพ์และ eBook หลายรูปแบบ

ข้อจำกัดความละเอียด

มีการใช้ข้อจำกัดใน Chrome 24 ขึ้นไป ค่าเหล่านี้ใช้เพื่อกำหนดค่าความละเอียดของวิดีโอสำหรับการเรียก getUserMedia() และ RTCPeerConnection addStream() ได้

ดูตัวอย่างได้ที่ simpl.info/getusermedia/constraints ลองใช้ข้อจำกัดต่างๆ ด้วยการตั้งค่าเบรกพอยท์และปรับค่า

Gocha 2 รายการ... ข้อจำกัด getUserMedia ที่ตั้งค่าไว้ในแท็บเบราว์เซอร์ 1 แท็บจะส่งผลต่อข้อจำกัดสำหรับทุกแท็บที่เปิดในภายหลัง การตั้งค่าข้อจำกัดที่ไม่อนุญาตจะทำให้มีข้อความแสดงข้อผิดพลาดที่ค่อนข้างซับซ้อน ดังนี้

navigator.getUserMedia error:  NavigatorUserMediaError {code: 1, PERMISSION_DENIED: 1}

ในทำนองเดียวกันข้อผิดพลาดนี้ถ้าคุณพยายามใช้ getUserMedia จากระบบไฟล์ในเครื่อง ไม่ใช่บนเซิร์ฟเวอร์

กำลังสตรีมการจับภาพหน้าจอ

การจับภาพแท็บพร้อมใช้งานแล้วใน Chrome Dev เวอร์ชัน วิธีนี้ช่วยให้สามารถจับภาพส่วนที่มองเห็นได้ของแท็บเป็นสตรีม ซึ่งสามารถใช้ภายในเครื่อง หรือใช้ร่วมกับ addStream() ของ RTCPeerConnection ได้ มีประโยชน์มากสำหรับ Sceencasting และการแชร์หน้าเว็บ ดูข้อมูลเพิ่มเติมได้ที่ข้อเสนอการบันทึกเนื้อหาในแท็บ WebRTC

โปรดโพสต์ถึงเราด้วยการแสดงความคิดเห็นเกี่ยวกับการอัปเดตนี้: เรายินดีรับฟังสิ่งที่คุณกำลังทำกับ API เหล่านี้

...และอย่าลืมรายงานข้อบกพร่องที่คุณพบที่ chromiumbugs.appspot.com