社区
游戏开发
帖子详情
DirectShow播mp3,IMediaControl::stop()的时候,程序会停顿几秒钟,如何解决
boyfling
2003-08-21 09:41:39
DirectShow播mp3,IMediaControl::stop()的时候,程序会停顿几秒钟,如何解决
...全文
702
7
打赏
收藏
DirectShow播mp3,IMediaControl::stop()的时候,程序会停顿几秒钟,如何解决
DirectShow播mp3,IMediaControl::stop()的时候,程序会停顿几秒钟,如何解决
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
的载入和
播
放
最近学了一些游戏开发必不可少的
MP3
文件
播
放知识。首先,我的目标机器是windows,所以这些是在windows平台下开发的。随后我学到,要直接解码
MP3
文件是非常的困难的。因为
MP3
文件的闭源,我们都没有知道怎样才能一个一个地解码。好在
DirectShow
帮我们
解决
了解码的工作,我们需要的只是加入头文件,并且手动链接库文件,使用它的函数就行了。 为了使用它的函数,我们必须加入头文件dshow.h。这个头文件是不容易找到的。以后的DirectX里面都没有了
DirectShow
的踪影。我只好下载2004年十二月的DirectX版本,这个版本里就有dshow.h。好了,我们加入这个头文件不外乎就是要加一些接口。这里我列举这一些接口的名字: IGraphBuilder I
Media
Control
I
Media
EventEx 为了能够解析IGraphBuilder这个符号,我们还要手动地链接Strmiids.lib库。这个库不是特别的显眼,但是没有它我们的
程序
就无法通过。 好了,准备工作做好了后,我们开始写一个类了。这个类很简单,叫C
MP3
。这个类里面嵌入了另外一个
MP3
标签类C
MP3
Tag。下面就是我这个类的代码。 class C
MP3
{ public: C
MP3
( void ) // 默认构造函数 { m_GraphBuilder = NULL; m_
Media
Control
= NULL; m_
Media
EventEx = NULL; m_IsPlaying = false; } ~C
MP3
( void ); // 析构函数 bool Load
MP3
File( TString strFilename ); // 读取
MP3
文件 bool Play( void ); //
播
放
MP3
文件 void ProcessNotification( void ); // 处理通知 C
MP3
Tag Get
MP3
Tag( void ) { return m_tag; } // 获取
MP3
标签 bool IsPlaying( void ) { return m_IsPlaying; } // 判断是否正在
播
放 private: bool m_IsPlaying; IGraphBuilder* m_GraphBuilder; I
Media
Control
* m_
Media
Control
; I
Media
EventEx* m_
Media
EventEx; C
MP3
Tag m_tag; };
DirectShow
采集视频显示,并保存成bmp和yuv文件
代码简洁,采用
DirectShow
采集视频,并演示了保存成bmp和yuv的流程,对从事流媒体开发人士很有帮助,稍作修改,即可应用于工作当中。
C#调用
DirectShow
lib库
播
放视频
1、c#调用
DirectShow
包
播
放视频,nuget加载
directshow
lib.standard包 2、加载资源文件: graphBuilder.RenderFile, 赋值
播
放句柄: videoWindow.put_Owner(this.panel1.Handle);
播
放:m_p
Media
Control
.Run(); 代码: IGraphBuilder m_pGraphBuilder = null; I
Media
Control
m_p
Media
Control
= null; I
Media
EventEx m_p
Media
EventEx = null; I
Media
Seeking m_p
Media
Seeking = null; IVideoWindow m_pVideoWindow = null; m_pGraphBuilder = (IGraphBuilder)new FilterGraph(); m_p
Media
Control
()
WinCE_Driver1.rar_player
调用
directshow
出现链接错误,如何
解决
? player.obj : error LNK2001: unresolved external symbol _IID_IVideoWindow player.obj : error LNK2001: unresolved external symbol _IID_I
Media
Control
这是因为链接器没有找到合适的.lib文件。两种办法: 1、在EVC菜单Tools—options—directories 里把library files的路径重新调整一下。如果你只安装了EVC自带的 Standard SDK而没有其它SDK,可以指定WINCE目录中的.lib文件路径,例如D:\WINCE500\PUBLIC\DIRECTX\ OAK\LIB\X86\RETAIL。注意CPU的类型。 2、安装SDK,前提是导出SDK的PB内核工程必须包括
DirectShow
或者其它组件。
关于自己对I
Media
Control
::Run()返回S_FALSE的一点见解
这段时间在学习
DirectShow
时,写了一些古怪的代码。刚好在这几天学习音频的采集时,再一次遇到了这样的问题。 当我的
程序
执行到I
Media
Control
::Run()函数时,每次都时返回S_FALSE。我想很多人肯定都
会
遇到了这个问题,不过它有时并不影响我们
程序
的运行。这是为什么,我们可以看一下MSDN是怎么说的。 由上面可知,有的时候它返回S_FALSE的原因可能
游戏开发
8,304
社区成员
23,682
社区内容
发帖
与我相关
我的任务
游戏开发
游戏开发相关内容讨论专区
复制链接
扫一扫
分享
社区描述
游戏开发相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章