标签: webrtc

onaddstream 事件未调用

我使用 WebRTC 连接 2 个 Chrome 浏览器。我offer在第一个客户端上创建并将其发送signalR给第二个客户端,如下所示:

function initiate_call() {
callerPeerConn = new RTCPeerConnection(peerConnCfg);
callerPeerConn.ontrack = function (event) {
    console.log('caller recived new stream');
    remoteVideo.srcObject = event.streams[0];
    console.log(event);
}
navigator.mediaDevices.getUserMedia({ audio: true, video: true })
    .then(function (stream) {
        localVideo.srcObject = stream;
        for (const track of stream.getTracks()) {
            callerPeerConn.addTrack(track, stream);
        }
        return callerPeerConn.createOffer();
    })
    .then(
    function (offer) {
        var off = new RTCSessionDescription(offer);
        callerPeerConn.setLocalDescription(
            new RTCSessionDescription(off),
            function () {
                // invite to video chat
                console.log('send offer');
            },
            function …
Run Code Online (Sandbox Code Playgroud)

javascript webrtc

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

尝试使用 jsip 库向 FreeSwitch 发送邀请请求时出现“ 488 不兼容的 SDP ”

邀请请求始终失败并显示488代码。我尝试更改编解码器的优先级,但没有任何帮助。我认为 FreeSwitch 正在等待我发送到的另一个 sdp 参数。但我无法弄清楚。这是来自 jssip 调试器的日志,我刚刚将 ip 地址更改为xxxx

v=0
o=- 7053635878008465242 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE 0
a=msid-semantic: WMS LLoltKhXZLs6dDQo6D1Qg6Nhx2VbpUlEkacK
m=audio 58498 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126
c=IN IP4 x.x.x.x
a=rtcp:9 IN IP4 0.0.0.0
a=candidate:315564084 1 udp 2122260223 x.x.x.x 58498 typ host generation 0 network-id 1
a=candidate:1548541124 1 tcp 1518280447 x.x.x.x 9 typ host tcptype active generation 0 network-id 1
a=ice-ufrag:kqqf
a=ice-pwd:Bo7IzjUSw39WMok8l9Uc4BI/
a=ice-options:trickle …
Run Code Online (Sandbox Code Playgroud)

javascript sip freeswitch webrtc jssip

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

如何将视频从我的 WebRTC 直接流式传输到 Facebook RTMP 服务器?

我正在尝试使用 WebRTC 开发一个 Web 应用程序,并且我正在通过 WebRTC 从网络摄像头获取视频,我想使用浏览器在 Facebook 和 YouTube 上进行直播 我已经搜索了 python 和 Node js 库,但没有找到任何图书馆。我想构建一个像Streamyard.com这样的应用程序。我看过 ffmpeg

javascript python webrtc facebook-live-api

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

是否有监听单击“停止共享”按钮的事件?

图片网址

我使用了 getDisplayMedia() API。我想在单击停止共享按钮时运行一些代码。

screensharing webrtc

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

Firefox 76.0.1 中未定义 RTCPeerConnection

我正在学习 WebRTC,并在 MDN 上发现了这个演示应用程序,它无法在我的 Firefox 76.0.1 上运行。控制台错误是:ReferenceError: RTCPeerConnection is not defined。我尝试通过在控制台中创建RTCPeerConnection:的新实例来验证这一点new RTCPeerConnection(),果然,它不存在。这似乎是 Firefox 独有的问题。我在其他浏览器上没有收到此错误。我是否需要在浏览器中启用某些功能才能使用此 API?我很难相信 Firefox 会不支持这个 API。

哦,这不仅仅是RTCPeerConnection。其他对等连接 API 也都不RTCIceCandidate可用。

javascript firefox webrtc

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

无法使用 WebRTC 渲染远程视频

我使用 WebRTC 渲染远程视频失败。对于上下文,我使用 Janus 的流媒体插件。

我正在关注到目前为止我所读到的内容。每当peerConnection(_ peerConnection:, didAdd stream:)调用时RTCPeerConnectionDelegate,我都会创建一个远程渲染器并将其添加到委托向我提供的流的第一个 videoTrack 中,如下所示:

#if arch(arm64)
let remoteRenderer = RTCMTLVideoView(frame: self.view.frame)
remoteRenderer.videoContentMode = .scaleAspectFill
#else
let remoteRenderer = RTCEAGLVideoView(frame: self.view.frame)
#endif
            
stream.videoTracks.first?.add(remoteRenderer)
self.view.addSubview(remoteRenderer)
Run Code Online (Sandbox Code Playgroud)

但视频无法显示,只有黑屏。

我的代表还调用了peerConnection(_ peerConnection:, didChange newState:)newState,RTCIceConnectionState.connected这让我认为连接良好。

ios webrtc swift janus-gateway webrtc-ios

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

多方 - 与peerJS 进行视频会议

我尝试使用peerJS进行webRTC视频会议并成功进行了一对一会议,我需要一些帮助来推进多方视频会议,在这里我尝试解释我做了什么,请从我罢工的地方提供帮助

在这里我发布我的完整代码,以便任何人都可以通过修改一些信息来使用,

意图

  1. Alice 登录并呼叫 Bob
  2. 鲍勃加入爱丽丝通话
  3. Alice 呼叫 Carole(使用“添加呼叫”按钮)
  4. 卡罗尔加入爱丽丝呼叫
  5. 在 Alice、Bob 和 Carole 之间创建会议(使用“加入通话”按钮)

达到了

  1. Alice 登录并呼叫 Bob
  2. 鲍勃加入爱丽丝通话
  3. 爱丽丝给卡罗尔打电话
  4. 卡罗尔加入爱丽丝

我的情况

  • 注册并创建爱丽丝。
  • 爱丽丝登录。使用导航转到“呼叫”。
  • 使用“添加联系人”创建 Bob 和 Carole。
  • 转至电话簿,给 BOB 拨打了电话。
  • 鲍勃加入了爱丽丝。
  • Alice 使用 add call 再次拨打了 Carole 的电话。
  • 卡罗尔加入了爱丽丝。
  • 爱丽丝有鲍勃和卡罗尔,而鲍勃和卡罗尔却互相思念。
  • 还没有合并他们的流!

待处理需要帮助

  1. 当我单击“加入会议”时,在 Alice、Bob 和 Carole 之间创建会议 Bob 和 carole 也应该有 alice

如何在 Alice、Bob 和 Carole 之间进行会议?

/*-----------------
    indexedDB
------------------*/
var iDB;
const openiDB = indexedDB.open('webRTC',1)
openiDB.onupgradeneeded = function(){
    iDB = openiDB.result
    if(!iDB.objectStoreNames.contains('contacts')){
            iDB.createObjectStore('contacts',{keyPath:'mobile',unique:true})
    } …
Run Code Online (Sandbox Code Playgroud)

javascript webrtc peerjs

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

WebAudio 将流连接到目标不起作用

MediaStream从 获得包含音频数据WebRTC。我们称这个流为srcStream

如果我有我的 HTML

<audio id="audio" controls autoplay></audio>
Run Code Online (Sandbox Code Playgroud)

我跑

audioEl = document.querySelector("#audio")
audioEl.srcObject = srcStream
Run Code Online (Sandbox Code Playgroud)

我可以听到音频,并且可以看到音频元素开始计算秒数。

但是,我得到多个音频流,因此我想做一些更通用的操作,并将所有这些流连接到单个流。如果我跑

audioCtx = new AudioContext()
dst = audioCtx.createMediaStreamDestination()
audioEl.srcObject = dst.stream

src = audioCtx.createMediaStreamSource(srcStream);
src.connect(dst)
Run Code Online (Sandbox Code Playgroud)

音频显示正在播放,但我听不到任何音频播放。

我创建目的地的方式有问题吗?

audio webrtc mediastream web-audio-api

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

如何在 PeerJs peer.call(id, stream, [options]) 函数中设置元数据?

我试图在对等连接中发送两个调用,并且我想通过 meta_data 区分它们,但当我检查 meta_data 时,我得到 null。如何在拨打电话时添加元数据?这是我当前的代码。

let cameracall = peer.call(conn.peer,ourcamera,{
    meta_data:JSON.stringify({ "type":"camera" })
});
let screencall = peer.call(conn.peer,ourscreen,{
meta_data:JSON.stringify({"type":"help"})
}); 
Run Code Online (Sandbox Code Playgroud)

这是文档对等调用的链接

javascript serialization webrtc peerjs

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

在 WebRTC 中,ICE 候选可以在不同的 RTCPeerConnections 之间重复使用吗?

我正在努力使用 WebRTC 设置最多 8 个对等方的群组通话。

假设对等方需要设置 7 个 RTCPeerConnections 才能加入群组通话。我想知道是否可以在中央位置onicecandidate跟踪客户端并将其重用于每个新的 RTCPeerConnection,而不是依赖每个 RTCPeerConnection 的事件。icecandidates(例如,信令服务器将跟踪对等方的完整 ICE 候选者,并在其他对等方需要时立即与他们共享)。

我不确定每个客户端的“icecandidates”平均数量是多少,但是通过icetrickle过程,似乎需要对信令服务器进行许多重复的http或websocket调用,以便在任何2个对等点之间交换icecandidates 。

因此,我想知道是否可以在本地“积累”ice 候选者,并在需要与新对等点建立新的 RTCPeerConnection 时重用它们。

webrtc

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