За последние несколько недель с WebRTC многое произошло. Время для обновления!
В частности, мы очень рады видеть появление WebRTC на нескольких браузерах и платформах.
getUserMedia
теперь доступен в Chrome без флагов, а также в Opera и Firefox Nightly/Aurora (хотя для Firefox вам потребуется установить настройки ). Взгляните на кроссбраузерную демонстрацию getUserMedia
по адресу simpl.info/gum — и ознакомьтесь с удивительными примерами Криса Уилсона по использованию getUserMedia
в качестве входных данных для веб-аудио.
webkitRTCPeerConnection
теперь находится в стабильной версии Chrome и не имеет флагов. Поддержка сервера TURN доступна в Chrome 24 и более поздних версиях. На сайте simpl.info/pc есть сверхпростая демонстрация реализации RTCPeerConnection в Chrome, а на apprtc.appspot.com — отличное приложение для видеочата. (Небольшое пояснение по поводу имени: после нескольких итераций оно в настоящее время известно как webkitRTCPeerConnection
. Другие имена и реализации устарели. Когда процесс стандартизации стабилизируется, префикс webkit
будет удален.)
WebRTC теперь также реализован для настольных компьютеров в Firefox Nightly и Aurora, а также для iOS и Android через браузер Ericsson Bowser .
Канал данных
DataChannel — это API WebRTC для высокопроизводительной одноранговой передачи произвольных данных с низкой задержкой. API прост и похож на WebSocket, но связь происходит напрямую между браузерами, поэтому DataChannel может быть намного быстрее, чем WebSocket, даже если требуется сервер ретрансляции (TURN) (когда «пробивание дыр» для борьбы с брандмауэрами и NAT не удается).
DataChannel запланирован для версии 25 Chrome под флагом, хотя эта версия может отсутствовать. Это будет только для экспериментов, может быть не полностью функциональным, и связь с реализацией Firefox будет невозможна. DataChannel в более поздних версиях должен быть более стабильным и будет реализован таким образом, чтобы обеспечить взаимодействие с DataChannel в Firefox.
Firefox Nightly/Aurora поддерживает mozGetUserMedia
, mozRTCPeerConnection
и DataChannel
(но не забудьте установить настройки about:config!)
Вот скриншот DataChannel, работающего в Firefox:

Эта демонстрация находится по адресу 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 , доступная в печатном виде и в нескольких форматах электронных книг.
Ограничения разрешения
Ограничения реализованы в Chrome 24 и более поздних версиях . Их можно использовать для установки значений разрешения видео для вызовов getUserMedia()
и RTCPeerConnection addStream()
.
Пример можно найти по адресу simpl.info/getusermedia/constraints . Поиграйте с различными ограничениями, установив точку останова и изменив значения.
Пара ошибок... Ограничения getUserMedia
, установленные на одной вкладке браузера, влияют на ограничения для всех вкладок, открываемых впоследствии. Установка недопустимого значения для ограничений дает довольно загадочное сообщение об ошибке:
navigator.getUserMedia error: NavigatorUserMediaError {code: 1, PERMISSION_DENIED: 1}
Аналогично ошибка, если вы попытаетесь использовать getUserMedia
из локальной файловой системы, а не на сервере!
Потоковое захват экрана
Tab Capture теперь доступен на канале Chrome Dev . Это позволяет захватывать видимую область вкладки в виде потока, который затем можно использовать локально или с помощью addStream()
RTCPeerConnection. Очень полезно для трансляции сцен и обмена веб-страницами. Дополнительную информацию см. в предложении WebRTC Tab Content Capture .
Держите нас в курсе, комментируя это обновление: нам бы хотелось услышать, что вы делаете с этими API.
...и не забывайте сообщать обо всех обнаруженных ошибках на сайте chromiumbugs.appspot.com !