gpt4 book ai didi

streaming - 通过 MP4 进行直播

转载 作者:行者123 更新时间:2023-12-02 19:31:16 24 4
gpt4 key购买 nike

我正在开发在线电视服务。目标之一是无需任何额外的浏览器插件(Flash 除外)即可播放视频。

我决定使用 MP4,因为大多数 HTML5 浏览器和 Flash(作为后备)都支持它。这些视频由 FFMpeg 从服务器上的 ASF 进行转码。

但是,我发现 MP4 无法直播,因为它有一个用于元数据的 moov 原子,必须指定长度。 FFMpeg 无法直接将 mp4 流式传输到 stdout,因为它将 moov 放在文件末尾。(Live transcoding and streaming of MP4 works in Android but fails in Flash player with NetStream.Play.FileStructureInvalid error)

当然,MPEG-TS是存在的,但HTML5不支持它<video> .

我想到的是一种将流实时转码为 MP4 的方法,并且在每个新的 HTTP 请求上,首先发送一个 moov,指定一个非常长的视频长度数字,然后开始发送MP4 文件的其余部分。

是否可以使用 MP4 进行流式传输?

经过一些研究和av501的回答,我明白必须知道框架的尺寸才能工作。

能否将 mp4 文件分割成更小的部分以便进行流式传输?

当然,切换到其他容器/格式是一种选择,但唯一与 Flash 和 HTML5 兼容的格式是 mp4/h264,因此如果我必须同时支持这两种格式,我就必须转码两次。

最佳答案

您可以使用碎片MP4。碎片MP4文件的构建如下:

moov [moof mdat]+

moov 框仅包含有关轨道的基本信息(数量、类型、编解码器初始化等),但不包含有关轨道中样本的信息。有关样本位置和样本大小的信息位于 moof 框中,每个 moof 框后面跟着一个 mdat,其中包含前面的 moof 框中描述的样本。通常,人们会选择 (moof, mdat) 对的长度约为 2,4 或 8 秒(没有具体说明,但这些值对于大多数用例来说似乎是合理的)。

这是构建永无休止的 MP4 流的一种方法。

关于streaming - 通过 MP4 进行直播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13010530/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com