专业的编程技术博客社区

网站首页 > 博客文章 正文

浏览器视频通话WebRTC(浏览器看视频sourcebuffer已满怎么办)

baijin 2024-08-28 11:36:37 博客文章 13 ℃ 0 评论

WebRTC是“网络实时通信”(Web Real Time Communication)的缩写。它最初是为了解决浏览器上视频通话而提出的,即两个浏览器之间直接进行视频和音频的通信,不经过服务器。后来发展到除了音频和视频,还可以传输文字和其他数据。

Google是WebRTC的主要支持者和开发者,它最初在Gmail上推出了视频聊天,后来在2011年推出了Hangouts,语序在浏览器中打电话。它推动了WebRTC标准的确立。

WebRTC共分成三个API,分别对应上面三个作用。

  • MediaStream (又称getUserMedia)
  • RTCPeerConnection
  • RTCDataChanne

MediaStream

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="utf-8">
    <title>webrtc</title>
    <script>
        navigator.getUserMedia = navigator.getUserMedia ||
            navigator.webkitGetUserMedia ||
            navigator.mozGetUserMedia ||
            navigator.msGetUserMedia;
        if (navigator.getUserMedia) {
            let constraints = {
                audio: true,
                video: true
            };
            navigator.getUserMedia(constraints, function (stream) {
                    let video = document.querySelector('video');
                    try {
                        video.srcObject = stream;
                    } catch (error) {
                        video.src = window.URL.createObjectURL(stream);
                    }
                    video.autoplay = true;
                }, function (error) {
                    console.log("navigator.getUserMedia error: ", error);
                }
            );
        } else {
            alert("不支持")
        }
    </script>
</head>
<body>
<video></video>
</body>
</html>

RTCPeerConnectionl

RTCPeerConnection的作用是在浏览器之间建立数据的“点对点”(peer to peer)通信,也就是将浏览器获取的麦克风或摄像头数据,传播给另一个浏览器。这里面包含了很多复杂的工作,比如信号处理、多媒体编码/解码、点对点通信、数据安全、带宽管理等等。

RTCDataChannel

RTCDataChannel的作用是在点对点之间,传播任意数据。它的API与WebSockets的API相同。

由于这两个API比较复杂,一般采用外部函数库进行操作。目前,视频聊天的函数库有SimpleWebRTC、easyRTC、webRTC.io,点对点通信的函数库有PeerJS、Sharefest。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表