在我的html代码中,我有3个视频标签,在桌面上,视频可以正常工作,但是当我在移动设备上尝试时,只能工作在前两个摄像头上,当我在最后一个摄像头中指定“用户”摄像头时,会跳出下一个错误android“ Notvisibleerror:无法启动视频源”。
function enableCam() {
video = document.getElementById('video');
// Get access to the camera!
if(navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
var constraints;
var isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);
if (isMobile) {
constraints = {video: {width: {
exact: 256
},
height: {
exact: 192
}, facingMode: "user"}};
}else {
constraints = {video: {width: {
exact: 256
},
height: {
exact: 192
}, facingMode: "environment"}};
}
navigator.mediaDevices.getUserMedia(constraints).then(function(stream) {
readFile(video,stream);//This method plays the video and save the image
});
}
}
答案 0 :(得分:4)
如果getUserMedia运行过多,此错误将在iOS 13.3上发生。 13.4已修复。
此外,再次运行getUserMedia之前,停止先前的流可能会有所帮助。
ie)由于您连续两次运行getUserMedia,也许第一次捕获流,将其停止,然后以setTimeout延迟运行第二个getUserMedia可能有助于解除阻塞。
约束也可能是一个问题:传递空约束“ {}”可能会有所帮助。传递“ {audio:true,video:true}”可能也有帮助。
尝试使用其他浏览器也可能有所帮助; chrome,firefox,Safari,甚至Opera。
我有一个开放源代码的移动网络应用程序,可以使用智能手机摄像头。我不得不考虑不同浏览器,相机,电话和约束的许多特殊性。如果再次遇到问题,该代码可能会派上用场:https://github.com/steveseguin/obsninja
答案 1 :(得分:0)
您是否授予权限?
config.xml
<platform name="ios">
...
<custom-config-file parent="NSCameraUsageDescription" platform="ios" target="*-Info.plist">
<string>Access to camera to make video calls.</string>
</custom-config-file>
<custom-config-file parent="NSMicrophoneUsageDescription" platform="ios" target="*-Info.plist">
<string>Access to microphone to make calls.</string>
</custom-config-file>
</platform>
以下适用于Android: AndroidManifest.xml
<platform name="android">
...
<custom-preference name="android-minSdkVersion" value="21" />
<custom-preference name="android-targetSdkVersion" value="28" />
<custom-config-file parent="/*" target="AndroidManifest.xml">
<uses-permission android:name="android.webkit.PermissionRequest" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
</custom-config-file>
</platform>
来自
https://developers.connectycube.com/cordova/code-samples-videochat-cordova