关于javascript:关于-navigatormediaDevicesgetUserMedia-的输入参数说明

42次阅读

共计 1404 个字符,预计需要花费 4 分钟才能阅读完成。

本文解说应用 SAP UI5 barcode scanner 调用本机摄像头时,在 PC 端浏览器测试时,同样是 Cordova API 不可用,进入 else 分支的执行逻辑:

如果 Cordova API 不可用,然而 isUserMediaAccessSupported 依然返回 true,则依然能够关上 scan 对话框:

/**
     * Used to detect browsers which does not have access to html5 user media api and cant use device camera
     * @private
     * @returns {boolean} true is user media access supported by html5 compatible browser
     */
    function isUserMediaAccessSupported() {return !!(window && window.navigator && window.navigator.mediaDevices && window.navigator.mediaDevices.getUserMedia);
    }

这里 window.navigator.mediaDevices.getUserMedia 的含意:

MediaDevices.getUserMedia() 办法提醒用户容许应用媒体输出,该输出生成一个 MediaStream,其轨道蕴含所申请的媒体类型。

例如,该流能够包含视频轨道(由硬件或虚构视频源(如相机、视频记录设施、屏幕共享服务等)产生)、音频轨道(相似地,由物理或 虚构音频源(如麦克风、A/D 转换器等),以及可能的其余轨道类型。

它返回一个解析为 MediaStream 对象的 Promise。如果用户回绝许可,或者匹配的媒体不可用,则别离以 NotAllowedError 或 NotFoundError DOMException 回绝承诺。

其中 getUserMedia 为浏览器原生实现。

async function getMedia(constraints) {
  let stream = null;

  try {stream = await navigator.mediaDevices.getUserMedia(constraints);
    /* use the stream */
  } catch(err) {/* handle the error */}
}

传入 getUserMediaconstraints 参数:

constraints 是一个对象,指定要申请的媒体类型,以及每种类型的任何要求。

束缚参数是一个具备两个成员的对象:视频和音频,形容申请的媒体类型。必须指定其中之一或两者。如果浏览器无奈找到合乎给定束缚的指定类型的所有媒体轨道,则返回的 Promise 会被 NotFoundError DOMException 回绝。

如果为媒体类型指定了 true,则后果流中须要蕴含该类型的轨道。如果因为任何起因不能返回一个,对 getUserMedia() 的调用将导致谬误。

尽管出于隐衷起因无法访问无关用户相机和麦克风的信息,但应用程序能够应用额定的束缚来申请它须要和想要的相机和麦克风性能。以下示意对 1280×720 相机分辨率的偏好:

{
  audio: true,
  video: {width: 1280, height: 720}
}

如果不存在此分辨率或更高分辨率的相机,则返回的 Promise 将被 OverconstrainedError 回绝,并且不会提醒用户。

正文完
 0