首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FMP4 moof盒序号排序

FMP4 moof盒序号排序
EN

Stack Overflow用户
提问于 2020-03-07 17:49:44
回答 2查看 915关注 0票数 0

我想做一个基本的,支离破碎的mp4广播节目与avformat和HTML5视频和味精。

这是一个活动流,我使用avformat将h264数据复制到mp4片段中。

下面是连接到流的客户端的基本绘图:

因此,用文字:

reuse

  1. C1J:第一个客户端连接:
    • avformat进程启动
    • ftyp、moov、moof、mdat盒将提供给Client1
    • ftyp和moov原子以供以后使用。

Client1)

  • previously

  • C2J:第二个客户端连接(稍后时间):
  • avformat进程正在进行中(因为它仍在为moof服务,而mdat盒用于Client2
  • after保存的ftyp和moov盒将首先送达Client2
  • after ftyp和moov盒,Client2将在下一个box.

上加入到流中。

我已经从两个客户端将一个mp4文件保存到磁盘。

原子在两个文件中的顺序看起来很好: ftype,moov,moof,mdat,moof,mdat.

这两个文件都可以由媒体播放器(如VLC)播放,也可以在浏览器中直接播放(Opera)。

Client1也可以通过浏览器(Opera)中的MSE播放,但是Client2 2的流不显示在MSE (Opera)中。

JS控制台上没有错误,媒体内部看起来也不错(至少与Client1 1的版本相当)。

现在我意识到,每个moof框都包含一个带有sequenceNumber字段的mfhd框(标头)。

当然,在Client1 1的第一个moof框中,这个sequenceNumber是1。但是,在后面加入的Client2 2的第一个moof框中,这个sequenceNumber始终是>= 1 (在我的例子中是16)。

我需要在Client2中的moof框中修改什么才能从一开始就有一个有效的fmp4?

我认为Opera的HTML5视频不喜欢sequenceNumber不是从1开始的,但是对于它的有效性还有其他的要求。

EN

回答 2

Stack Overflow用户

发布于 2021-06-21 19:04:11

一旦缓冲了一些视频,就必须将JS中video元素上的video设置为最新的buffered.end(0)时间(假设您有一个缓冲范围)。

问题是,您正在播放的视频被浏览器解释为开始于时间为零,但您正在为以后的时间添加MSE片段。

票数 0
EN

Stack Overflow用户

发布于 2021-09-10 19:00:06

所有moof框都包含有关播放顺序的信息。MSE预计,默认情况下,视频将在时间0开始。

解决此问题的一个简单解决方案是在追加第一个缓冲区后将HTMLMediaElement.currentTime属性设置为高值。或者,为了支持MSE规范,您提供给MSE缓冲区的第一个moof框应该有first_sample_flags_present标志。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60580531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档