我想知道 VideoTrack 是否包含屏幕共享或网络摄像头流。我找不到任何属性,也没有合适的约束我可以应用于轨道并稍后读出。
有人知道这样做的聪明方法吗?
我想避免通过 dataChannel 发送带有类型的 streamId。
谢谢 :)
EDIT1:到目前为止没有解决方案......所以我必须通过数据通道发送streamType和StreamId
我想知道 VideoTrack 是否包含屏幕共享或网络摄像头流。我找不到任何属性,也没有合适的约束我可以应用于轨道并稍后读出。
有人知道这样做的聪明方法吗?
我想避免通过 dataChannel 发送带有类型的 streamId。
谢谢 :)
EDIT1:到目前为止没有解决方案......所以我必须通过数据通道发送streamType和StreamId
这个过程是这样工作的(以 MediaStreamTrack 为例):
如果需要,调用MediaDevices.getSupportedConstraints()
以获取支持的约束列表,它会告诉您浏览器知道哪些可约束属性。这并不总是必要的,因为当您指定它们时,任何未知的都将被简单地忽略 - 但如果您有任何您不能没有的东西,您可以首先检查以确保它们在列表。
一旦脚本知道它希望使用的一个或多个属性是否受支持,它就可以通过检查跟踪getCapabilities()
方法返回的对象来检查 API 的功能及其实现;此对象列出了每个受支持的约束以及受支持的值或值范围。
最后,applyConstraints()
调用 track 的方法来根据需要配置 API,方法是指定它希望用于它具有偏好的任何可约束属性的值或值范围。
跟踪的getConstraints()
方法返回传递给最近调用的一组约束applyConstraints()
。这可能不代表轨道的实际当前状态,因为必须调整其请求值的属性并且因为没有表示平台默认值。要获得轨道当前配置的完整表示,请使用getSettings()
.
在媒体流 API 中,MediaStream 和 MediaStreamTrack 都具有可约束的属性。