将AAC流转换为具有高片段长度精度的DASH MP4

时间:2017-03-05 14:39:27

标签: ffmpeg aac mpeg-dash media-source

对于我的HTML5项目,我需要创建一个带有单个音频流(无视频)的碎片化MP4文件,每个片段的持续时间恰好为0.1秒。

相对于ffmpeg文档,您可以通过使用'-frag_duration'传递一个以微秒为单位的值来实现这一点 - 我发现它可以与HTML5 MediaSource API一起使用并运行:

$ ffmpeg -y -i input.aac -c:a libfdk_aac -b:a 64k -level:v 13 -r 25 -strict experimental -movflags empty_moov+default_base_moof -frag_duration 100000 output.mp4

由于我们有一个210秒的音频被0.1s片段分割,我希望在output.mp4中我们有2100个片段,因此2100个原子。但是,在检查它时,我发现我们只有1811个moof原子 - 这意味着一些(甚至可能是所有)碎片比预期更大:

$ python ~/git/mp4viewer/src/showboxes.py output.mp4 |grep moof|wc -l
1811

有人能告诉我什么是错的,我怎么能完成我想要的?

现在我的假设是在编码期间我的AAC帧长度不是0.1s的倍数,因此ffm​​peg没有机会产生严格等于0.1s的片段,但我不确定。如果有人可以确认 - 并且让我知道在FFMPEG中明确设置AAC frame_size的方法(我在文档中找不到类似的东西),或者完全反驳这一点 - 它也会受到高度赞赏。

0 个答案:

没有答案