背景:本人最近有一项目要连接IP摄像头,市场上两大主流厂商为海康与大华,SDK成熟,很容易就能连接并取流。连接好海康与大华后,因为公司也有自己的IPC,也需要把公司的IPC连接上。
经历:拿到公司IPC SDK与demo后,就开始按海康大华的连接思路工作了。连接类写好后,经测试,问题就来了:连接一直有问题,不是解码库抛异常,就是登录得了但回调不了视频流。很困惑....与库开发人员联系,他们坚信库没问题,而我测试又一直有问题。最后没办法,写了个demo证明问题的存在发给库开发人员测试。
一天过去了,经过几次交流,问题找到了,库完全没问题,是我的调用方法错了。Demo的调用方法是正确的,只是我没仔细按照里面的方法调用。
原因:我按海康大华的思路进行编写调用,而公司的IPC与它们有些不同,我没仔细看就栽在这里头。
海康大华调用方法(以大华代码为例):
登录成功得到ID luserid_;
使用PLAY_GetFreePort(&lplayport_)得到播放器的播放端口lplayport_;
PLAY_SetDecCallBackEx(传入lplayport_)设置播放器的回调函数,在此回调中得到视频流数据。
CLIENT_RealPlay(传入luserid_)启动预览得到预览句柄lrealplay_;
CLIENT_SetRealDataCallBackEx(传入lrealplay_)设置回调函数
回调函数中调用PLAY_InputData(传入lplayport_)把流数据压入给播放器解码。
公司IPC调用方法:
登录成功得到ID luserid_;
X_VideoOpen得到播放端口lplayport_
X_SetVisibleDecCallBack(传入lplayport_,本人错传为lrealplay_)设置播放器的回调函数,在此回调中得到视频流数据。
NET_StartRealPlay(传入luserid_)启动预览并设置回调函数,得到预览句柄lrealplay_;
回调函数中调用X_VideoInputData(传入lplayport_,本人错传为luserid_)把流数据压入给播放器解码。
写完一看竟然是一样的,从头到尾都是我的错....
面壁去
结论:找不到出错原因,就一直认为是库有问题,不该;传错参数问题很难调试发现,麻烦;库没对传入错误的参数提示出错信息,而是直接异常或不工作,不友好。
作者:phata
出处:http://www.cnblogs.com/wqvbjhc/
本文版权归作者和CSDN共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。