如何使用FFmpeg创建可流式传输的音频文件?

5
我正在尝试使用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

但是没有什么能够改变。即使输出文件看起来与原始文件非常相似(包括文件格式框、样本表格框等),生成的文件也不能流式传输。

1个回答

3

我找到了解决方法。仅在 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 文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接