mobile CCTV,mobile surveillance,police body worn cameras

 forgetPW
 registerNow
search
12NextPage
backToList newPost
view: 8898|reply: 17

CUSDK二次开发

[copyURL]

6

主题

400

帖子

1590

积分

vipMem

Rank: 6Rank: 6

积分
1590
poston 2017-3-21 14:43 | 显示全部楼层 |阅读模式
典型产品&方案及常用技术支持资料(包含开源代码,SDK,设备模拟器&平台软件下载开放网盘地址等),https://www.besovideo.com/detail?t=1&i=85

在开始使用BVCU SDK进行开发之前,需要了解SDK涉及的几个概念。

BVCU SDK涉及了这样几个概念:SessionDialogCommand,了解了这些概念,也就掌握了整个SDK
Session

SDK是作为客户端的一端,作为客户端(CU),BVCU必须登录服务器(Server),而且支持同时登录多个服务器。在BVCU每次登录服务器成功之后,就会创建一个Session对象,BVCU.h中用 BVCU_HSession 表示。

调用接口 BVCU_Login 成功后登录服务器并创建一个Session对象。调用接口 BVCU_Logout 成功后退出服务器并销毁Session对象。

由此,Session起到了登录连接服务器的唯一标识作用。



Dialog

BVCU的最重要的功能就是预览(或监视)服务器(Server)传过来的设备(PU)音视频。一台设备可以有多个通道,每个通道可能有音频或者视频。预览PU通道的视音频时,BVCU需要

向服务器发起预览请求,这种预览的请求称为“会话”(Dialog)。在BVCU.h中用 BVCU_HDialog 表示。在实际使用中,根据媒体方向的不同,Dialog有以下几种常见的类型:

类型1Dilaog请求接收1路视频流,或者额外再接收2路音视频。这是最常见的情况。

类型2Dialog请求接收设备的1路音频流,并发送1路本地音频给设备,这被称为语音对讲。

类型3Dialog请求发送1路本地音频流给多个设备。这被称为语音广播。

开发者应该注意,类型2和类型3(语音对讲)的Dialog在整个BVCU库只能有一个。

在开发中,调用 BVCU_Dialog_Open 向服务器请求发起一个Dialog并创建一个Dialog对象。Dialog的目标由 BVCU_DialogParam 结构体中的 iTargetCount.pTarget指定。

对类型1和类型2DialogiTargetCount总是1,对于类型3iTargetCount可以大于1.Dialog的类型由 BVCU_DialogParam.iAVStreamDir决定。

BVCU_DialogControlParam_Render参数决定了是否在窗口中播放音视频,BVCU_DialogControlParam_Storage 决定了是否存储接收到的音视频数据及存储路径。

BVCU_Dialog_Update 函数通过更改 BVCU_DialogParam.iAVStreamDir 来改变一个已经建立的Dialog的媒体方向,这只对类型1有意义。例如可以去掉/增加一个音频流等。

BVCU_Dialog_Control 函数更改会话的本地设置,包括接收、存储和回放等。

BVCU_Dialog_Snapshot 函数抓取会话中接收到的一帧视频,存为图像文件。

BVCU_Dialog_Close 函数关闭Dialog并摧毁Dialog对象。



Command

除了上述预览音视频外,BVCU还需要通过和服务器通讯来支持其他功能。BVCU需要向服务器发送命令包,每条命令对应一个Command对象,在BVCU.h中用BVCU_Command表示。

调用者通过调用 BVCU_SendCommand 接口向服务器发送命令。



注意:在BVCU 库中,Session对象中包括Dialog对象和Command对象,当Session对象销毁时,所有已存在的Dialog对象和Command对象都将被销毁。



在对SessionDialogCommand有了大致的了解后下面是对SDK调用流程和涉及到的相关接口的介绍(接口涉及到的数据结构这里不做赘述,可在客户端开发手册或相关头文件中查阅)

SDK调用主要流程如下图所示:


    其中的虚线部分的流程模块是可选部分,不会影响其他流程和模块的功能使用。按功能实现的不同可分为以上几个模块。
    左侧部分是会话相关的功能模块,包括预览、更改和关闭音视频通道、打开和关闭GPS通道、打开和关闭透明串口通道和向透明串口通道中写入数据。
    右侧包括接收服务器通知、向服务器发送命令、平台或者前端文件的检索与下载(FTP)以及回放录像文件和GPS轨迹。调用BVCU实现以上每个功能模块的时候,初始化SDK、登录服务器、获取设备列表、退出服务器和释放SDK5个流程都是必不可少的。

