DTS与时间尺度的相关性

Correlation between DTS and time scale

我正在尝试从原始 h264 字节流制作 iso bmff 以通过 javascript 播放。我通过自定义传输容器(不是任何标准 HLS 或 rtsp 数据包)获取数据,其中每个数据包都包含一个相对时间戳。例如:

块 1:

Packet1 -- timestamp:100, payload: H264 raw data [通常是单个NAL单元]

数据包 2 -- timestamp:120,负载:h264 原始数据

块 1:

数据包 1 -- timestamp:140,负载:H264 原始数据

数据包 2 -- timestamp:160,负载:h264 原始数据

由于数据包时间戳是以毫秒为单位的相对时间,所以我考虑时间标度值为 1000 并根据第一个数据包和连续数据包的差异计算 DTS。例如,

第一个块的 DTS:0 [100 - 100]

第二个块的 DTS:40 [140 - 100]

但问题是它在 firefox 中工作正常,但 chrome 只是在第一帧后卡住了。

可能是什么原因?我在 DTS 或时间刻度方面做错了吗?

注意到我没有任何B帧,所以我的DTS和PTS值是一样的

终于解决了我的问题。 DTS值基本上没有问题。我使用的是 mp4 生成器的修改版本,这是从 trun 框删除持续时间部分的问题。

我从我的 another post 那里得到了关于这个问题的线索,其中 szatmary 提到了 trun 框持续时间。

最后,我刚刚从 hls repository 复制了 mp4-generator,它解决了我的问题。现在它也在 chrome 和 safari 中播放。