关于VMR9的一个奇怪问题?困扰了很久。希望各位大虾多多赐教!

极深研几 2004-08-11 07:13:45
上次的不知道为什么不能打开了,重发!
这几个月,一直做一个视频传输系统。服务器端基于硬件采集卡的sdk包,实现了视频预览录制,网络播出组播,我自己写。客户端也是用相应的sdk包实现的网络接受,解码显示,录制和回放文件其中包括实现局部放大功能就是使用的VMR9,这部分代码是别人写的。大概在六月中旬,已经修改了好几次了,正在烦的时候,公司又突然要我改客户端的程序。当时边读代码边改写,测试的过程中发现VMR9在连续回放几次(Win2000下3次)文件之后,没有了图像,CPU占有率也下来了,调试发现问题可能在于IVMRWindowlessControl9的RendEx()函数,记不太清了(写代码的机器不让上网)。调用一定次数就失败。后来又去弄Mp3解码,最近又安排改这个问题。在Winxp下运行的时候发现8次后又出现没有图像的情况,甚至影响到预览图像。即有时用VMR9回放几次到没有图像后,接受网络数据解码预览也没有了图像,后来全屏显示用另外窗口来显示又有图像。切换回原来的窗口时又有了图像。真奇怪,这段时间一直在改也没有解决!对了文件格式MPEG4 divx avi格式。

几点猜测:
1,回放功能封装在一个类CVMRPlay类自定义的中,用一个player指针,每次调用都是new delete,可能是反复new delete导致了资源泄露,从而的后续调用失败。
2,VMR组件本身有这个问题。

本人刚学了些COM,DirecctShow VMR对了解太少,实在找不出其中的原因和解决之道。求各位大虾救出苦海!请大家踊跃发言,帮忙分析原因,解决问题。越快越好!
...全文
182 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jemyzhang 2004-08-15
  • 打赏
  • 举报
回复
解决了就好
极深研几 2004-08-15
  • 打赏
  • 举报
回复
刷新问题,很早遇到过.不是这个问题.
在解码的时候,CPU占有率会上升,但是实际没有,
但是进度又在往前走.不过这个问题解决了.用DirectShow9里的
VMR9->VMRplayer例程CMovie类实现了.
估计可能的原因是原来的调用里接口指针的释放和使用的问题.
实际上找了很久了,但是里面的调用关系有点混乱,没用找到.
有代码的机器上不了网,要不贴出来了.我也很想搞清楚其中的原因.
谢谢!
你的qq多少,过两天来结贴.
极深研几 2004-08-12
  • 打赏
  • 举报
回复
自己顶一下.
会不会是VMR9不兼容呢?
jemyzhang 2004-08-12
  • 打赏
  • 举报
回复
会不会是窗口刷新的问题
jemyzhang 2004-08-12
  • 打赏
  • 举报
回复
你说的情况一般不会出现问题,可能是其他的问题造成的。可否贴出代码
极深研几 2004-08-11
  • 打赏
  • 举报
回复
所以graph每次都不同,有没有可能是graph没有释放,而系统支持的graph的实例的数量有限,从而导致后续播放出现问题。
有IVedioWindow接口指针(pVw)与无图像应该直接相关吧?
极深研几 2004-08-11
  • 打赏
  • 举报
回复
每次播放时,m_pPlayer = new CVMRPlay()一下,重新的生成graph实例,停止播放时Release所有的接口指针,delete m_pPlayer;有一个问题在CVMRPlay::CVMRPlay()中调用了CoInitialize(),CVMRPlay::~CVMRPlay()中调用了CoUninitialize().这会不会有影响呢?
QQ:21848578
jemyzhang 2004-08-11
  • 打赏
  • 举报
回复
你反复播放时的graph是否改动过

2,543

社区成员

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

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