Gab*_*vay 5 mp4 ffmpeg stream audio-streaming
我正在尝试使用 FFMpeg 写入可流式传输(碎片?)的 mp4 文件。但该格式的FFMpeg行为默认-f mp4不是这个。
以这个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
Run Code Online (Sandbox Code Playgroud)
结果是一个不可流式传输的文件(将其放在服务器上并尝试在浏览器中加载它。它仅在完全下载后才启动)。对于在下载完成之前可以启动的原始文件,不会发生这种情况。
我还尝试使用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
Run Code Online (Sandbox Code Playgroud)
但没有任何帮助。即使输出文件看起来与原始文件非常相似(文件格式框、示例表框等),生成的文件也不可流式传输。
我找到了解决方案。-movflags faststart仅使用格式参数mp4。完整的命令是:
ffmpeg -i aac_lc_in.m4a -strict -2 -codec copy -f mp4 -movflags faststart aac_lc_out.m4a
Run Code Online (Sandbox Code Playgroud)
现在,aac_lc_out.m4a只要您单击“播放”,浏览器就会播放该文件。