如何用ffmpeg创建可流音频文件



我正在尝试用FFMpeg编写可流(碎片化?)mp4文件。但是-f mp4格式的FFMpeg行为的默认值不是这个。

以以下AAC-LC MP4测试文件为例,将其保存为aac_lc_in.m4a,并运行ffmpeg命令:

ffmpeg -y -i aac_lc_in.m4a -strict -2 -codec copy -f mp4 aac_lc_out.m4a 

结果是一个不可流文件(把它放在服务器上,并尝试在浏览器中加载它)。它只有在完全下载后才会启动)。在下载完成之前可以启动的原始文件不会发生这种情况。

我也尝试使用mp4格式参数:

-movflags frag_keyframe+empty_moov
-movflags faststart+frag_keyframe
-movflags faststart+frag_keyframe+empty_moov
-movflags faststart+rtphint+frag_keyframe
-movflags rtphint+frag_keyframe
-movflags rtphint+frag_keyframe -rtpflags latm

但是没有任何帮助。即使输出文件看起来与原始文件非常相似(文件格式框、示例表框等),生成的文件也是不可流化的。

我找到了解决方案。只对mp4格式使用-movflags faststart参数。完整的命令应该是:

ffmpeg -i aac_lc_in.m4a -strict -2 -codec copy -f mp4 -movflags faststart aac_lc_out.m4a

现在aac_lc_out.m4a文件由浏览器播放,只要你点击播放

相关内容

  • 没有找到相关文章