我正在尝试开发一个视频chatroulette平台,我使用Peer和AJAX、PHP和MYSQL来管理后端部分,即会话。
因此,当我单击“现在聊天”时,我将被重定向到video.php,将执行以下AJAX代码:
function searchSession(){
$.ajax({
type:"post",
url:"php/enterInVideoSession.php",
data:
{
},
cache:false,
success: function (html)
{
console.log(html)
var json = JSON.parse(html);
if(json.event == 'make'){
createRoom(json.sessionId)
}else if(json.event == 'join'){
joinRoom(json.sessionId)
}
}
});
return false;
}因此,如果没有找到会话,则函数将返回' make ',因此我们将使用ajax调用返回的会话id创建一个新会话:
function createRoom(room) {
navigator.mediaDevices.getUserMedia({video: true, audio: true}).then( stream => {
window.localStream = stream;
window.localAudio.srcObject = stream;
window.localAudio.autoplay = true;
}).catch( err => {
console.log("u got an error:" + err)
});
console.log("Creating Room")
room_id = PRE + room + SUF;
peer = new Peer(room_id)
peer.on('open', (id) => {
console.log("Peer Connected with ID: ", id)
navigator.getUserMedia({ video: true, audio: true }, (stream) => {
local_stream = stream;
setLocalStream(local_stream)
}, (err) => {
console.log(err)
})
notify("Waiting for peer to join.")
})
peer.on('call', (call) => {
call.answer(local_stream);
call.on('stream', (stream) => {
setRemoteStream(stream)
})
currentPeer = call;
})
}否则,如果我们已经“加入”,我们将不得不加入一个已经创建的房间,因此sessionId将是我们必须加入的房间的ID,所以我们将通过运行以下函数来加入这个房间:
function joinRoom(room) {
console.log("Joining Room")
room_id = PRE + room + SUF;
peer = new Peer()
peer.on('open', (id) => {
console.log("Connected with Id: " + id)
navigator.mediaDevices.getUserMedia({ video: true, audio: true }, (stream) => {
local_stream = stream;
setLocalStream(local_stream)
notify("Joining peer")
let call = peer.call(room_id, stream)
call.on('stream', (stream) => {
setRemoteStream(stream);
})
currentPeer = call;
}, (err) => {
console.log(err)
})
})
}我得到的错误是会话创建函数中的错误。
TypeError:无法设置未定义的属性(设置“srcObject”)
所以问题就在这段代码中:navigator.mediaDevices.getUserMedia: navigator.mediaDevices.getUserMedia.....
当用户加入时,他将不会与其他用户共享音频或视频,您将只能看到自己的视频。
有办法解决这个问题吗?
这是url项目:https://randoot.com
发布于 2022-09-06 18:58:11
错误是不能在undefined上设置“任何”。这是这一行代码:window.localAudio.srcObject = stream;,它意味着localAudio是未定义的。它应该是什么?
先试
var element = document.createElement('audio');
document.body.appendChild(element)
window.localAudio = element;https://stackoverflow.com/questions/73518834
复制相似问题