DirectShow播mp3,IMediaControl::stop()的时候,程序会停顿几秒钟,如何解决

boyfling 2003-08-21 09:41:39
DirectShow播mp3,IMediaControl::stop()的时候,程序会停顿几秒钟,如何解决
...全文
702 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
boyfling 2004-01-28
  • 打赏
  • 举报
回复
请问你们是如何做的呢?
hell190109 2004-01-27
  • 打赏
  • 举报
回复
放线程里做
zgc2008 2004-01-26
  • 打赏
  • 举报
回复
奇怪哦,UP吧,不妨把代码放上大家研究研究
lyzcom 2004-01-25
  • 打赏
  • 举报
回复
没有遇到过,你贴上核心代码来看看吧。帮你找找。
sakurar 2004-01-21
  • 打赏
  • 举报
回复
没有遇到过,不妨帖上原码。
hlpzyj 2003-09-02
  • 打赏
  • 举报
回复
kofightas 2003-09-02
  • 打赏
  • 举报
回复
没遇到此现象
最近学了一些游戏开发必不可少的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; };

8,304

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