请问Direct Show能否实现将媒体文件转换成3GP格式。
另外,我在NokiaMultimediaConverter的安装目录中找到一个MultimediaConverter.dll,这是一个COM,开放了一个IPlayer和一个IConverter接口,好像是可以利用IConverter实现转换吧(我个人猜测),但不知道具体如何实现,有人能帮帮忙吗?谢谢!

解决方案 »

  1.   

    Direct Show应该不行,建议参考开源代码,例如FAAC/FAAD之类
      

  2.   

    Direct Show是可以的,但是整个DirectX只是一个框架,你要处理特定格式的文件,必须自己有支持这些格式的Encode/Decode甚至是Splitter...你去Nokia的网站上找找看,是不是可以。一般来说,只要把要处理的文件,Decode成Audio和Video之后,接入特定的Encode就可以得到你想要的格式
      

  3.   

    你使用DLL Export Viewer看看函数定义,是否能帮上忙,将正常的VIDEO转为3GP应该不难,如果将3GP转为普通VIDEO则比较难,我也认为在NOKIA等网站上能找到3GP格式的定义,或ENCODE代码.
      

  4.   

    //一般来说,只要把要处理的文件,Decode成Audio和Video之后,接入特定的Encode就可以得到你想要的格式
    理论上是这样,但我用graphedit无法成功搭出链路。我用OLE View看了函数的接口,其实用#import生成的tlh就可以知道了,这个到是不难。
    问题是有些接口不知道参数的具体意义,有些可以蒙着来,有些就不行了,我试着写了写代码,程序调不通,转换不成功。如果有文档可能会有些帮助,或者有谁用过这个DLL成功的做过东西。
      

  5.   

    NOKIA网站我去过了,在NOKIA的论坛也发了贴子,而且发现有人和我遇到了同样的问题,官方的回答是没有关于 Nokia Multimedia Converter 的SDK,但既然它带了MultimediaConverter.dll这个COM,我们也一定能做出来,只是由于没有官方文档,所以有些困难。
    大家再帮帮忙,谢谢!
      

  6.   

    "我用graphedit无法成功搭出链路"这个是很正常的,因为你的机器上没有3GP的Splitter和Source,怎么可能搭建出来,即使你有软件可以播放3GP文件,但是这个文件不一定会符合DirectShow的Filter注册机制。GpEdit.exe只能找出那些符合DirectShow机制注册的Filter。Nokia既然不提供,去网上找找有没有一些Open Source的Filter吧
      

  7.   

    Open Source的Filter我找过,但必然有各种各样的BUG,而且很难DEBUG,这是所有开源项目的通病。
    现在觉得如果能用Nokia的这个COM是不错的选择,也是比较现实的选择。
    但如何做呢?好像没有人研究过这个COM。