谷歌致力于推进种族平等的黑人社区。 怎么看。
此页面由 Cloud Translation API 翻译。
Switch to English

媒体捕获和约束

的WebRTC盖的媒体部分如何访问硬件能够捕获视频和音频,如摄像头和麦克风,以及如何媒体流工作。它还包括显示媒体,它是一个应用如何能做到的屏幕捕获。

媒体设备

由浏览器支持的所有摄像头和麦克风访问,并通过管理navigator.mediaDevices对象。应用程序可以获取连接设备的当前列表,也听的变化,因为很多相机和microhpones连接通过USB接口,并且可以在应用程序的生命周期中进行连接和断开。由于媒体设备可以在任何时间改变的状态,建议应用程序注册,以便设备切换到正确处理变化。

约束

当访问媒体设备,它是一种好的做法是提供尽可能详细的约束。虽然可以打开默认的摄像头和麦克风用一个简单的约束,它可能会提供一个媒体流是远离最优化的应用程序。

具体约束在限定MediaTrackConstraint对象,一个用于音频,一个用于视频。在该对象中的属性是类型ConstraintLongConstraintBooleanConstraintDoubleConstraintDOMString 。这些可以是一个特定的值(例如,数字,布尔或字符串),范围( LongRangeDoubleRange具有最小值和最大值),或与任一一个的对象idealexact的定义。对于一个特定的值时,浏览器将尝试捡东西尽可能接近。对于一个范围,将使用该范围内的最佳值。当exact指定,只有这个约束完全匹配的媒体流将被退回。

 // Camera with a resolution as close to 640x480 as possible
{
    "video": {
        "width": 640,
        "height": 480
    }
}
 

范围

 // Camera with a resolution in the range 640x480 to 1024x768
{
    "video": {
        "width": {
            "min": 640,
            "max": 1024
        },
        "height": {
            "min": 480,
            "max": 768
        }
    }
}
 

精确

 // Camera with the exact resolution of 1024x768
{
    "video": {
        "width": {
            "exact": 1024
        },
        "height": {
            "exact": 768
        }
    }
}
 

为了确定实际结构的某一轨道的媒体流的有,我们可以调用MediaStreamTrack.getSettings()它返回MediaTrackSettings当前应用。

这也可以从我们已经开了一个媒体设备更新轨道的制约,通过调用applyConstraints()的轨道上。这允许一个应用程序重新配置媒体设备,而不必首先关闭现有流。

显示媒体

即要能应用程序执行屏幕捕获和记录必须使用显示媒体API。功能getDisplayMedia()其是部分navigator.mediaDevices类似于getUserMedia()和用于打开所述显示器(或它的一部分,例如一个窗口的内容的目的)。返回MediaStream工作原理同样当使用作为getUserMedia()

用于约束getDisplayMedia()从用于常规视频或音频输入的那些不同。

 {
    video: {
        cursor: 'always' | 'motion' | 'never',
        displaySurface: 'application' | 'browser' | 'monitor' | 'window'
    }
}
 

该一小段代码片段上面显示屏幕录制特有的局限性是如何工作的。注意,这些可能不是由具有显示媒体支持所有浏览器的支持。

流和轨道

MediaStream表示媒体内容,它由轨迹(流MediaStreamTrack音频和视频的)。您可以检索所有从轨道MediaStream通过调用MediaStream.getTracks()它返回数组MediaStreamTrack对象。

MediaStreamTrack

一个MediaStreamTrackkind属性,或者是audio还是video ,显示介质的种类它代表。每个音轨可通过切换其静音enabled属性。的轨道具有布尔属性remote指示,如果它是由一个源RTCPeerConnection并从远端对等体来。