我在app中工作,我们使用IMediaDet来获取流长度。现在我们开始使用MP4容器了。问题是,当我尝试使用MP4文件的IMediaDet :: put_fileName()时,我得到HRESULT = -2147024770(ERROR_MOD_NOT_FOUND)。使用comercial mp4 demuxer,我看到视频流使用mpg2编码。
我的问题:如何在MP4容器中获取流的流长度?有没有办法让IMediaDet接受这些文件?有没有办法指出IMediaDet应该使用多路分配器?
非常感谢任何帮助。
感谢。
答案 0 :(得分:1)
不幸的是,DirectShow does not contain an MP4 parser, even in Windows 7。在Win7中,MP4功能被添加到媒体基础。
所以你有几个选择。您可以购买或构建一个实现MP4 demux和associate it with the "mp4" file extension的directshow过滤器,它应该允许IMediaDet正确地解复用该文件。或者您可以使用Media Foundation,它应该能够返回此信息。或者,您可以完全为MP4文件like MP4v2使用单独的库。 (注意如果你想直接使用DirectShow而不是MP4v2,你也可以使用MP4v2实现MP4 demux过滤器)