簡體   English   中英

如何在SIP.js中接聽呼叫時獲取localStream(靜音麥克風)

[英]How to get localStream when receiving call in SIP.js (to mute microphone)

當我想要麥克風靜音時,我會使用我得到的媒體流

session.sessionDescriptionHandler.on('userMedia', 
onUserMediaObtained.bind(this))

function onUserMediaObtained(stream) {
    localMediaStream = stream
}

會話值來自agent.invite()方法。

但是當我接到來電時,在onInvite事件處理程序中:

agent.on('invite', onInvite(dispatch, store))

const onInvite = (dispatch, store) => session => {
  if (session.sessionDescriptionHandler) {}
  else { //always undefined here}
 }

我再次嘗試在onaccepted事件處理程序中附加事件

session.on('accepted', onAccepted(dispatch))

有sessionDescriptionHandler對象初始化,但我認為為時已晚,onUserMediaObtained未被觸發。

您可以使用會話對象將麥克風靜音/取消靜音。 似乎這兩個函數已從Session API頁面中刪除,但我很確定它仍然有效。

在這個你指定的0.7.0 API頁面https://sipjs.com/api/0.7.0/session/#muteoptions

在這里,我只是用sipjs 11做到了這一點

`const pc = session.sessionDescriptionHandler.peerConnection;
        let togglemute = `true/false`;
        // this.emit
        if (pc.getSenders) {
            pc.getSenders().forEach(function (sender) {
                if (sender.track) {
                    sender.track.enabled = !togglemute;

                }
            });
        } else {
            pc.getReceivers().forEach(function (receiver) {
                if (receiver.track) {
                    receiver.track.enabled = !togglemute;
                }
            });
        }`
let pc = this.session.sessionDescriptionHandler.peerConnection;
pc.getLocalStreams().forEach(function (stream) {
    stream.getAudioTracks().forEach(function (track) {
        try {
            track.enabled = !track.enabled;
        } catch (e) {
            toastr.error('Error occured in executing this command.');
            console.log(e);
        }
    });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM