我发现 Microsoft Media Foundation 生成 MPEG4 文件,其中 MDAT 原子位于 MOOV 原子之前。流式传输需要 MDAT 之前的 MOOV。我假设我的问题的解决方案是使用 MF_MPEG4SINK_MOOV_BEFORE_MDAT创建接收器时的属性,但我似乎无法让它产生效果。我的代码与 http://blogs.msdn.com/b/eternalcoding/archive/2013/03/06/developing-a-winrt-component-to-create-a-video-file-using-media-foundation.aspx 大致相同.在该示例中,我在设置 MF_READWRITE_ENABLE_HARDWARE_TRANSFORMS 之前将属性设置为 UINT32 TRUE。
最佳答案
如果您无法让编码器输出一个开头带有 moov atom 的文件,您总是可以在之后更正该文件。这两个实用程序都应该在 Windows 上运行,并且可以解决问题。 (尽管名称中有“qt”,它们都可以毫无问题地处理 .mp4 文件)
关于c++ - 如何用Media Foundation生成 "moov before mdat"MP4视频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24085362/