1

从软件工程中引入这一点。被告知这个问题可能更适合stackoverflow。

我正在向另一个对等方发送视频数据流,并希望重新组合该数据并使该流成为视频元素的源。我使用 npm 包RecordRTC记录数据,并且每 1 秒得到一个 Blob 数据。

我通过 WebRTC 数据通道发送它,最初尝试使用MediaSource API 重新组合数据,但事实证明 MediaSource 不支持 mimetype 为video/webm;codecs=vp8,pcm. 关于如何重新组装这个流有什么想法吗?是否可以修改 MediaSource API?

我对这个数据流的唯一要求是音频使用 pcm 编码,但如果您有任何想法或问题,请告诉我!

PS我认为基于意见的质疑不适合stackoverflow,所以这就是我首先在那里发布的原因。

4

1 回答 1

1

处理此问题的最简单方法是通过服务器代理流,您可以将流作为 HTTP 响应返回。然后,你可以做一些简单的事情:

<video src="https://example.com/your-stream"></video>

当然,缺点是现在您必须支付带宽成本,因为连接不再是点对点的。

如果您可以使用 Service Worker 并让它从您从对等方接收的数据中返回伪造的 HTTP 响应,那就太好了。不幸的是,浏览器开发人员通过在用户重新加载页面或使用隐私模式时禁用它来削弱 Service Worker 标准。(似乎他们认为 Service Worker 只对缓存有用。)

另外,关于 WebRTC 的注释......你在做什么很好。您不想使用普通的 WebRTC 媒体流,因为它们不仅是有损压缩的,而且会丢弃片段以优先考虑保持实时而不是质量。这听起来不像你想要的。

我一直在想——原始媒体流是从 getusermedia 之类的东西返回的,它是什么格式的?

MediaStream 是原始数据,但不能直接访问。如果将 MediaStream 附加到 Web 音频 API 图形,则捕获的声卡的任何格式都将转换为 32 位浮点 PCM。此时,您可以使用脚本处理器节点来捕获原始 PCM 数据。

于 2020-12-01T17:53:48.743 回答