我需要一些帮助,如果房间的发起人没有摄像头,我想使用既有音频又有摄像头的细木工。但问题是,我将视频媒体约束设置为false。现在,细木工将只有音频,摄像机没有了,我想要的是音频和视频。@Muaz Khan - RTCMultiConnection.js
var initiator = new RTCMultiConnection();
initiator.socketURL = 'url here';
initiator.session = {
audio: true,
video:false,
};
initiator.mediaConstraints = {
audio: true,
video: false
};
initiator.sdpConstraints = {
OfferToReceiveAudio: true,
OfferToReceiveVideo: true
};
initiator.iceServers = [];
initiator.iceServers.push({
urls: "urls"
});
initiator.iceServers.push({
urls: "urls",
username: "username",
credential: "credential"
});
initiator.audiosContainer = document.getElementById('audios-container');
initiator.onstream = function(event) {
var width = parseInt(initiator.audiosContainer.clientWidth / 4) - 20;
console.log("the dispatcher width is",width);
var mediaElement = getHTMLMediaElement(event.mediaElement, {
title: event.userid,
buttons: ['full-screen'],
width: width,
showOnMouseEnter: false
});
initiator.audiosContainer.appendChild(mediaElement);
setTimeout(function() {
mediaElement.media.play();
}, 5000);
mediaElement.id = event.streamid;
};
initiator.onstreamended = function(event) {
var mediaElement = document.getElementById(event.streamid);
if (mediaElement) {
mediaElement.parentNode.removeChild(mediaElement);
}
};
initiator.openOrJoin('channel-id', function(isRoomExist, roomid) {
if (!isRoomExist) {
}
});
// for participant
var connection = new RTCMultiConnection();
connection.socketURL = 'url here';
connection.session = {
audio: true,
video: true
};
connection.mediaConstraints = {
audio: true,
video: true
};
connection.sdpConstraints.mandatory = {
OfferToReceiveAudio: true,
OfferToReceiveVideo: true
};
connection.iceServers = [];
connection.iceServers.push({
urls: "urls"
});
connection.iceServers.push({
urls: "urls",
username: "username",
credential: "password"
});
connection.audiosContainer = document.getElementById('audios-container');
connection.onstream = function(event) {
var width = parseInt(connection.audiosContainer.clientWidth / 2) - 20;
console.log("the responder width is",width);
var mediaElement = getHTMLMediaElement(event.mediaElement, {
title: event.userid,
buttons: ['full-screen'],
width: width,
showOnMouseEnter: false
});
connection.audiosContainer.appendChild(mediaElement);
setTimeout(function() {
mediaElement.media.play();
}, 5000);
mediaElement.id = event.streamid;
};
connection.onstreamended = function(event) {
var mediaElement = document.getElementById(event.streamid);
if (mediaElement) {
mediaElement.parentNode.removeChild(mediaElement);
}
};
connection.openOrJoin('channel-id', function(isRoomExist, roomid) {
if (!isRoomExist) {
}
});提前谢谢你。
发布于 2018-03-09 13:41:37
未经测试,但您应该能够使用虚拟video+audio MediaStream初始化您的实时时钟连接,即使您的用户没有任何设备,也不需要他们的任何批准:
function SilentStream(videoColor) {
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d', {alpha: false});
ctx.fillStyle = videoColor || 'black';
ctx.fillRect(0,0,canvas.width, canvas.height);
const videoStream = canvas.captureStream();
const videoTrack = videoStream.getVideoTracks()[0];
const a_ctx = new (window.AudioContext || window.webkitAudioContext)();
const audioStream = a_ctx.createMediaStreamDestination().stream;
const audioTrack = audioStream.getAudioTracks()[0];
return new MediaStream([videoTrack, audioTrack]);
}
// just to show it's streaming
black.srcObject = SilentStream();
green.srcObject = SilentStream('green');<video id="black" controls autoplay></video>
<video id="green" controls autoplay></video>
https://stackoverflow.com/questions/49187162
复制相似问题