【发布时间】:2019-06-20 18:26:20
【问题描述】:
我目前正在编码实时视频并流式传输到浏览器。 我将 rgb->vuy->h264->Wrap in (MP4 ISO BMFF Byte Stream Format spec, section 3)-> websocket 编码到客户端。 第一个包是从 ftyp 到 moov 标签的初始化数据。
从那里开始,我将 moof 和 mdat 标签发送给客户端。 我流式传输视频。
无论 mdat 块中有多少帧。 MSE 始终缓冲数据以进行无缝播放。如何使用 MSE 覆盖它。
我在某处读到,mdat 有一种方法可以理解它是一个实时蒸汽 webm 块。但我不知道这种想法是否存在于 mp4 或完全存在。
【问题讨论】:
-
我找到了这个,stackoverflow.com/questions/29636740/… 但没有真正的答案
-
你是如何创建 mp4 的,你是如何控制块大小的?
-
我使用 Microsoft sinker(碎片化版本),然后循环并更改 mp4 标签中的一些值,例如 tfdt trun 和其他东西,以使其符合 Spec 3,以便 MSE 不会抱怨。我可以完全控制编码器。所以我放入坠子的框架越多,我得到的块就越多。但问题出在客户端。即使我每块(mdat)写入 2 帧,仍然存在延迟,因为 MSE 需要在开始渲染之前进行缓冲。
-
我从未听说过微软下沉器。谷歌没有返回任何结果。你每两帧得到一个moof吗?还是每两帧只有一个 mdat?你能发布一个示例文件吗?
标签: javascript video-streaming mp4 h.264 mse