gpt4 book ai didi

javascript - OpenTok 1 的问题 :1 conversations

转载 作者:行者123 更新时间:2023-12-03 10:20:13 24 4
gpt4 key购买 nike

我正在尝试跨浏览器进行 1:1 opentok 对话。

有两个 Angular 色:
一位邀请发布者和一位受邀者。目的是让这两个人进行一对一的对话。

session 正在正确进行,受邀者连接到流。受邀者接收发布者的视频流并将其添加到其容器中。然后他开始发布到同一 session 。
所以被邀请者现在可以看到两个视频。(耶)...

但是,发布者只能看到他自己的视频。我根本无法检测受邀者发布的流。

发布者功能如下:

function startVideoHost(sessionId, apiKey, token) {
var replacementElementId = "localVideo";
if (OT.checkSystemRequirements() == 1) {
publisher = OT.initPublisher(replacementElementId);
publisher.on({
streamCreated: function (event) {
$('.videoWindow').show();
console.log("Publisher started streaming.");
},
streamDestroyed: function (event) {
console.log("Publisher stopped streaming. Reason: "
+ event.reason);
}
});

// this is kinda where id hope the publisher would detect the guest stream

session = OT.initSession(apiKey, sessionId);
session.on("streamCreated", function(event) {
session.subscribe(event.stream, remoteVideos);
});
session.connect(token, function (error) {
if (session.capabilities.publish == 1) {
session.publish(publisher);
} else {
console.log("You cannot publish an audio-video stream.");
}
});
} else {
console.log("The client does not support WebRTC.");
}
}

受邀者功能如下:

function startVideoGuest(sessionId, apiKey, token) {
if (OT.checkSystemRequirements() == 1) {
var session = OT.initSession(apiKey, sessionId);
session.on("streamCreated", function(event) {
session.subscribe(event.stream, remoteVideos);
});
session.connect(token, function(error) {
if (error) {
console.log("Error connecting: ", error.code, error.message);
} else {
$('.videoWindow').show();
var replacementElementId = "localVideo";
publisher = OT.initPublisher(replacementElementId);
publisher.on({
streamCreated: function (event) {
console.log("Publisher started streaming.");
},
streamDestroyed: function (event) {
console.log("Publisher stopped streaming. Reason: "
+ event.reason);
}
});
console.log("Connected to the session.");
}
});
}

}

有人知道为什么我没有将受邀者视频流返回给发布商吗?

最佳答案

我看到的一个问题是“受邀者”调用 OT.initPublisher() ,这会触发受邀者网络摄像头开始录制视频并在受邀者的 DOM 中显示该流,但受邀者实际上从未这样做过将该网络摄像头发布到 session 。这就是为什么被邀请者可以在浏览器中看到视频,但“主持人”在 session 中永远看不到该视频。

一种解决方案是在 startVideoGuest 函数的 session.connect 回调中调用 session.publish(publisher)。我修改了您的代码如下:

//.....
streamDestroyed: function (event) {
console.log("Publisher stopped streaming. Reason: "
+ event.reason);
}
});
console.log("Connected to the session.");
//I have added the line below
session.publish(publisher);
//......

需要澄清的是:每当 session 中的客户端发送视频和/或音频时,他们都是发布者。由于您似乎需要“受邀者”将视频发送给“主持人”,因此“受邀者”也是发布者,并且必须调用 session.publish。客户端可以同时是发布者和订阅者。它们是可选属性,而不是专有 Angular 色。

关于javascript - OpenTok 1 的问题 :1 conversations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29678634/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com