这是一件事,我想做一些简单的" 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);
});
})
答案 0 :(得分:0)
似乎sourceInfos的处理不在枚举之后。你应该调用getSources()。然后(处理sourceInfos)。
答案 1 :(得分:0)
请检查应用程序对摄像机的访问权限和录音(在清单和设置中)