React Native WebRTC - DOMException

时间:2017-10-30 09:53:37

标签: android sockets react-native webrtc voip

这是一件事,我想做一些简单的" Viber就像"应用程序,我需要的只是VoIP"聊天",我认为使用WebRTC会很好,因为为什么不(如果你有什么更好的请随时让我知道),问题是我花了5天时间试图解决这个问题,但事实并非如此,我无法找到任何解决方案,无论我做什么,我都会得到" DOMException"错误。

我正在使用React Native:

  "dependencies": {
    "react": "16.0.0-beta.5",
    "react-native": "0.49.3",
    "react-native-webrtc": "^1.58.3"
  }

以下是我的一些代码:

// try: #1
getUserMedia({ audio: true, video: false })
    .then((stream) => {
        console.log(stream);
    }).catch((err) => {
        console.log(err);
    })

// try: #2
getUserMedia({
    audio: true,
    video: true
}, (stream) => {
    console.log(stream);
}, (error) => {
    console.log(error);
})

// try: #3
MediaStreamTrack.getSources((sourceInfos) => {
    console.log(sourceInfos);
    let videoSourceId;
    for (const i = 0; i < sourceInfos.length; i++) {
        const sourceInfo = sourceInfos[i];
        if (sourceInfo.kind == "video" && sourceInfo.facing == (isFront ? "front" : "back")) {
            videoSourceId = sourceInfo.id;
        }
    }
    getUserMedia({
        audio: true,
        video: {
            mandatory: {
                minWidth: 500,
                minHeight: 300,
                minFrameRate: 30
            },
            facingMode: (isFront ? "user" : "environment"),
            optional: (videoSourceId ? [{ sourceId: videoSourceId }] : [])
        }
    }, function (stream) {
        localStream = stream;
        console.log("Got Local Stream");
        callback(stream);
    }, (error) => {
        console.log("Get LocalStream Fail: ", error);
    });
})

enter image description here

2 个答案:

答案 0 :(得分:0)

似乎sourceInfos的处理不在枚举之后。你应该调用getSources()。然后(处理sourceInfos)。

无论如何,请考虑the deprecation of MediaStreamTrack.getSources

答案 1 :(得分:0)

请检查应用程序对摄像机的访问权限和录音(在清单和设置中)