使用directshow后进程无法终止?

jason20042008 2006-07-16 02:32:13
不知道大家遇到这样的问题没有,程序使用directshow播放某个文件,播放时postquitmessage退出,在退出前已经调用imediacontrol的stop停止了,而且也release掉了filtergraph,但有时候进程并没有结束,只能用taskmanager kill掉进程,不过并不是每次都是这样。
...全文
323 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jason20042008 2006-07-16
  • 打赏
  • 举报
回复
还有个问题,影音不同步怎么解决?avi分辨率很高,而sample grabber依然不会丢帧的给我数据,造成图像落后于声音。
jason20042008 2006-07-16
  • 打赏
  • 举报
回复
filter graph加了一个sourcefilter用来播放avi,用connect和sample grabber连起来,最后接null renderer。用render把avi splitter的音频输出生成了,大体上就这样。我发现好像有时候调用stop函数会被阻塞住,函数不会返回,可能就是这个原因引起的,换成pause之后问题好一些了,但是如果pause之后马上把imediacontrol 给release掉好像有时候也会无法终止进程,pause前后都加了sleep这个问题就基本上不见了。不知道原因是什么,为什么stop会将线程阻塞?
DentistryDoctor 2006-07-16
  • 打赏
  • 举报
回复
应该是什么接口没Relase或者其它的原因。
一般如果有线程死锁,即便界面消失了,但EXE仍然可能在进程管理器中很看到,即没有真正的结束。
happydeer 2006-07-16
  • 打赏
  • 举报
回复
播放文件的filter graph是怎么样构建的呢?用到了哪些filter呢?

应该是IMediaControl::Stop调用不成功,导致filter graph仍然在运行。

2,543

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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