当前位置: 首页 > Web前端 > JavaScript

浅谈WebRTCAPInavigator.mediaDevices.getUserMedia

时间:2023-03-27 00:30:34 JavaScript

的返回类型如下图,我在项目中使用了SAPUI5前端框架的BarCodescanner控件。单击扫描按钮后,执行以下逻辑:navigator.mediaDevices.getUserMedia(defaultConstraints).then(function(stream){if(oZXingScannerAPI){openBarcodeScannerDialogContains();}else{oScanDialog.getModel().setProperty("/isNoScanner",true);openBarcodeInputDialog();}})getUserMedia返回值是一个Promise,其履行处理程序在成功获取请求的媒体后接收MediaStream对象。该对象在调试器中显示如下:ExecuteopenBarcodeScannerDialogContains:CallDialog.open:oZXingScannerAPI.decodeFromConstraints:ZXing.js位于/sap/ndc/thirdparty/ZXing.js,是Microsoft的版权来自评论:扫描window是通过sapNdcRTCDialogOverlayLine实现的:可以从Chrome网络选项卡中看到ZXing.js的加载行为。ZXing(“斑马线”)是一个开源的多格式一维/二维条码图像处理库,用Java实现并可移植到其他语言。https://github.com/zxing-js/l...MediaDevices.enumerateDevices()MediaDevices方法enumerateDevices()请求可用的媒体输入输出设备列表,如麦克风、摄像头、耳机等。返回的Promise解析为描述设备的MediaDeviceInfo数组。对特定设备的访问由权限API控制。返回的设备列表将省略任何未授予适当权限的设备,包括:麦克风、摄像头、扬声器选择(用于输出设备)等。Promise在Promise完成时接收MediaDeviceInfo对象数组。数组中的每个对象都描述了一个可用的媒体输入和输出设备(只有被授予权限的设备类型才是“可用的”)。顺序很重要-默认捕获设备将首先列出。如果枚举失败,则Promise被拒绝。下面的代码是枚举当前运行环境下所有摄像头设备id的例子:return;}//列出摄像头和麦克风"id="+device.deviceId);});}).catch(function(err){console.log(err.name+":"+err.message);});上面的代码在我的电脑上输出:videoinput:FaceTimeHDCamera(Built-in)id=csO9c0YpAf274OuCPUA53CNE0YHlIr2yXCi+SqfBZZ8=audioinput:default(Built-inMicrophone)id=RKxXByjnabbADGQNNZqLVLdmXlS0YkETYCIbg+audioxphonnvM=BuiltinMicroxphonnvMr2/xw1xUPIyZunfV1lGrKOma5wTOvCkWfZ368XCndm0=