2

我正在一个应用程序中工作,我们使用 IMediaDet 来获取流长度。现在我们开始使用 MP4 容器。问题是,当我尝试对 MP4 文件使用 IMediaDet::put_fileName() 时,我得到 HRESULT = -2147024770 (ERROR_MOD_NOT_FOUND)。使用商业 mp4 解复用器,我看到视频流使用 mpg2 编码。

我的问题:如何获取 MP4 容器内流的流长度?有没有办法让 IMediaDet 接受这些文件?有没有办法指出解复用器 IMediaDet 应该使用什么?

任何帮助将非常感激。

谢谢。

4

1 回答 1

1

不幸的是,DirectShow 不包含 MP4 解析器,即使在 Windows 7 中也是如此。在 Win7 中,MP4 功能被添加到媒体基础中。

所以你有几个选择。您可以购买或构建一个实现 MP4 解复用的 directshow 过滤器,并将其与“mp4”文件扩展名相关联,这应该允许 IMediaDet 正确解复用文件。或者您可以使用 Media Foundation,它应该能够返回此信息。或者,您可以完全为 MP4 文件使用单独的库,例如 MP4v2。(请注意,如果您想直接使用 DirectShow 而不是 MP4v2,您也可以使用 MP4v2 实现 MP4 demux 过滤器)

于 2010-09-17T00:28:31.667 回答