我正在构建一个需要从 MP4 容器读取 H264 和 AC3 流并将它们混合到单个 ISMV 文件中的应用程序。源 MP4 文件包含多个不同比特率的视频流和多个不同语言的音频流。
当我打电话时IGraphBuilder::AddSourceFilter对于我的源文件,我得到一个只有两个输出引脚的过滤器:“视频”和“音频”。如何选择用于“视频”和“音频”的特定流(例如:视频流的比特率)?
我是否必须实例化多个源过滤器才能读取该文件并将它们混合到 ISMV 中,还是我遗漏了什么?
最佳答案
这取决于您用于 MP4 的解复用器。我认为没有库存的 MP4 解复用器,因此您可能已经将其作为解码器包的一部分,它同时充当源和解复用器。
您可以在 www.gdcl.co.uk/mpeg4 上试用免费的开源 MP4 demux。您将需要 AddSourceFilter(获取具有单个输出的文件源),然后将源输出显式连接到 demux 输入。然后,您将拥有与 demux 理解的所有已启用流相对应的输出引脚,您可以选择所需的引脚。
G
关于streaming - DirectShow:从 MP4 容器中选择源视频流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3117663/