【发布时间】:2011-08-05 06:31:59
【问题描述】:
我正在开发应用程序,我必须在其中播放 mp4 文件的渐进式蒸汽视频。但我遇到了PVMFErrContentInvalidForProgressivePlayback 错误。我认为这些视频不满足任何这些要求——“对于 3GPP 和 MPEG-4 容器,moov 原子必须在任何 mdat 原子之前。”如何转换满足该格式的文件?有什么转换器吗?
【问题讨论】:
我正在开发应用程序,我必须在其中播放 mp4 文件的渐进式蒸汽视频。但我遇到了PVMFErrContentInvalidForProgressivePlayback 错误。我认为这些视频不满足任何这些要求——“对于 3GPP 和 MPEG-4 容器,moov 原子必须在任何 mdat 原子之前。”如何转换满足该格式的文件?有什么转换器吗?
【问题讨论】:
使用MP4Box 和-hint 开关来解决此问题。
【讨论】:
moov/mdat 问题,但还有其他问题。
对于 GUI 版本,在选项菜单下我选择了“rtp/rtsp 提示”。 然后在 Mux 选项卡中,我添加了带有添加按钮的 mp4 文件。之后按下右下角的 Mux 按钮。
它在您的 mp4 文件的同一目录路径中创建混合版本。您可以将另存为用于不同的位置。
新创建的文件对我有用,并且没有给出 PVMFErrContentInvalidForProgressivePlayback 错误。
【讨论】:
添加 -hint 只是在文件末尾添加交错(这还不够)。
您可以使用名为 Handbrake (here) 的程序,您可以在其中选择“Web Optimize”选项 切换/重新安排 moov 和 mdat 原子位置以进行渐进式下载。
这个想法是在 MP4 容器标题和实际电影数据之间切换位置,因此您可以立即开始流式传输
您可以在此处进一步了解解决方案:How to correctly encode .mp4 files for streaming
【讨论】: