0
修改Kurento群呼例如只发送音频,如果一个参与者没有摄像头。现在只有在使用相机时才会收到音频。当只有麦克风可用时,我收到一个DeviceMediaError。
我设法过滤摄像头设备是否连接,然后只发送音频,但这是行不通的。也许参与者应该有音频标签而不是视频标签?
编辑:它只适用于Firefox而不适用于Chrome。有任何想法吗?
修改Kurento群呼例如只发送音频,如果一个参与者没有摄像头。现在只有在使用相机时才会收到音频。当只有麦克风可用时,我收到一个DeviceMediaError。
我设法过滤摄像头设备是否连接,然后只发送音频,但这是行不通的。也许参与者应该有音频标签而不是视频标签?
编辑:它只适用于Firefox而不适用于Chrome。有任何想法吗?
变化以下行 -
sender.getOutgoingWebRtcPeer().connect(incoming, MediaType.AUDIO);
,并设置提供媒体约束视频:假在浏览器JS文件。
更新的代码 -
let constraints = {
audio: true,
video: false
};
let localParticipant = new Participant(sessionId);
participants[sessionId] = localParticipant;
localVideo = document.getElementById('local_video');
let video = localVideo;
let options = {
localVideo: video,
mediaConstraints: constraints,
onicecandidate: localParticipant.onIceCandidate.bind(localParticipant),
configuration : { iceServers : [
{"url":"stun:74.125.200.127:19302"},
] }
};
localParticipant.rtcPeer = new kurentoUtils.WebRtcPeer.WebRtcPeerSendonly(options, function(error) {
if (error) {
return console.error(error);
}
localVideoCurrentId = sessionId;
localVideo = document.getElementById('local_video');
localVideo.src = localParticipant.rtcPeer.localVideo.src;
localVideo.muted = true;
this.generateOffer(localParticipant.offerToReceiveVideo.bind(localParticipant));
});
server.js代码
在服务器端添加介质特征参数同时加入房间。
function getEndpointForUser(userSession, sender, callback) {
if (userSession.id === sender.id) {
return callback(null, userSession.outgoingMedia);
}
let incoming = userSession.incomingMedia[sender.id];
if (incoming == null) {
console.log(`user : ${userSession.id} create endpoint to receive video from : ${sender.id}`);
getRoom(userSession.roomName, (error, room) => {
if (error) {
return callback(error);
}
room.pipeline.create('WebRtcEndpoint', {mediaProfile : 'WEBM_AUDIO_ONLY'}, (error, incomingMedia) => {
if (error) {
if (Object.keys(room.participants).length === 0) {
room.pipeline.release();
}
return callback(error);
}
console.log(`user: ${userSession.id} successfully create pipeline`);
incomingMedia.setMaxAudioRecvBandwidth(0);
incomingMedia.getMaxAudioRecvBandwidth(0);
接受呼叫时添加介质特征参数。
希望这有助于。
那么我还能够使用视频,如果我有一个视频设备? – Towen
您需要检查设备的视频,然后相应地设置媒体约束。这必须在服务器和客户端端以及媒体接收器的客户端完成。您只需要编写单独的功能,仅用于音频呼叫和音频 - 视频呼叫。 –
感谢您的详细解答。我已经检查是否有凸轮或只有音频设备可用。根据这个我把约束改为假或者真。这就是我所要改变的一切吗?是仅在音频呼叫和视频呼叫之间区分服务器端的唯一步骤吗? – Towen