1.我现在是通过调用windows media player 来实现播放,那如果电脑没有windows media player 是不是就不能播放了
2.好像还有其他类似windows media player 播放媒体文件的控件,
3.看别人用API来实现播放音频,但又说api 对文件路径很挑剔,想做强大的播放器api 只能靠边站,。请教:怎么做做出来的播放器会比较强大点?(千千静听和酷狗是用api 来播放的吗)

解决方案 »

  1.   

    通常处理多媒体这一块可以使用 MCI 来处理,而 MCI 相关的 API 用起来没有什么不妥的。
    还有一种做法就是用 DirectShow 来做,你可以选择你喜欢的技术来实现。
    说到强大,要看你的目的是什么,何为强大。如果单纯是指支持的文件格式而言,都差不多,
    因为如果系统中没有安装相关文件的解码器,同样都是不支持。但如果有解码器,基本都能
    支持。如果是看对媒体的基本控制,两者都能做得不错,什么音量呀、声道呀、播放进度等
    这些两者都可以很容易的实现控制。但是如果要做如控制媒体色彩、混合媒体、调整软波表
    等,用 DirectShow 就强于 MCI 函数,因为 DirectShow 中的有个机制可以专门处理这些
    过程。至于 DirectShow 的使用,你可以下载一下 DirectX SDK 来看看,里面有相关范例,
    但是因为 DirectShow 对 VB 的支持只是很少的一部分,他标准的支持环境是 VC,所以有
    些东西只能拿 VC 来弄。
    个人建议,如果要求不是很高,用 MCI 来实现比较好,当然,在 VB 层面 DirectShow 会
    更加简单,但这东西在 VB 中玩不深,就像用控件一样实现几个最基本的功能。如果你打算
    用 VB 来玩多媒体这块,用 MCI 应该能满足你大部分的需求了。
      

  2.   

    谢谢2楼的。你提到的DirectShow  是一个控件吗, 和 windows media player相比 哪个功能多, 我现在用wmp控件 显示歌手信息显示不出来,    WindowsMediaPlayer1.currentMedia.getItemInfo("author")  获取出来的是空的,title可以获取到,但是歌手名要怎么获得呢       DirectShow控件 可以获得歌手等信息吗
      

  3.   

    DirectShow 是 DirectX 中的一个组件,就是常说的 DX7、DX8、DX9、DX10 这类东西,
    而 DirectShow 只是 DX 里的一个处理多媒体的接口。对于 VB 的支持微软提供了 COM
    组件形式的接口,在 VB 中就是那种用工程菜单下选引用的东西,也可以用 CreateObject
    创建出来的对象,不是控件(ActiveX),而是组件(COM/COM+)。但在VC里还提供了静态库
    的类,由于VB不能这么调用VC的类,所以有些东西不能在VB里直接这么使用,当然如果你在
    VC里把他封装成COM或ActiveX给VB调用也可以,但既然在VC里弄完整的封装他了,为什么
    不直接在VC里做完剩余的一点事呢?
    还有,歌手信息这类东西和解码器无关,通常解码器只是对流媒体的数据流进行解码工作,
    而这些信息通常是根据文件格式的几个基本的逻辑偏移便可得到,所以一般这种功能不会直接
    通过这类组件得到相关信息,可以自己在软件中取得。至于 Media Player 控件是否做了针对
    多种文件格式的这类信息的识别我不太清楚,不过 Media Player 的软件是有一些支持的,
    但他的软件未必就是单纯的壳子,里面也会处理一些特殊的东西的。