繁体   English   中英

使用WebSocket在中途访问实时视频流

[英]Accessing live video stream midway using websockets

我使用的是片段mp4和websockets的组合,将实时视频流从MSE接管的地方流到Web浏览器。

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

当客户端尝试中途访问流时(即ffmpeg流启动后),将出现我面临的问题。 我已经将init segment(ftyp + moov)元素保存在websocket服务器的队列缓冲区中。 该队列缓冲区将此数据发送到连接时的每个新客户端。

我认为此数据已正确发送,因为浏览器控制台未引发“找不到媒体源元素”错误。 当接收到广播的mood / mdat对时,没有视频流传输。

因此,我想回答几个问题:

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

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

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

4)有谁知道为什么会这样吗? 我缺少一些零散的mp4或ISO BMFF格式的详细信息。

如果需要进一步详细说明,请告诉我,我会提供。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM