我使用 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) 邀请请求始终失败并显示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) 我正在尝试使用 WebRTC 开发一个 Web 应用程序,并且我正在通过 WebRTC 从网络摄像头获取视频,我想使用浏览器在 Facebook 和 YouTube 上进行直播 我已经搜索了 python 和 Node js 库,但没有找到任何图书馆。我想构建一个像Streamyard.com这样的应用程序。我看过 ffmpeg
我使用了 getDisplayMedia() API。我想在单击停止共享按钮时运行一些代码。
我正在学习 WebRTC,并在 MDN 上发现了这个演示应用程序,它无法在我的 Firefox 76.0.1 上运行。控制台错误是:ReferenceError: RTCPeerConnection is not defined。我尝试通过在控制台中创建RTCPeerConnection:的新实例来验证这一点new RTCPeerConnection(),果然,它不存在。这似乎是 Firefox 独有的问题。我在其他浏览器上没有收到此错误。我是否需要在浏览器中启用某些功能才能使用此 API?我很难相信 Firefox 会不支持这个 API。
哦,这不仅仅是RTCPeerConnection。其他对等连接 API 也都不RTCIceCandidate可用。
我使用 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这让我认为连接良好。
我尝试使用peerJS进行webRTC视频会议并成功进行了一对一会议,我需要一些帮助来推进多方视频会议,在这里我尝试解释我做了什么,请从我罢工的地方提供帮助
在这里我发布我的完整代码,以便任何人都可以通过修改一些信息来使用,
意图
达到了
我的情况
待处理并需要帮助
如何在 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)我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)
音频显示正在播放,但我听不到任何音频播放。
我创建目的地的方式有问题吗?
我试图在对等连接中发送两个调用,并且我想通过 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)
我正在努力使用 WebRTC 设置最多 8 个对等方的群组通话。
假设对等方需要设置 7 个 RTCPeerConnections 才能加入群组通话。我想知道是否可以在中央位置onicecandidate跟踪客户端并将其重用于每个新的 RTCPeerConnection,而不是依赖每个 RTCPeerConnection 的事件。icecandidates(例如,信令服务器将跟踪对等方的完整 ICE 候选者,并在其他对等方需要时立即与他们共享)。
我不确定每个客户端的“icecandidates”平均数量是多少,但是通过icetrickle过程,似乎需要对信令服务器进行许多重复的http或websocket调用,以便在任何2个对等点之间交换icecandidates 。
因此,我想知道是否可以在本地“积累”ice 候选者,并在需要与新对等点建立新的 RTCPeerConnection 时重用它们。
webrtc ×10
javascript ×6
peerjs ×2
audio ×1
firefox ×1
freeswitch ×1
ios ×1
jssip ×1
mediastream ×1
python ×1
sip ×1
swift ×1
webrtc-ios ×1