背景:
我正在开发一个系统,其中一部分是 WebRTC 视频(或音频)呼叫。该解决方案包括大量构建在getUserMedia和RTCPeerConnection API-s 支持之上的业务逻辑。特别是因为 Firefox 和 Chrome 以不同的方式实现了一些 API-s(例如MediaStream#getAudioTracks
,在 Firefox 上总是返回 [])。
测试要求示例:
两方正在进行音频-音频通话(双方都被询问并允许音频流(访问麦克风))。一方希望将呼叫升级为视频-视频。发生某些 UI 交互 - 与升级发起者对话以确认他的操作并向接收者提供升级提议,双方都允许相机访问。最终应该建立视频-视频通话。
问题:
如何检查 MediaStream 实例是否处于这样的状态,如果附加到<video>
element src
,那么将播放正确的信号(视频,音频)?
到目前为止的想法
最基本的测试是检查是否RTCPeerConnection#onstreamadded
被调用。问题在于,有时回调会被MediaStream
实例调用,但是当将它附加到<video>
元素时,什么都不会显示。这很可能是我的一个错误,这就是测试应该告诉我的。
是否有一些好的属性或回调RTCPeerConnection
或MediaStream
对象可以告诉我何时正确设置通信并且数据何时通过流?