WebRTC-在浏览器中处理本地媒体(media)-2

上一篇文章简要介绍了WebTRC框架,在这篇文章中我们来看一下怎么用WebRTC API开发网页应用。开发者可以用的api逻辑上可以分为以下三种:

  1. 获得和管理本地和远程的音频和视频。MediaStream接口(和html5的audio 和 video标签关联)。
  2. 管理p2p连接。RTCPeerConnection接口。
  3. 管理其它数据。RTCDataChannel接口。

以下十步描述了用WebRTC API进行P2P通信的过程:

  1. 在本地端创建 MediaStream 对象(包括麦克风和摄像头等)。
  2. 在 MediaStream 中获得URL blob。
  3. 用获得的URL blob进行预览。
  4. 创建RTCPeerConnection对象。
  5. 把本地流媒体附加到新创建的连接中。
  6. 把本地会话描述发送给远程端。
  7. 接收从远程端的会话描述。
  8. 处理会话描述并把远程流媒体附加到RTCPeerConnection连接中。
  9. 从远程流媒体中获得URL blob。
  10. 用URL blob播放远端音频或视频。

下面是一个例子(捕获本地视频并预览):

index.html

<!DOCTYPE html>
<html>
<head>
	<title>getUserMedia示例</title>
</head>

<body>
<div id="mainDiv">
 	<h1><code>getUserMedia()</code> 示例</h1>
 	<p>在示例中, 我们简单的调用 <code>getUserMedia()</code> 并在HTML5中显示摄像头捕获的视频 
	</p>
 	<video autoplay></video>

 	<script src="getUserMedia.js"></script>
</div>
</body>

</html>

getUserMedia.js

// 注意getUserMedia()在各浏览器中的区别
// Opera --> getUserMedia
// Chrome --> webkitGetUserMedia
// Firefox --> mozGetUserMedia
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;

// 只获取video:
var constraints = {audio: false, video: true};
var video = document.querySelector("video");

function successCallback(stream) {
    // Note: make the returned stream available to console for inspection
    window.stream = stream;
    
if (window.URL) {
        // Chrome浏览器: URL.createObjectURL() 把 MediaStream 转为 blob URL
        video.src = window.URL.createObjectURL(stream);
    } else {
        // Firefox和Opera: 可以直接把视频源设置为stream
        video.src = stream;
    }
    // 播放
    video.play();
}

function errorCallback(error){
    console.log("navigator.getUserMedia error: ", error);
}

navigator.getUserMedia(constraints, successCallback, errorCallback);

结果

技术分享


技术分享

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。