首页 文章

使用 websockets 访问中途的实时视频流

提问于
浏览
0

我使用碎片 mp4 和 websockets 的组合将实时视频流传输到 MSE 接管的 Web 浏览器。

我已经使用 ffmpeg 成功分割成适当的 fmp4 格式,并使用 mpeg4parser 工具检查了数据。利用 websocket 服务器,传入的数据被广播到通过 websocket 连接的所有浏览器客户端。这适用于播放和实时 streaming(using rtsp 流作为输入)。

当 ffmpeg 流启动时,客户端尝试中途访问流 i.e 时,我遇到的问题就出现了。我已将 init moov)元素保存在 websocket 服务器的队列缓冲区中。此队列缓冲区在连接时将此数据发送到每个新客户端。

我相信这些数据是正确发送的,因为浏览器控制台没有抛出“未找到媒体源元素”错误。然而,当收到广播的 moof/mdat 对时,没有视频流。

所以我想回答的几个问题是:

  1. 我有观察者,每个 moof 元素都包含一个序列号,在它的 mfhd 子元素中。这是否必须始终从 1 开始,对于中途访问的视频流,情况自然不会如此?

  2. 是否可以在浏览器 client.js 中查看数据。目前我可以看到的是我的 mediaBuffer 包含了一堆[1]。我可以在这些缓冲区中打印二进制数据吗?

  3. 从服务器端看,数据似乎以 moof/mdat 片段发送,因为从 ffmpeg 输出到 websocket 服务器的每个新数据都以 moof 元素开头。通过在控制台中打印二进制数据注意到了这一点。是否有类似的方法在客户端查看此数据。

  4. 有没有人知道为什么会这样?我遗漏了一些支离破碎的 mp4 或 ISO BMFF 格式细节。

如果有任何进一步的细节需要澄清,请告诉我,我会提供。

1 回答

  • 0

    确保您的片段包含基本媒体解码时间。然后将视频标签'currentTime'设置为收到的第一个片段的时间。

相关问题