我的JavaScript应用程序通过Websocket连接获取WebM视频流。远程对等方发送视频帧和应用程序获取它们之间没有延迟。
我在应用程序中创建了一个MediaSource
对象,向其中“添加视频帧”,并让一个视频元素显示它:
video.src = window.URL.createObjectURL(mediaSource);
这个方案效果很好,但存在一些(不到一秒钟)的延迟。可以说,这种解决方案并不是视频通话的最佳选择。
显然,某些 WebRTC 应用程序使用 MediaStream
替代:
video.srcObject = mediaStream;
......而这些都表现出无延迟。
我无法从文档中确定浏览器是否以不同方式处理src
和srcObject
。
我找不到的另一件事是是否可以创建一个MediaStream
并向其附加缓冲区,就像使用MediaSource
一样。 我想尝试一下,只是为了检查srcObject
是否会导致我的应用程序出现前面提到的延迟。
如果我使用:
video.srcObject = mediaSource;
我遇到了以下错误:
类型错误:无法在“HTMLMediaElement”上设置“srcObject”属性:提供的值不是“MediaStream”类型