标签: webrtc

WebRTC iOS,如何将视频通话静音

我正在 iOS 上运行 WebRTC 的演示应用程序。

但是没有像旧版 WebRTC 那样静音/取消静音的示例。

我已经搜索并找到了这个

如何在不更改框架的情况下禁用 webrtc 移动应用程序(ios)中的音频

但是最新的来源没有localStream。它添加了音频轨道和视频轨道。如果我将音轨“isEnable”设置为 FALSE。然后两个用户都听不到任何声音。

示例 用户 A 和用户 B 在通话中。我想要的是如果用户 A 静音,那么只有用户 B 听不到声音。

感谢所有帮助

mute ios webrtc

2
推荐指数
1
解决办法
1788
查看次数

Webrtc 将 ice 候选添加到远程对等点

以下是来自 google webrtc 教程的示例 webrtc 对等连接代码。这个链接。我无法正确理解 addIceCandidate() 如何使用 onIceCandidate() 将其 Ice 候选者添加到其远程对等点。event.candidate 在这里是什么意思。一个明确的解释将不胜感激

function onIceCandidate(pc, event) {   //pc1.onicecandidate
  if (event.candidate) {
    getOtherPc(pc).addIceCandidate(
      new RTCIceCandidate(event.candidate)
    ).then(
      function() {
        onAddIceCandidateSuccess(pc);
      },
      function(err) {
        onAddIceCandidateError(pc, err);
      }
    );
Run Code Online (Sandbox Code Playgroud)

javascript node.js webrtc

2
推荐指数
1
解决办法
1759
查看次数

通过打字稿在 Angular 中的类型“Blob”错误消息中不存在 getTracks

我是一个使用 angular6 的 webrtc 的新手。当我研究 WebRTC API 并构建一个简单的页面以在本地测试中显示/停止网络摄像头流时。我在开发中收到一条错误消息。有我的开发环境:

Angular 6.1.0
Angular-cli 6.1.2
打字稿 2.9.2

我构建了“停止”按钮来执行函数 stopBtn()。但是打字稿编译器会在构建应用程序时抛出错误消息:

错误 TS2339:属性“getTracks”不存在于类型“MediaStream | 斑点| 媒体资源”。“Blob”类型上不存在属性“getTracks”。

stopBtn() 函数代码:

private video: HTMLVideoElement;
.......
ngOnInit() {
  this.video = <HTMLVideoElement>this.el.nativeElement.querySelector('#video');
}
........
getDevice() {.....}
getStream() {.....}
gotStream() {.....}
.......
stopBtn() {
  if (this.video.srcObject) {
    this.video.srcObject.getTracks().forEach( stream => stream.stop());
    this.video.srcObject = null;
  }
}
Run Code Online (Sandbox Code Playgroud)

html简单代码:

<video id="video" autoplay></video>
<button id="stopbtn" type="button" (click)="stopBtn()">Stop</button>
Run Code Online (Sandbox Code Playgroud)

此页面可以正确显示流。
我已经通过 stackoverflow 或 google 搜索了许多关键字来查找此错误消息。但是没有得到任何好的答案。所以希望有人能帮我解决。谢谢你。

webrtc typescript angular angular6

2
推荐指数
1
解决办法
1474
查看次数

发送同步消息后,我在哪里可以捕获来自 Janus WebRTC 服务器的响应

将 videoroom 插件附加到 Janus 后,在“成功”回调中,我向它发送同步消息

janus.attach(
    {           
        plugin: "janus.plugin.videoroom",
        opaqueId: opaqueId,
        success: function(pluginHandle) {
            roomMaster = pluginHandle;
            var isExist = {
                "request" : "exists",
                "room" : myroom
            };

            roomMaster.send({"message": isExist})
        },
Run Code Online (Sandbox Code Playgroud)

并在控制台中从 获得响应janus.js,但在文档中告诉该插件将向我response发送消息。我不明白 - 我在哪里可以抓住它?

onmessage: function(msg, jsep){

    // is fired only after sending async requests like "join", "start" - not "exists"
    conslole.log(msg);  
}
Run Code Online (Sandbox Code Playgroud)

有人知道吗?

谢谢

javascript video-conferencing webrtc janus-gateway

2
推荐指数
1
解决办法
809
查看次数

WebRTC 远程和本地视频均以本地流显示

你好,我是 WebRTC 的新手,我试过这段代码

  const yourVideo = document.querySelector("#face_cam_vid");
 const theirVideo = document.querySelector("#thevid");

 (async () => {
 if (!("mediaDevices" in navigator) || !("RTCPeerConnection" in window)) {
  alert("Sorry, your browser does not support WebRTC.");
  return;
 }
  const stream = await navigator.mediaDevices.getUserMedia({video: true, 
  audio: true});
  yourVideo.srcObject = stream;

  const configuration = {
  iceServers: [{urls: "stun:stun.1.google.com:19302"}]
  };
const yours = new RTCPeerConnection(configuration);
const theirs = new RTCPeerConnection(configuration);

for (const track of stream.getTracks()) {
  yours.addTrack(track, stream);
}
theirs.ontrack = e => theirVideo.srcObject = e.streams[0];

yours.onicecandidate = …
Run Code Online (Sandbox Code Playgroud)

javascript webrtc

2
推荐指数
1
解决办法
2092
查看次数

WebRTC 对等连接未在 Safari 上建立,但在 Chrome、Firefox 中建立

我整理了一个快速片段来测试在同一浏览器选项卡上下文中建立 WebRTC 对等连接。

const peerConnection1 = new RTCPeerConnection({ iceServers: [ { urls: 'stun:stun.l.google.com:19302' } ] });
peerConnection1.addEventListener('signalingstatechange', _ => log('1 signaling state ' + peerConnection1.signalingState));
peerConnection1.addEventListener('icegatheringstatechange', _ => log('1 ICE gathering state ' + peerConnection1.iceGatheringState));
peerConnection1.addEventListener('connectionstatechange', _ => log('1 connection state ' + peerConnection1.connectionState));

const peerConnection2 = new RTCPeerConnection({ iceServers: [ { urls: 'stun:stun.l.google.com:19302' } ] });
peerConnection2.addEventListener('signalingstatechange', _ => log('2 signaling state ' + peerConnection1.signalingState));
peerConnection2.addEventListener('icegatheringstatechange', _ => log('2 ICE gathering state ' + peerConnection1.iceGatheringState));
peerConnection2.addEventListener('connectionstatechange', _ => log('2 …
Run Code Online (Sandbox Code Playgroud)

javascript safari mobile-safari sdp webrtc

2
推荐指数
1
解决办法
3993
查看次数

无法从 RTCPeerConnection 获取 IP V4 地址 - chrome

我需要从 Web 应用程序获取客户端本地 IP 地址。

为此,我使用标准的 RTCPeerConnection 实现来获取。但是返回的ice候选并没有携带IP V4地址,而是一个看起来像guid的地址:asdf-xxxx-saass-xxxx.local

但令人惊讶的是,这个chrome 扩展程序能够在同一台机器和浏览器上获取相同的内容。

注意:我在 Web 应用程序中使用的代码与扩展的代码相同

这是相同的html代码:

<html>

<head>

    <script type="text/javascript" src="https://code.jquery.com/jquery-1.11.1.js"></script>

    <script type="text/javascript">

        function logit(msg) {
            var dt = new Date(); var time = dt.getHours() + ":" + dt.getMinutes() + ":"
                + dt.getSeconds();
            console.log(time + " " + msg);
        };

        function getChromeVersion() {
            try {
                var raw = navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);
                return raw ? parseInt(raw[2], 10) : false;
            } catch (e) {
                return null;
            }
        }

        function getChromeManifest() {
            return chrome.runtime …
Run Code Online (Sandbox Code Playgroud)

google-chrome webrtc rtcpeerconnection

2
推荐指数
1
解决办法
4630
查看次数

WebRTC(简单对等)+ STUN 没有额外的信号?

我正在尝试使用简单对等库来建立浏览器到浏览器的 WebRTC 连接(数据通道)。我的理解是(也许我有一些误解),为了让两个浏览器通过 WebRTC 连接,它们必须交换 SDP 数据并执行 NAT 遍历。为了做到这一点,可以实现一个 STUN 服务器。

在 simple-peer 库中,他们声明 simple-peer 没有实现信令协议,但它确实提供了一种提供 STUN/ICE 服务器的方法。考虑来自其网格示例的以下三个 HTML 文件:

peer1.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Peer1</title>
</head>
<body>
<script src="../../js/simplepeer.min.js"></script>
<script>
    // These are peer1's connections to peer2 and peer3
    var peer2 = new SimplePeer({ initiator: true, config: {
            iceServers: [
                {urls: 'stun:stun.a-mm.tv:3478'}
            ]
        } })
    var peer3 = new SimplePeer({ initiator: true, config: {
            iceServers: [
                {urls: 'stun:stun.a-mm.tv:3478'}
            ]
        } })

    peer2.on('signal', data => {
        console.log(data) …
Run Code Online (Sandbox Code Playgroud)

javascript websocket webrtc simple-peer

2
推荐指数
1
解决办法
2346
查看次数

iOs 13 上的 Chrome 78 未定义 navigator.mediaDevices

我正在使用运行 iOs 13 的第 5 代 iPad,当我访问此链接时:https : //webrtc.github.io/samples/src/content/devices/input-output/

  • 使用Chrome 78不起作用
  • 使用Safari 13它可以正常工作

navigator.mediaDevices在 iOs 13 上使用Chrome 78似乎未定义,但在 Windows 10 上使用Chrome 78定义...

有没有人有同样的问题?有什么替代方法可以让它在 iOs 上与 Chrome 一起使用?

safari google-chrome ios webrtc mediadevices

2
推荐指数
1
解决办法
2190
查看次数

防火墙中应该允许哪些端口使用 TURN 服务器?

我想在我们公司的服务器上搭建一个turn server(coturn)。而且我不确定外部访问应该允许哪些端口。8443 是必须的,使用 WebRTC。3478 是凭证使用的必要条件。但是TURN服务器使用的端口数不胜数,是否需要在防火墙中允许它们?或者应该允许哪些端口使用CoTURN没有问题?

webrtc turn coturn

2
推荐指数
1
解决办法
1万
查看次数