#webrtc
#webrtc
Вопрос:
Я пытаюсь иметь возможность отключить (пустое видео и беззвучный звук), который отправляется другому одноранговому узлу, сохраняя при этом включенным локальный носитель.
Я хочу, чтобы у меня были кнопки ответа на вызов или отклонения. Но я не хочу ждать, пока вызываемый абонент нажмет кнопку «ответить», прежде чем я смогу отправить носитель, что вызывает небольшую задержку до появления носителя на экране. Я знаю, что могу слушать iceState
и показывать видео только тогда, когда это connected
или completed
, но я думаю, что нажатие пользователем кнопки ответа обычно дает соединению больше времени для завершения работы, поэтому я уверен, что, как правило, медиа-соединение будет уже настроено до того, как они «примут» вызов.
Для этого я отправлю медиа, но отключен, и при нажатии кнопки «ответить» я включу отправку мультимедиа.
Я пытаюсь использовать приведенный ниже код для отключения мультимедиа, но он делает это и для локальных медиа.
document.getElementById("local_video").srcObject = webcamStream;
webcamStream.getTracks().forEach(
function (track){
myPeerConnection.addTrack(track, webcamStream);
});
function initialMediaMuted(){
let videoTrackBlank;
let audioTrackBlank;
myPeerConnection.getSenders().find(function (s) {
if (s.track.kind === "video") {
videoTrackBlank = s.track;
}
if (s.track.kind === "audio") {
audioTrackBlank = s.track;
}
});
videoTrackBlank.enabled = false;
audioTrackBlank.enabled = false;
}
Может кто-нибудь, пожалуйста, подсказать мне, как я могу настроить его так, чтобы локальные носители были включены, а исходящие — отключены?
Спасибо
Ответ №1:
Проблема в том, что вы используете один и тот же MediaStreamTrack
экземпляр как для локального отображения, так и для потоковой передачи. Если вы вызываете MediaStreamTrack.clone()
для создания копии перед вызовом addTrack
, вы можете установить включенное состояние отдельно.
webcamStream.getTracks().forEach(
function (track){
const cloneTrack = track.clone();
myPeerConnection.addTrack(cloneTrack, webcamStream);
cloneTrack.enabled = false;
});
Комментарии:
1. Да, я справился с этим таким образом. Спасибо. Я приму ваш ответ