2

我在 nodejs 中编写了一个示例,它通过 mp4 格式的 websocket 连接将一些输入流式传输到客户端。在客户端,mp4 包被添加到 MediaSourceBuffer。

这运行良好,但前提是客户端从第一个包的开头获取流。所以另一个客户端不能播放当前的Stream,因为他不会从一开始就得到Stream。

我尝试(尝试和错误)保存第一个包 ffmpeg 发送并在新连接开始时发送它,然后是当前流。然后 MediaSourceBuffer 由于编码错误而中断..

这是 ffmpeg 命令:

-i someInput -g 59 
-vcodec libx264 -profile:v baseline 
-f mp4 -movflags empty_moov+omit_tfhd_offset+frag_keyframe+default_base_moof
-reset_timestamps 1
-

“empty_moov+omit_tfhd_offset+frag_keyframe+default_base_moof”部分应该使 Streampackages 独立于将 moovatom 放在每个部分的开头并按关键帧将各部分调整为 59 帧,所以我不明白为什么我不能查看Stream 开始后开始。

4

1 回答 1

3

该命令的输出本身不是“流”。它是一系列连接的片段。必须完整接收每个片段。如果接收到部分片段,它将使解析器感到困惑,以至于无法识别下一个片段的开始。此外,第一个片段输出称为初始化片段。这个初始化片段必须首先发送给客户端。之后可以播放任何片段。因此,它必须由服务器缓存。

于 2015-08-05T18:04:59.457 回答