MPEG-DASH 在碎片化的 mp4 sampleOffsets 和 sampleSizes 中挑剔?

Posted

技术标签:

【中文标题】MPEG-DASH 在碎片化的 mp4 sampleOffsets 和 sampleSizes 中挑剔?【英文标题】:MPEG-DASH picky in fragmented mp4 sampleOffsets and sampleSizes? 【发布时间】:2014-11-13 08:26:00 【问题描述】:

嘿 *** 研究员。目前我遇到了一个 MPEG-DASH 播放器不想播放 DASH 内容的问题。基本上,我有一个 MP4 源,我在 2 个通道中输入它,1 个通过 RTMP,另一个通过 RTSP。然后我连接到两个通道并从中创建一个 MPEG-DASH 内容。两者的输出 DASH 基本相同,清单内容相同,片段数量相同。使用业界的 DASH 播放器(即 GPAC Osmo4、digital primates、castlabs dashas)播放时,从 RTMP 源生成的 DASH 内容运行良好,但是从 RTSP 源生成的 DASH 内容存在问题(即很多视频冻结, a/v 不同步等...)。在比较 RTMP 和 RTSP 生成的 DASH 片段时,唯一的区别是 Trun 框中的 samplingOffsets 和 samplingSizes。但是它们具有相同的 sampleCounts。在 MSS 中使用了相同的片段,并且无论 samplingOffsets 和 samplingSize 的差异如何,MSS 播放器都可以正常播放。

有谁知道 MPEG DASH 是否对 Trun 中每个样本的大小以及偏移量有要求?或者什么可能导致这个问题?

我欢迎任何意见和建议。就拍吧……

【问题讨论】:

【参考方案1】:

根据您的描述,问题很可能是由于内容生成过程中的错误参数造成的。请查看'MPEG-DASH CONTENT GENERATION USING MP4BOX AND X264',因为它们描述了获取有效内容的有用工具和步骤。

您是否已经检查过 baseMediaDecodeTime- 时间戳(可以在媒体片段的 tfdt 框中找到)是否对音频和视频都有效?

最好, 亚历克斯

【讨论】:

感谢您的回答。我刚刚发现了问题,它是由段初始化文件中的错误时间尺度和无效样本引起的,即 size == 0 的样本【参考方案2】:

经过几个小时的脑力研发,我发现a/v不同步、快进播放、缓冲时间过长都是由段初始化文件中的“timescale”值错误造成的。清单和分段 mp4 (.m4s) 使用 1000 时间刻度进行编码,但是段初始化在其“tfhd”框中的时间刻度值为 90000。将其更改为 1000 可解决上述问题。另一个问题是视频偶尔卡顿,我发现这个问题的原因是样本无效。有大小 == 0 字节但持续时间 > 0 的样本,在 MSS 中这没关系,播放器仍会播放它,但在 MPEG-DASH 中播放器将冻结。不在碎片化的 mp4 中写入 size == 0 的样本解决了这个问题。

干杯:)

【讨论】:

以上是关于MPEG-DASH 在碎片化的 mp4 sampleOffsets 和 sampleSizes 中挑剔?的主要内容,如果未能解决你的问题,请参考以下文章

如何用ffmpeg输出碎片化的mp4?

只有单个 mp4 文件的 MPEG-DASH 视频流

Bento4 MP4Dash 出现音频失败?

是否可以使用 MPEG-DASH 流式传输多帧率视频?

如何使 MPEG-DASH 流式传输基于时间片的不同质量

如何使用 MPEG DASH 流式传输和捕获 MP4 文件?