Android MP4 moov mdat问题
我正在开发应用程序,我必须在其中播放 mp4 文件的渐进式流媒体视频。但我遇到了 PVMFErrContentInvalidForProgressivePlayback
错误。我认为这些视频不满足任何要求 - “对于 3GPP 和 MPEG-4 容器,moov
原子必须位于任何 mdat
原子之前。”我怎样才能转换那些满足该格式的文件?有转换器吗?
I am developing app where I have to play progressive steaming video of mp4 file. But I faced the PVMFErrContentInvalidForProgressivePlayback
error. I think that those videos are not satisfing any of those requirements - "For 3GPP and MPEG-4 containers, the moov
atom must precede any mdat
atoms." How can I convert those file which will satsfy that format? Is there any converter for that?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用 MP4Box 和
-hint
开关来解决此问题。Use MP4Box with the
-hint
switch to fix this issue.对于 GUI 版本,在选项菜单下我选择了“rtp/rtsp 提示”。
然后在 Mux 选项卡中,我使用添加按钮添加了 mp4 文件。之后按下右下角的 Mux 按钮。
它在 mp4 文件的同一目录路径中创建混合版本。您可以使用“另存为”来保存不同的位置。
新创建的文件对我有用,并且没有给出 PVMFErrContentInvalidForProgressivePlayback 错误。
For GUI version, Under options menu i selected "hint for rtp/rtsp".
Then in Mux tab, I added mp4 file with add button. After that pressed Mux button in the right bottom corner.
It creates the muxed version in the same directory path of your mp4 file. You can use save as for different location.
The newly created file worked for me and didnt give PVMFErrContentInvalidForProgressivePlayback error.
添加 -hint 只是在文件末尾添加交错(这还不够)。
您可以使用名为 Handbrake 的程序(此处),您可以在其中选择“Web Optimize”选项
切换/重新排列 moov 和 mdat 原子位置以进行渐进式下载。
这个想法是在 MP4 容器标头和实际电影数据之间切换位置,因此您可以立即开始流式传输
您可以在此处进一步阅读有关解决方案的信息:如何正确编码 .mp4 文件以进行流式传输
Adding the -hint just add interleaving at the end of the file (which is not enough).
You may use a program called Handbrake (here), where you can select "Web Optimize" option
to switch/re-arrange moov and mdat atoms places for progressive download.
The idea is to switch places between the MP4 container headers and the actual movie data, so you may start streaming immediately
You can further read about the solution here: How to correctly encode .mp4 files for streaming