2011-12-29 87 views
1

我搜索了(Google和论坛),我仍然无法找到答案。我接近本网站上有这个线程,创建自定义视频DShow编解码器

Custom File Format And Codec?

,但没有直接回答我的问题。

基本上,我想创建一个自定义视频编解码器,它将充当DShow滤镜。我不是在问如何去编码和解码视频,我需要/想知道如何设置我的过滤器以便与媒体播放器(如WMP)正确对接。平台:Windows 7 64位

媒体播放器:任何。如果将自定义编解码器与不同的播放器连接起来更容易,则通过所有方式推荐该播放器。

语言:C++

我的理解是,如果我创建一个.ax或.dll的形式DSHOW过滤器,我只需要使用REGSVR32窗口进行注册,然后WMP将能使用该编解码器打开文件。在这种情况下,我只需使用AVI容器来容纳我的编解码器。

我已经为DAW制作了VST插件,并且对程序的结构有要求。它需要包含主机程序(逻辑,专业工具等)用来处理音频数据的某些功能(具有特定名称)。例如,有需要的进程和进程替换方法。

我一直在试图找出视频编解码器的结构是什么,所以我可以与标准播放器进行适当的接口,无济于事。

任何帮助,将不胜感激。提前致谢。

回答

1

DirectShow中选择新的/独特的视频子类型标识符,创建编码器和解码器的过滤器,你的DirectShow智能连接正确注册(这是GUID这样你就可以真正得到一个唯一的一个),你是好去。

编码器和解码器滤波器是注册的用于对视频数据进行某些转换的COM对象。 MSDN在Writing Transform Filters中对它们进行了描述,尽管您已经熟悉DirectShow概念,但它仍然假设它们。

如果您希望能够将数据存储到AVI容器中,则您的子类型标识符仅限于32位“四字符代码”(FourCC),该代码将使用预定义映射转换为子类型GUID。

得益于DirectShow的智能连接,启用DriectShow的应用程序将能够自动定位并安装解码器以播放数据。播放文件时,WMP使用DirectShow作为第二个更改API,因此WMP还能够接受内部使用您的编解码器的文件。

此外,编写一个DirectShow过滤器可能是一种复杂的事情。由于您只对视频编码器/解码器配件感兴趣,因此您可能更希望改为编写DirectX Media ObjectDMO)。标准DMO Wrapper Filter会将您的DMO包装到DirectShow过滤器中。编写一个DMO肯定更容易,包括你可以使用ATL作为COM基础。

+0

哇。这份文件如何避开我的Google搜索? – boogagiga 2011-12-29 22:32:27

+0

无论如何,谢谢你的信息。我会通读这些文章,看看我能做些什么。 – boogagiga 2011-12-29 22:33:07

+0

另请参阅上面关于'DMO'的更新。 – 2011-12-29 22:42:57