如何测试两个 MediaStreams 的相等性?

How can I test the equality of two MediaStreams?

我想知道是否有办法确定两个 MediaStreams 是否 相等

"equal" 是什么意思?

我想确定这两个流是否使用相同的硬件源(使用相同的麦克风和摄像头)。 使用与 streamA 完全相同的约束获取 streamB 将意味着它们是相等的。

这是我到目前为止尝试过的方法:

  1. 通过 MediaStream 比较 id 例如:streamA.id == streamB.id 根据 to the spec:

When a MediaStream object is created, the User Agent must generate an identifier string, and must initialize the object's id attribute to that string. A good practice is to use a UUID [rfc4122], which is 36 characters long in its canonical form. To avoid fingerprinting, implementations should use the forms in section 4.4 or 4.5 of RFC 4122 when generating UUIDs.

  1. 比较 MediaStreamTracksid - 同样的故事,每个轨道生成一个 UUID。

  2. 比较 labels 轨道,在当前 Chrome 中包含 names/identifiers 硬件。这与我正在寻找的非常接近,however(强调我的):

User Agents may label audio and video sources (e.g., "Internal microphone" or "External USB Webcam"). The label attribute must return the label of the object's corresponding source, if any. If the corresponding source has or had no label, the attribute must instead return the empty string

我可以采用其他方法吗?我是否应该永远不会遇到比较两个媒体流的情况?你说我可以信任 label 属性吗?

感谢您的宝贵时间。

groupId together with kind 可能是您将得到的最接近的东西。直到您在同一台设备上获得多个 mics/cams...