【发布时间】:2018-09-06 07:06:15
【问题描述】:
我正在尝试为 OpenGL 应用程序中的视频播放制作一个自定义媒体接收器(没有各种 WGL_NV_DX_INTEROP,因为我不确定我的所有目标设备是否都支持这个)。
到目前为止,我所做的是编写一个自定义流接收器,它接受 RGB32 样本并使用媒体会话设置播放,但是我在播放 mp4 文件的初始测试时遇到了问题:
- 生成的拓扑中的一个(或多个)MFT不断失败,并出现错误代码MF_E_TRANSFORM_NEED_MORE_INPUT,因此我的流接收器从不接收样本
- 请求了几个样本后,媒体会话收到事件 MF_E_ATTRIBUTENOTFOUND,但我仍然不知道它来自哪里
但是,如果我将流接收器配置为接收 NV12 样本,那么一切似乎都可以正常工作。
我的最佳猜测是 TopologyLoader 生成的颜色转换器 MFT 需要更多配置,但考虑到我需要保持整个过程与原始文件类型无关,我不知道该怎么做。
【问题讨论】:
-
可以提供mp4文件吗?你能解释一下 TopologyLoader 是如何设置的吗?
-
对各种 mp4 文件有同样的效果。通过将 MediaSource 连接到 MediaSink 来设置拓扑,然后通过默认拓扑加载器进行解析
-
好的,你能用这个文件测试一下吗:big_buck_bunny_720p_50mb.mp4,所以我也可以测试一下吗?
-
我开始使用 SourceReader,因此无法再进行测试。但是我仍然有代码,我将在明天或后天测试。感谢您的回复!
标签: windows opengl rgb mp4 ms-media-foundation