视频窗口显示不出来

GrAkiss 2005-09-12 10:57:16
在一个graph里面我同时preview和播放一个视频,获取的是graph上的Ivideowindow接口,设置其owner为一个picture控件,结果播放视频的窗口老是显示不出来,就什么都没有的样子,一定要拖动一下窗口,然后就可以显示出来了。主窗口的OnEraseBkgnd已经重载了,也没有用

后来换用获取两个renderer的IVideoWindow接口,分别设置,也没有用,仍然要拖动一下才能显示出内容

还有什么办法啊
...全文
760 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
GrAkiss 2005-09-14
  • 打赏
  • 举报
回复
始终无法显示视频,即使是移动了窗口,也是偶尔有效.今天发现如果在run()之后调用Sleep(5000),那么视频就能显示5秒钟,到了5秒钟后视频又自动不见了,这是怎么回事呢,如果SLEEP的时间越长,视频显示的时间就越长,是不是说明主线程对这个窗口有刷新动作?可是OnEraseBkgnd()重载了也没用啊,高手救命啊
dongchaomissyou 2005-09-12
  • 打赏
  • 举报
回复
正常情况,videoRender使用了视频加速(Overlay功能)的原因,GRAPH RUN之后从新设置ActiveWindow位置即可
GrAkiss 2005-09-12
  • 打赏
  • 举报
回复
是在开始run之后再用CWnd::SetWnidowPos来设置picture么?这样很怪阿,正常的流程不应该是这样的阿
rageliu 2005-09-12
  • 打赏
  • 举报
回复
刷新一下就好了!
开始播放时对picture控件设置一下坐标位置,就是相当于刷新它!!
GrAkiss 2005-09-12
  • 打赏
  • 举报
回复
我就是利用的默认的renderer,应该是没有视频加速功能阿,不过我是xp系统,好像说默认是vmr,会不会就是这样的
dongchaomissyou 2005-09-12
  • 打赏
  • 举报
回复
如果你使用的是默认的VideoRender Filter的话要连接上Overlay Filter才会以overlay方式显示,否则为默认方式即无视频加速功能显示
如果使用的是VMR filter,则该FITLER在显示时会自动判断当前overlay有没有被占用,如果没有被占用,则使用OVERLAY功能
GrAkiss 2005-09-12
  • 打赏
  • 举报
回复
楼上讲的这段关于OVERLAY功能可以在哪里看到?提供个位置把
DSHOW也看了不少遍了,不过也都是用的时候看看,没彻底看到底

2,554

社区成员

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

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