使用websockets访问实时视频流

时间:2016-08-24 05:49:21

标签: node.js html5 websocket http-live-streaming

我正在使用碎片化mp4和websockets的组合将实时视频流流式传输到MSE接管的网络浏览器。

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

我遇到的问题发生在客户端试图中途访问流时,即ffmpeg流启动后。我已将init段(ftyp + moov)元素保存在websocket服务器的队列缓冲区中。此队列缓冲区将此数据发送到连接上的每个新客户端。

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

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

1)我有观察者认为每个moof元素在其mfhd子元素中都包含一个序列号。这是否必须始终从1开始,对于中途访问的视频流来说自然不会这样?

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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