11

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

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

4

2 回答 2

7

我很长时间都在寻找你问题的答案。起初我在w3.org WebRTC 网站上找到了这个:

本文档在 WebIDL 中定义了一组 ECMAScript API,以允许将媒体发送到另一个浏览器或实现适当的实时协议集的设备或从其接收媒体。该规范正在与IETF RTCWEB 小组开发的协议规范和用于访问由媒体捕获任务组开发的本地媒体设备的 API 规范一起开发。

然后在“媒体传输和RTP的使用”网站上,我发现了以下信息:

5.2.4。媒体流识别:

实现 SDP 捆绑协商扩展的 WebRTC 端点将使用 SDP 分组框架“中间”属性来识别媒体流。此类端点必须实现 [ID.ietf-mmusic-sdp-bundle-negotiation] 中描述的 RTP MID 标头扩展。

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

12.2.1. 媒体来源识别:

每个 RTP 数据包流由唯一的同步源 (SSRC) 标识符标识。SSRC 标识符包含在每个 RTP 数据包中,这些 RTP 数据包构成一个 RTP 数据包流,并且还用于在相应的 RTCP 报告中标识该流。SSRC 的选择如第 4.8 节所述。在 WebRTC 端点对在单个传输层流上接收的 RTP 和 RTCP 数据包进行解复用的第一阶段是根据它们的 SSRC 值分离 RTP 数据包流;一旦完成,额外的多路分解步骤可以确定如何以及在何处呈现媒体。

RTP 允许混合器或其他 RTP 层中间盒组合来自多个媒体源的编码流,以形成来自新媒体源(混合器)的新编码流。新 RTP 数据包流中的 RTP 数据包可以包括贡献源 (CSRC) 列表,指示哪些原始 SSRC 对组合源流做出了贡献。

如第 4.1 节所述,实现需要支持接收包含 CSRC 列表的 RTP 数据包和与 CSRC 列表中存在的源相关的 RTCP 数据包。根据正在执行的混合操作,CSRC 列表可以逐包更改。

如果用户界面指示哪些参与者在会话中处于活动状态,则了解哪些媒体源对特定 RTP 数据包有贡献可能很重要。如果应用程序要能够跟踪会话参与的变化,则需要使用一些 API 将数据包中包含的 CSRC 列表中的更改公开给 WebRTC 应用程序。当 CSRC 值通过此 API 时,最好将它们映射回 WebRTC MediaStream 身份,以避免将 SSRC/CSRC 名称空间暴露给 WebRTC 应用程序。

如果在会话中使用了混音器到客户端的音频电平扩展 [RFC6465](参见第 5.2.3 节),则 CSRC 列表中的信息将通过每个贡献源的音频电平信息进行扩充。在将 CSRC 值映射到 WebRTC MediaStream 身份之后,最好使用一些 API 将此信息公开给 WebRTC 应用程序,以便可以在用户界面中公开。

帕金斯等人。2016 年 9 月 18 日到期 [第 35 页]

WebRTC 的互联网草案 RTP 2016 年 3 月

WebRTC 的所有传输都列在此站点上

您可以在“WEB 浏览器中的实时通信 (rtcweb)”站点上找到来自 IETF RTCWEB 组的所有文档。


了解更多信息:


我的结论:

  1. 会话描述协议 (SDP)
  2. 实时传输协议 (RTP)(可能也是)
于 2018-07-31T20:33:12.543 回答
4

webrtc.org 库有一组特定于平台的粘合模块,可以在此处找到,也可以在Chrome 树中找到。在 Windows 上,这使用 MediaFoundation API(回退到 DirectShow)、Linux 上的 video4linux 和 Mac 上的 AVFoundation

于 2018-08-01T04:45:49.093 回答