在实际调用接口开发过程中,BVCU库有以下几个通用的使用原则:
    所有需要发送网络数据的函数(包括 BVCU_Login、BVCU_Logout、BVCU_Dialog_Open、BVCU_Dialog_Update、BVCU_Dialog_Close 和 BVCU_SendCmd),都支持异步回调。如果函数返回失败,则并没有发送网络命令包给服务器,也不会调用回调函数。如果函数返回成功,则意味着函数发出了网络命令包给服务器,但命令执行结果通过回调函数来通知应用程序。
    不可以在回调中调用除了 BVCU_GetSessionInfo、BVCU_GetDialogInfo、BVCU_SetLogLevel、BVCU_GetLogLevel 之外的任何BVCU函数。
    不可以在回调函数中执行任何可能导致阻塞的操作,例如执行 Windows API MessageBox 等。



初始化SDKBVCU_Initialize):对整个BVCU库进行初始化,分配内部相关结构内存,初始化网络接口和协议相关数据,初始化并启动各线程,这些线程包括:网络传输线程、数据存储线程、编解码线程、视频播放线程、音频采集线程和音频播放线程。此外,初始化FTP相关数据,启动FTP内部线程。

开发者在调用初始化接口时,需要分配该接口的参数,参数包括全局事件回调,此回调需要开发者自己定义。如果初始化成功,则 BVCU_Initialize 返回 BVCU_RESULT_S_OK,返回其他值则失败。初始化成功,BVCU SDK会把库内部检测到的全局事件通过事件回调通知应用程序。(注:回调函数中不可阻塞)。

释放SDKBVCU_Finish):释放BVCU库内部分配的数据内存,结束内部线程,释放资源。

/**
*初始化BVCU库,只能在应用程序启动时调用一次。
任何其他BVCU库函数只有在BVCU_Initialize成功后才可以调用
*/
LIBBVCU_API BVCU_Result BVCU_Initialize(const BVCU_GlobalParam* pParam);



登录服务器(BVCU_Login):开发者调用此接口成功,则将BVCU与服务器建立连接,并创建一个 Session 对象,在建立连接后,服务器通过参数中的回调通知应用软件。同时,服务器也会通过onNotify通知本地应用程序,

其中,第二个参数 BVCU_ServerParam 结构体中的 OnEvent 回调用于该 Session 相关的的事件。例如登录成功或者失败,退出事件等。BVCU_ServerParam 结构中的 OnNotify 回调用于服务器向应用程序发送通知,

例如设备上下线通知,报警通知等。(注:回调函数中不可阻塞)。

退出服务器(BVCU_Logout):调用此接口断开与服务器的连接,释放网络资源,销毁Session对象。

/**
*登录Server。该函数是异步的。如果登录成功,在返回前或者返回后会产生OnEvent回调。
* @param[out] phSession: 返回登录Session
* @param[in] pParam: Server信息
* @return: 常见返回值
*        BVCU_RESULT_S_OK: 正确完成。结果通过OnEvent通知调用者。
*        BVCU_RESULT_E_FAILED或其他: 其他错误导致失败
*/
LIBBVCU_API BVCU_Result BVCU_Login(BVCU_HSession* phSession, BVCU_ServerParam* pParam);



获取设备列表是在登录服务器成功后,发送命令来获取注册该服务器上的设备。获取设备列表则需要调用BVCU_SendCmd()来发送命令。
发送命令需要通过填写 BVCU_Command 结构,在获取设备列表时,BVCU_Command 的主命令字段填 BVCU_METHOD_QUERY, 子命令填 BVCU_SUBMETHOD_PU_LIST
服务器处理成功后,通过 BVCU_Command 中的回调通知应用层。(注:回调函数中不可阻塞)。
/**
* CU发送命令。该函数是异步的,命令完成后触发BVCU_Command.OnEvent回调通知。
* @param[in] hSession: BVCU_Login返回的登录Session.
* @return: 常见返回值
*        BVCU_RESULT_S_OK: 调用正确完成。结果通过OnEvent通知调用者。
*        BVCU_RESULT_E_NOTEXIST: 登录Session不存在,即未登录
*        BVCU_RESULT_E_FAILED或其他: 其他错误导致失败
*/
LIBBVCU_API BVCU_Result BVCU_SendCmd(BVCU_HSession hSession, BVCU_Command* pCommand);

虚线部分的流程模块是可选部分,也是最主要的功能模块。对Dialog的操作 、 命令操作 、 接收通知, FTP操作。

