我正在一个应用程序中工作,我们使用 IMediaDet 来获取流长度。现在我们开始使用 MP4 容器。问题是,当我尝试使用 MP4 文件使用 IMediaDet::put_fileName() 时,我得到 HRESULT = -2147024770 (ERROR_MOD_NOT_FOUND)。使用商业 mp4 解复用器,我看到视频流使用 mpg2 编码。
我的问题: 如何获取 MP4 容器内流的流长度?有没有办法让 IMediaDet 接受这些文件?有没有办法指出 IMediaDet 应该使用什么解复用器?
任何帮助将非常感激。
Thanks.
很遗憾,即使在 Windows 7 中,DirectShow 也不包含 MP4 解析器 http://social.msdn.microsoft.com/Forums/en-US/windowsdirectshowdevelopment/thread/0a7f7ab9-19c1-4938-bc1a-d87c8f49da86。在Win7中,MP4功能被添加到媒体基础中。
所以你有几个选择。您可以购买或构建一个 directshow 过滤器来实现 MP4 解复用器和将其与“mp4”文件扩展名相关联 http://msdn.microsoft.com/en-us/library/dd377513%28VS.85%29.aspx,这应该允许 IMediaDet 正确地解复用文件。或者您可以使用媒体基金会,它应该能够返回此信息。或者您可以完全使用单独的 MP4 文件库,像MP4v2 http://code.google.com/p/mp4v2/。 (请注意,如果您想直接使用 DirectShow 而不是 MP4v2,您还可以使用 MP4v2 实现 MP4 解复用器过滤器)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)