mobile CCTV,mobile surveillance,police body worn cameras

标题: 开发监控端,调用BVCU_Dialog_Close,程序阻塞 [打印本页]

author: 黄思琪    time: 2019-3-7 11:52
标题: 开发监控端,调用BVCU_Dialog_Close,程序阻塞
我们自己开发了监视端,多路监控,在想停止拉流的时候调用了BVCU_Dialog_Close关闭视频,但是往往会出现程序阻塞的问题,单步调试时走到BVCU_Dialog_Close处,程序不向下走了,阻塞了,不报错,不退出,这是什么原因?
author: jsb    time: 2019-3-7 12:12
把代码贴出来,我们这边运行一下
author: 黄思琪    time: 2019-3-9 09:40
jsb post on2019-3-7 12:12
把代码贴出来,我们这边运行一下

关闭视频时,调用BVCU_Dialog_Close,程序阻塞,从调试器里面看,BVCU_Dialog_Close里面调用了WaitForSingleObject的函数,是阻塞在这个函数上了,这个函数是在等某个事件触发后才会往下执行,咨询一下具体是什么事件??(代码截图在附件里)

author: Mitarai    time: 2019-3-9 11:08
黄思琪 post on2019-3-9 09:40
关闭视频时,调用BVCU_Dialog_Close,程序阻塞,从调试器里面看,BVCU_Dialog_Close里面调用了WaitForSin ...

您好,请问在调用BVCU_Dialog_Close()接口之后,dialog_OnEvent()回调是否有执行?
author: Mitarai    time: 2019-3-9 11:09
另外,请简单说明下您调用各个接口的顺序
author: cpu    time: 2019-3-9 20:22
在调用BVCU_Dialog_Close()接口之后,dialog_OnEvent()回调没有执行,一直阻塞在BVCU_Dialog_Close()处,但应用程序输出窗口显示已关闭,如图所示

调用各个接口的顺序是:
1.        BVCU_Initialize()
2.        BVCU_Login ()
3.        BVCU_SendCmd ()
4.        BVCU_Dialog_Open()
5.        视频启动,显示正常
6.        BVCU_Dialog_Close()
7.        程序阻塞在BVCU_Dialog_Close()处

author: tony258    time: 2019-3-10 11:00
cpu post on2019-3-9 20:22
在调用BVCU_Dialog_Close()接口之后,dialog_OnEvent()回调没有执行,一直阻塞在BVCU_Dialog_Close()处,但 ...

1: 在dialog_OnEvent()入口处加打印,确定关闭时是否调用;
2: 查看其它线程阻塞的位置
author: cpu    time: 2019-3-10 12:24
1.在dialog_OnEvent()内第一行打了断点,没有触发
2.BVCU_Dialog_Close()在主线程(界面线程)调用的
3.把afterDecode中的代码注释掉,只保留返回值,仍然阻塞
  
author: Mitarai    time: 2019-3-11 09:00
cpu post on2019-3-10 12:24
1.在dialog_OnEvent()内第一行打了断点,没有触发
2.BVCU_Dialog_Close()在主线程(界面线程)调用的
3. ...

你好,可否提供远程协助,或者将源码发过来,我们诊断一下
author: cpu    time: 2019-3-11 10:11
远程协助是怎么个方式?源码是Qt开发的
收到采集设备下线通知后,在主线程(界面线程)中调用BVCU_Dialog_Close关闭正常
采集设备在线,视频正在传输显示,在主线程(界面线程)中调用BVCU_Dialog_Close阻塞
author: Mitarai    time: 2019-3-11 10:36
cpu post on2019-3-11 10:11
远程协助是怎么个方式?源码是Qt开发的
收到采集设备下线通知后,在主线程(界面线程)中调用BVCU_Dialog_Cl ...

TreamViewer看看吧
author: cpu    time: 2019-3-12 09:21
问题在于
BVCU_DialogControlParam: : stRender.hWnd = (HWND) (m_pWidget->winld())
其中显示视频的窗口m_pWidget被隐藏没有显示
m_pWidget窗口显示后,BVCU_Dialog_Close ()函数不再阻塞
author: besovideo    time: 2019-3-12 09:38
哦,那就是说搞定啦?
author: cpu    time: 2019-3-12 09:51
嗯,搞定了
author: Mitarai    time: 2019-3-12 09:54
搞定了,确实是这样,感谢贵公司关于Qt方面提供的宝贵开发经验
author: cpu    time: 2019-3-12 10:01
也谢谢优视的大力支持
author: besovideo    time: 2019-3-12 10:07
感谢您的分享。




欢迎光临 mobile CCTV,mobile surveillance,police body worn cameras (http://bbs.besovideo.com:8067/) Powered by Discuz! X3.2