getUserMedia()
very simple demo
With this example, we simply call getUserMedia()
and display the received stream inside an HTML5
View page source to access both HTML and javascript code...
这一节开始,我们通过JavaScript API来开发简单的Web应用程序来学习WebRTC框架。WebRTC框架提供的API既可以用于实现简单的功能,比如一对一的视频、音频通话。也有足够的灵活性可以让有经验的开发人员实现各种复杂的功能。WebRTC为开发人员提供的API大体上可以分为三类:
MediaStreamInterface
RTCPeerConnection interface
RTCDataChannel interface
使用WebRTC API的基本步骤由以下10步构成:
在本节中,我们会一步一步的完成上述步骤中前3步。
在W3C Media Capture and Streams文档中,定义了一个JavaScript API的集合,通过这些API,应用程序可以向平台请求音频和视频流,也可以操作和处理流数据。
MediaStream接口用于表示多媒体数据的流。流的方向可以是输入也可以是输出,可以来自本地也可以来自远端。需要注意的是,一个MediaStream可以包含0个或者多个track。每个track则是一个MediaStreamTrack对象,这个对象代表某一种多媒体源。一个MediaStreamTrack包含的内容由一个或多个channel构成。如下图所示的一个MediaStream有一个视频track和两个独立的音频(左右channel)track组成。
在W3C Media Capture and Streams API文档中,定义了getUserMedia()和createObjectUrl()方法,接下来我们对这两个方法进行简单的介绍。
getUserMedia() API使用开发人员可以获取对本地多媒体设备的使用。通过这个方法设置一些约束和在异步操作的回调函数。
getUserMedia(constraints, successCallback, errorCallback)
getUserMedia()会向用户发出使用其摄像头或音、视频输入的请求。
CreateObjectURL()方法控制浏览器创建和管理一个与本地文件或二进制对象(blob)关联的URL。
createObjectURL(stream)
这个方法在WebRTC中最典型的应用是从MediaStream对象创建一个blob URL供HTML页面使用。
接下来我们通过一个简单的HTML+JavaScript网页来使用getUserMeida() API,通过这个网页访问本地摄像头并显示本地视频到网页之中。
getUserMedia.html:
getUserMedia very simple demo
getUserMedia()
very simple demo
With this example, we simply call getUserMedia()
and display the received stream inside an HTML5
View page source to access both HTML and javascript code...
getUserMedia.js
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
var constraints = {audio: false, video: true};
var video = document.querySelector("video");
function successCallback(stream) {
window.stream = stream; // make the returned stream available to console...
if (window.URL) {
video.src = window.URL.createObjectURL(stream);
} else {
video.src = stream;
}
video.play();
}
function errorCallback(error){
console.log("navigator.getUserMedia error: ", error);
}
navigator.getUserMedia(constraints, successCallback, errorCallback);
使用firefox浏览器打开getUserMedia.html:
点击“共享选中的设备“打开摄像头: