MP3的载入和播放

时间:2014-09-29 15:03:30
【文件属性】:

文件名称:MP3的载入和播放

文件大小:2.7MB

文件格式:RAR

更新时间:2014-09-29 15:03:30

DirectShow MP3 C++

最近学了一些游戏开发必不可少的MP3文件播放知识。首先,我的目标机器是windows,所以这些是在windows平台下开发的。随后我学到,要直接解码MP3文件是非常的困难的。因为MP3文件的闭源,我们都没有知道怎样才能一个一个地解码。好在DirectShow帮我们解决了解码的工作,我们需要的只是加入头文件,并且手动链接库文件,使用它的函数就行了。 为了使用它的函数,我们必须加入头文件dshow.h。这个头文件是不容易找到的。以后的DirectX里面都没有了DirectShow的踪影。我只好下载2004年十二月的DirectX版本,这个版本里就有dshow.h。好了,我们加入这个头文件不外乎就是要加一些接口。这里我列举这一些接口的名字: IGraphBuilder IMediaControl IMediaEventEx 为了能够解析IGraphBuilder这个符号,我们还要手动地链接Strmiids.lib库。这个库不是特别的显眼,但是没有它我们的程序就无法通过。 好了,准备工作做好了后,我们开始写一个类了。这个类很简单,叫CMP3。这个类里面嵌入了另外一个MP3标签类CMP3Tag。下面就是我这个类的代码。 class CMP3 { public: CMP3( void ) // 默认构造函数 { m_GraphBuilder = NULL; m_MediaControl = NULL; m_MediaEventEx = NULL; m_IsPlaying = false; } ~CMP3( void ); // 析构函数 bool LoadMP3File( TString strFilename ); // 读取MP3文件 bool Play( void ); // 播放MP3文件 void ProcessNotification( void ); // 处理通知 CMP3Tag GetMP3Tag( void ) { return m_tag; } // 获取MP3标签 bool IsPlaying( void ) { return m_IsPlaying; } // 判断是否正在播放 private: bool m_IsPlaying; IGraphBuilder* m_GraphBuilder; IMediaControl* m_MediaControl; IMediaEventEx* m_MediaEventEx; CMP3Tag m_tag; };


【文件预览】:
使用多线程和音乐的播放
----控制台两个音乐播放()
--------46.MOETAN CORNER.mp3(1.05MB)
--------CMP3.h(5KB)
--------控制台两个音乐播放.vcproj.MTO2VPZD7BAXBWG.蒋轶民.user(1KB)
--------ErrorHandling.cpp(3KB)
--------CMP3.cpp(11KB)
--------main.cpp(926B)
--------控制台两个音乐播放.vcproj(4KB)
--------ErrorHandling.h(2KB)
--------Debug()
--------09. えがいてあ_そ_ぼ!.mp3(1.57MB)
----使用多线程和音乐的播放.sln(946B)
----使用多线程和音乐的播放.suo(15KB)

网友评论

  • dxerr9.h 找不到
  • 太精简了..没啥功能...
  • 可以用 不错不错
  • 实用,参考不错