Navigator.MediaDevices.getUserMedia()使用什么相机通信标准?

时间:2018-07-17 09:01:28

标签: javascript webrtc mediadevices

有人知道用于检测与getUserMedia一起使用的相机硬件的通信标准是什么?

我认为它是MTP或类似的东西,尽管我希望每个浏览器/ OS的实现都不同,但是我已经搜索了两天,但找不到任何可靠的信息。

2 个答案:

答案 0 :(得分:7)

我很久以来一直在寻找您问题的答案。最初,我在w3.org WebRTC site上发现了这一点:

  

本文档在WebIDL中定义了一组ECMAScript API,以允许将媒体发送到另一浏览器或设备并从中接收媒体,以实现适当的实时协议集。此规范是与IETF RTCWEB组开发的协议规范 API规范一起开发的,以访问Media Capture开发的本地媒体设备特遣队

然后在"Media transport and use of RTP"网站上,我发现了以下信息:

  

5.2.4。媒体流识别:

     

实现SDP捆绑协商扩展的WebRTC端点   将使用SDP分组框架的“ mid”属性来标识媒体   流。这些端点必须实现RTP MID头扩展   在[I-D.ietf-mmusic-sdp-bundle-negotiation]中进行了介绍。

     

此头扩展使用[RFC5285]通用头扩展   框架,因此在使用前需要进行协商。

     

12.2.1。媒体来源识别:

     

每个RTP数据包流都通过唯一的同步进行标识   源(SSRC)标识符。 SSRC标识符包含在每个   RTP数据包包括RTP数据包流,还用于   在相应的RTCP报告中标识该流。 SSRC是   如第4.8节所述进行选择。多路分解的第一阶段   在单个传输层上接收到的RTP和RTCP数据包在   WebRTC端点将根据RTP数据包流将其分离   SSRC值;完成后,可以执行其他解复用步骤   确定如何以及在哪里渲染媒体。

     

RTP允许混合器或其他RTP层中间盒组合编码   来自多个媒体源的流,从中形成新的编码流   一个新的媒体源(混合器)。该新RTP中的RTP数据包   数据包流可以包括“贡献源”(CSRC)列表,   表明哪些原始SSRC促成了合并源   流。

     

如第4.1节所述,实现需要支持接收   包含CSRC列表的RTP数据包和   与中国证监会列表中的来源有关。 CSRC列表可以更改   在逐个数据包的基础上,具体取决于混合操作   执行。

     

了解哪些媒体源促成了特定的RTP数据包   如果用户界面指示哪些参与者,则可能很重要   在会话中处于活动状态。中国证监会清单中的变更包括   数据包需要使用某些API公开给WebRTC应用程序,   如果应用程序能够跟踪会话中的更改   参与。希望将CSRC值映射回WebRTC   跨此API的MediaStream身份,以避免暴露   WebRTC应用程序的SSRC / CSRC命名空间。

     

如果正在使用混音器到客户端音频级别扩展[RFC6465]   在会话中(请参阅第5.2.3节),证监会列表中的信息   通过每个贡献源的音频级别信息进行扩展。   希望将此信息公开给WebRTC应用程序   在将CSRC值映射到WebRTC MediaStream之后,使用一些API   身份,因此可以在用户界面中公开。

     

Perkins等人。将于2016年9月18日到期[第35页]

     

WebRTC的Internet草案RTP,2016年3月

WebRTC的所有传输都列在this site上。

您可以在网站"Real-Time Communication in WEB-browsers (rtcweb)"上找到IETF RTCWEB组中的所有文档。


有关更多信息:


我的结论:

  1. 会话描述协议(SDP)
  2. 实时传输协议(RTP)(可能也是)

答案 1 :(得分:4)

webrtc.org库具有一组特定于平台的粘合模块,可以在hereChrome tree中找到它们。 在Windows上,它使用MediaFoundation API(具有DirectShow的后备功能),Linux上的video4linux和Mac上的AVFoundation