webrtc开始使用webrtc


备注

WebRTC是一个免费的开放式项目,通过简单的API为浏览器和移动应用程序提供实时通信(RTC)功能。 WebRTC组件已经过优化,可以最好地满足此目的。

检查以下链接以获取有关WebRTC的更多信息
webrtc.org
webrtc架构
在这里查看现场演示

使用getUserMedia()API,Hello WebRTC访问您的音频和视频!

navigator.mediaDevices 是目前适用于Chrome和FF的常用方法,用于获取用户媒体。

一个承诺的回调,它会在成功时返回本地流

navigator.mediaDevices.getUserMedia({ audio: true, video: true })
    .then(stream => {
        // attach this stream to window object so you can reuse it later
        window.localStream = stream;
        // Your code to use the stream
    })
    .catch((err) =>{
        console.log(err);
    });
 

您可以将音频和视频约束传递给getUserMedia,以控制捕获设置,如分辨率,帧速率,设备首选项等。

将流附加到视频元素

// Set the video element to autoplay to ensure the video appears live
videoElement.autoplay = true;
// Mute the local video so the audio output doesn't feedback into the input
videoElement.muted = true;
// attach the stream to the video element
 

停止视频和音频

localStream.getTracks().forEach((track) => {
    track.stop();
});
 

只停止音频

localStream.getAudioTracks()[0].stop();
 

只停止视频

localStream.getVideoTracks()[0].stop();
 

现场演示

WebRTC简介

WebRTC是一个开放的Web框架,可在浏览器中启用实时通信。它包括用于网络上高质量通信的基本构建模块,例如用于语音和视频聊天应用的网络,音频和视频组件。

这些组件在浏览器中实现时,可以通过JavaScript API访问,使开发人员能够轻松实现自己的RTC Web应用程序。

WebRTC工作正在W3C的API级别和IETF的协议级别进行标准化。

  • Web成功的一个关键因素是其核心技术(如HTML,HTTP和TCP / IP)是开放且可自由实现的。目前,没有免费的,高质量的完整解决方案可用于在浏览器中进行通信。 WebRTC实现了这一点。
  • 已经集成了过去8年以来在数百万个端点上部署的同类最佳语音和视频引擎。 Google不会为WebRTC收取版税。
  • 包括和抽象关键NAT和防火墙遍历技术,使用STUN,ICE,TURN,RTP-over-TCP和支持代理。
  • 建立在Web浏览器的基础上:WebRTC通过提供直接映射到PeerConnection的信令状态机来抽象信令。因此,Web开发人员可以为其使用场景选择所选择的协议(例如,但不限于SIP,XMPP / Jingle等)。

这里了解有关WebRTC的更多信息

设置基于WebRTC的通信系统

要设置基于WebRTC的通信系统,您需要三个主要组件:

  1. WebRTC信令服务器

    为了建立WebRTC连接,对等体需要联系信令服务器,然后信令服务器提供对等体建立对等连接所需的地址信息。信令服务器例如:

    • signalmaster :基于JavaScript的轻量级信令服务器
    • NextRTC :基于Java的信令服务器
    • Kurento :全面的WebRTC框架
    • Janus :通用WebRTC网关
  2. WebRTC客户端应用程序

    客户端通过JavaScript API访问浏览器的WebRTC实现,或使用WebRTC库(即作为桌面或移动应用程序的一部分)。为了建立与对等体的连接,客户端首先需要连接到信令服务器。 WebRTC客户端的示例如下:

  3. STUN / TURN服务器

    用于NAT的会话遍历实用程序(STUN)使对等方能够交换地址信息,即使它们位于采用网络地址转换(NAT)的路由器之后。如果网络限制完全阻止对等端直接通信,则通过NAT(TURN)服务器周围遍历使用中继来路由流量。您可以在http://www.avaya.com/blogs/archives/2014/08/understanding-webrtc-media-connections-ice-stun-and-turn.html找到有关STUN和TURN的详细图形说明。 WebRTC STUN / TURN服务器的示例如下:

    • coturn结合了STUN和TURN,通常是完全成熟的WebRTC基础设施的一部分。
    • Janus WebRTC Gateway附带一个集成的STUN / TURN服务器。