1、Dialog的操作, 分为创建(打开),更改会话状态,写入,关闭
/**
* 创建(打开)会话(视频、TSP串口、)。该函数是异步的,如果创建会话成功,在返回前或者返回后会产生OnEvent回调函数,
* 事件码是BVCU_EVENT_DIALOG_OPEN,如果事件参数的iResult是失败代码,则会话创建失败,调用者不必调用BVCU_Dialog_Close
* @param[out] phDialog: 返回会话句柄.
* @param[in] pParam: 会话参数。
* @param[in] pControl: 控制参数。
* @return: 常见返回值
*        BVCU_RESULT_S_OK: 调用正确完成。结果通过OnEvent通知调用者。
*        BVCU_RESULT_E_UNSUPPORTED: 不支持的操作,例如在不支持对讲的通道上要求对讲
*        BVCU_RESULT_E_FAILED或其他: 其他错误导致失败
*/
LIBBVCU_API BVCU_Result BVCU_Dialog_Open(BVCU_HDialog* phDialog, BVCU_DialogParam* pParam, BVCU_DialogControlParam* pControl);


/**
* 更改会话的本地设置,包括接收/存储/回放等。此函数不需要与Server通讯。
* @param[in] hDialog: BVCU_Dialog_Open返回的Dialog句柄.
* @param[in] pParam: 控制参数。
* @return: 常见返回值
*        BVCU_RESULT_S_OK: 成功
*        BVCU_RESULT_E_NOTEXIST: 会话不存在
*        BVCU_RESULT_E_UNSUPPORTED: 不支持的操作
*        BVCU_RESULT_E_FAILED或其他: 其他错误导致失败
*/
LIBBVCU_API BVCU_Result BVCU_Dialog_Control(BVCU_HDialog hDialog, BVCU_DialogControlParam* pParam);


/**
* 向会话通道中写数据。目前只支持含BVCU_MEDIADIR_DATASEND方向的会话通道。
* @param[in] hDialog: BVCU_Dialog_Open返回的Dialog句柄.
* @param[in] pData: 写入的数据。
* @return: 常见返回值
*        BVCU_RESULT_S_OK: 成功
*        BVCU_RESULT_E_NOTEXIST: 会话不存在
*        BVCU_RESULT_E_UNSUPPORTED: 不支持的操作
*        BVCU_RESULT_E_FAILED或其他: 其他错误导致失败
*/
LIBBVCU_API BVCU_Result BVCU_Dialog_Write(BVCU_HDialog hDialog, SAV_Packet* pData);


/**
* 关闭会话。该函数是异步的,在返回前或者返回后会产生OnEvent回调函数,
* 注意:(1)该函数必须在BVCU_Dialog_Open成功且BVCU_Dialog_OpenOnEvent回调函数被调用之后才可以调用
* (2)不能在任何OnEvent/OnNotify中调用BVCU_Dialog_Close
* @param[in] hDialog: BVCU_Dialog_Open返回的Dialog句柄.
* @return: 常见返回值
*        BVCU_RESULT_S_OK: 正确完成。结果通过OnEvent通知调用者。
*        BVCU_RESULT_S_IGNORE:  会话不存在
*        BVCU_RESULT_E_FAILED或其他: 其他错误导致失败
*/
LIBBVCU_API BVCU_Result BVCU_Dialog_Close(BVCU_HDialog hDialog);

2、命令操作
/**
* CU发送命令。该函数是异步的,命令完成后触发BVCU_Command.OnEvent回调通知。
* @param[in] hSession: BVCU_Login返回的登录Session.
* @return: 常见返回值
*        BVCU_RESULT_S_OK: 调用正确完成。结果通过OnEvent通知调用者。
*        BVCU_RESULT_E_NOTEXIST: 登录Session不存在,即未登录
*        BVCU_RESULT_E_FAILED或其他: 其他错误导致失败
*/
LIBBVCU_API BVCU_Result BVCU_SendCmd(BVCU_HSession hSession, BVCU_Command* pCommand);

3、接收通知、接收通知, FTP操作和录像  请参阅客户端开发手册。

  
退出服务器(BVCU_Logout):调用此接口断开与服务器的连接,释放网络资源,销毁Session对象。
/**
* 退出登录。该函数是异步的,在返回前或者返回后会产生OnEvent回调。
* 注意:(1)该函数必须在BVCU_Login登录成功且BVCU_LoginOnEvent回调函数被调用之后才可以调用
*  (2)不能在任何OnEvent/OnNotify中调用BVCU_Logout
* @param[in] hSession: BVCU_Login返回的登录Session.
* @return: 常见返回值
*    BVCU_RESULT_S_OK: 正确完成。结果通过OnEvent通知调用者。
*    BVCU_RESULT_E_FAILED或其他: 其他错误导致失败
*/
LIBBVCU_API BVCU_Result BVCU_Logout(BVCU_HSession hSession);

