WebRTC 的媒体部分介绍了如何访问能够进行拍摄的硬件 例如摄像头和麦克风,以及媒体流式传输方式。 工作。还介绍了显示媒体,即应用可以用来过滤屏幕的
媒体设备
访问并访问浏览器支持的所有摄像头和麦克风
通过 navigator.mediaDevices
对象管理。应用可以检索
当前已连接设备的列表并监听变化,因为许多
和麦克风通过 USB 进行连接,并可以
会在应用生命周期内断开连接由于媒体的状态
可能随时更改,因此建议您让应用注册
设备更改,以便正确处理更改。
限制条件
访问媒体设备时,最好提供详细的 设置限制条件虽然您可以打开默认相机 具有简单约束条件的麦克风,那么其传输的媒体流可能 选择最适合应用的方式
具体约束条件在 MediaTrackConstraint
对象中定义,其中一个针对
一个是音频,另一个是视频此对象中的属性类型为
ConstraintLong
、ConstraintBoolean
、ConstraintDouble
或
ConstraintDOMString
。这些值可以是具体的值(例如数字、
布尔值或字符串)、范围(LongRange
或 DoubleRange
,最小值和
最大值)或具有 ideal
或 exact
定义的对象。对于
特定值,浏览器将尝试选择尽可能接近的内容。
对于特定范围,系统将使用该范围内的最佳值。当exact
:
则只有与该限制条件完全匹配的媒体流才会被纳入
返回。
近距离
// Camera with a resolution as close to 640x480 as possible
{
"video": {
"width": 640,
"height": 480
}
}
Range
// 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()
来打开该轨道。这样,
重新配置媒体设备,而无需先关闭
现有视频流
显示媒体
希望能够执行屏幕截取和录制的应用
必须使用 Display Media 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
MediaStreamTrack
的 kind
属性为 audio
或 video
。
用于表示其所代表的媒体类型你可通过切换音量来将每个曲目静音
其 enabled
属性。曲目具有布尔值属性 remote
,用于指明
如果来源为 RTCPeerConnection
且来自远程对等方,则返回此值。