释放SDKBVCU_Finish):释放BVCU库内部分配的数据内存,结束内部线程,释放资源。
/**
*停止使用BVCU
*/
LIBBVCU_API BVCU_Result BVCU_Finish();
reply

使用道具 report

1

主题

5

帖子

46

积分

newBie

Rank: 1

积分
46
poston 2018-6-5 12:19 | 显示全部楼层
描述:我们开发的平台时基于b/s架构  是用java语言开发的

  需要实现功能
       1:我需要在我们平台展示实时画面
       2:还有支持回放功能
      
       所提出的问题:
        
         我看提供的sdk都是基于c语言 引用的jar包都是.lib结尾
         麻烦指导下 提供针对性的指导  针对如果利用java语言 集成到我们平台上来 作为无人机实时画面的展示以及回放功能
reply agree 1 Against 0

使用道具 report

3

主题

13

帖子

55

积分

member

Rank: 2

积分
55
poston 2018-4-11 15:36 | 显示全部楼层
这些都是集成好的模块,我们只能调用接口吗?我看咱们cu软件缺少双向实时视频功能,比如微信的视频通话这样的,我们自己能二次开发吗?
reply agree Against

使用道具 report

3

主题

13

帖子

55

积分

member

Rank: 2

积分
55
poston 2018-4-13 10:04 | 显示全部楼层
你好,我导入咱们的sdk,运行时提示   无法加载DLL “managerlayer.dll”,找不到指定模块。请问如何解决
reply agree Against

使用道具 report

10

主题

531

帖子

2423

积分

admin

Rank: 9Rank: 9Rank: 9

积分
2423
poston 2018-4-13 11:46 | 显示全部楼层
请看置顶贴。CUSDK在我们软件分享的开放网盘里面免费下载使用。
下载的微云网盘地址为:
我们所有的软件,目前都通过QQ网盘提供下载:
(包含PC端接收浏览视频的客户端软件:smarteye client以及流媒体服务器smarteye server,SDK,
手机拍传软件APP-MPU,手机客户端软件APP-MCU,局域网搜索配置工具、产品手册、文档、固件)
https://share.weiyun.com/55EkBv1

其中,smarteye client客户端CUSDK的位置在:

本帖子中包含更多资源

pls login 才可以下载或查看,没有帐号?registerNow

x
reply agree Against

使用道具 report

10

主题

531

帖子

2423

积分

admin

Rank: 9Rank: 9Rank: 9

积分
2423
poston 2018-4-13 13:18 | 显示全部楼层
http://bbs.besovideo.com:8067/forum.php?mod=viewthread&tid=200&extra=page%3D1
reply agree Against

使用道具 report

1

主题

579

帖子

1995

积分

vipMem

Rank: 6Rank: 6

积分
1995
poston 2018-6-5 12:22 | 显示全部楼层
wwq post on2018-6-5 12:19
描述:我们开发的平台时基于b/s架构  是用java语言开发的

  需要实现功能

B/S可以参考http://120.210.75.225:8067/forum ... &extra=page%3D1
使用插件方式,javascript前端开发。
reply agree Against

使用道具 report

2

主题

8

帖子

26

积分

newBie

Rank: 1

积分
26
poston 2018-11-3 17:44 | 显示全部楼层
楼主,请问有没有C#版本的sdk啊?
reply agree Against

使用道具 report

10

主题

531

帖子

2423

积分

admin

Rank: 9Rank: 9Rank: 9

积分
2423
poston 2018-11-3 18:05 | 显示全部楼层
有的,都在网盘SDK里面下载,winformdemo,网盘地址在下面页面里面:
用安卓手机图传软件MPU APP(按公安部一所GA/T 947-2015单警视音频执法记录仪规范标准编写)来仿真实际4G图传设备(智能头盔、4G执法记录仪、布控球等)进行系统测试(录像-实时图传-对讲-定位轨迹-抓拍上传)(包含所有软件(服务器、客户端、SDK、用户手册、工具软件、固件等)的开放下载的网盘地址,熟悉平台操作,自建服务器平台等),全部开放免费下载使用:
http://www.besovideo.com/chn/articles/mpuhowto.asp
reply agree Against

使用道具 report

13

主题

373

帖子

2023

积分

vipMem

Rank: 6Rank: 6

积分
2023
poston 2019-1-21 19:50 | 显示全部楼层
一些以前客户调试的截图。

本帖子中包含更多资源

pls login 才可以下载或查看,没有帐号?registerNow

x
reply agree Against

使用道具 report

creditRule

QQ|wireless surveillance

GMT+8, 2024-3-29 07:14 , Processed in 0.080082 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

QuickReply backToTop BackToList