mobile CCTV,mobile surveillance,police body worn cameras

 forgetPW
 registerNow
search
Owner: meige
打印 prevThread nextThread

适配BVCSP.h接口出现问题

[copyURL]

11

主题

157

帖子

533

积分

advMem

Rank: 4

积分
533
31#
 Owner| poston 2019-6-6 18:01 | 显示全部楼层

2.cu端有远程抓拍,远程录像,远程录音,是向pu端发送消息,让pu端执行拍照,录像,录音功能吗?如果是,能否提供接收这些消息地方。
3.BVCSP_Dialog_Write写入数据,是否是cu端开始传输时,才执行写入数据操作。
4.cu端有只传音频,音视频同传,只传视频的操作,是向pu端发送信息,pu端根据不同的消息,决定向通道中写入什么数据是吗?
reply agree Against

使用道具 report

11

主题

157

帖子

533

积分

advMem

Rank: 4

积分
533
32#
 Owner| poston 2019-6-10 16:21 | 显示全部楼层
调用BVCSP_Dialog_Write 方法向通道中写入数据时:
1.如果是实时图传,会返回-65521 内部状态错误
2.如果是上传文件,会返回-65526 未实现
reply agree Against

使用道具 report

11

主题

157

帖子

533

积分

advMem

Rank: 4

积分
533
33#
 Owner| poston 2019-6-10 17:40 | 显示全部楼层
Arthur post on2019-6-10 17:09
BVCU_SUBMETHOD_PU_MANUALRECORD,//手工启动/停止PU录像。输入类型:BVCU_PUCFG_ManualRecord;输出类型: ...

sessionParam.OnCommand = OnCommand;
sessionParam.OnNotify = OnNotify;
sessionParam.OnDialogCmd = OnDialogCommand;(该回调是用来做何操作,我一直是在这里做一些操作的)

以下是上传文件的代码:
bool OpenDialog()

  {

      if (!g_hSession || g_hDialog) return false;

      BVCSP_DialogParam dialogParam;

      memset(&dialogParam, 0, sizeof(dialogParam));

      dialogParam.iSize = sizeof(dialogParam);

      dialogParam.hSession = g_hSession;

      strcpy(dialogParam.stTarget.szID, "PU_8953");

      dialogParam.stTarget.iIndexMajor = BVCU_SUBDEV_INDEXMAJOR_DOWNLOAD;

      dialogParam.iAVStreamDir = BVCU_MEDIADIR_DATASEND;
      printf("open lib Dialog_Open 1\n");
      dialogParam.stFileTarget.pPathFileName="/sdcard/sdcard/video/0123456789_19700105083843000_000001.MP4";//"/sdcard/zpf_test123.h264";
      printf("open lib Dialog_Open 2\n");
      dialogParam.stFileTarget.iStartTime_iOffset=0;
      printf("open lib Dialog_Open 3\n");
      FILE *fp=fopen(dialogParam.stFileTarget.pPathFileName,"rb");
          if(!fp) return false;
          fseek(fp,0L,SEEK_END);
          int size=ftell(fp);
          fclose(fp);
          printf("open lib Dialog_Open size=%d\n",size);
      dialogParam.stFileTarget.iEndTime_iFileSize=size;
      printf("open lib Dialog_Open 4\n");
      dialogParam.OnEvent = OnDialogEvent;

      dialogParam.afterRecv = OnDialogAfterRecv;



      BVCSP_DialogControlParam dialogControlParam;

      memset(&dialogControlParam, 0, sizeof(dialogControlParam));

      dialogControlParam.iTimeOut = 30 * 1000;

      dialogControlParam.iDelayMax = 5000;

      dialogControlParam.iDelayMin = 500;

      dialogControlParam.iDelayVsSmooth = 3;
      //hejianfeng add start
                 void *handle=getHandle();
                 typedef BVCU_Result (*BVCSP_Dialog_Open)(BVCSP_HDialog* phDialog, BVCSP_DialogParam* pParam, BVCSP_DialogControlParam* pControl);
                 BVCSP_Dialog_Open Dialog_Open = (BVCSP_Dialog_Open) dlsym(handle, "BVCSP_Dialog_Open");
                if(!Dialog_Open)
                {
                        printf("open lib Dialog_Open fail\n");
                        cout<<dlerror()<<endl;
                        dlclose(handle);
                        return false;
                }
                 //hejianfeng add end
                BVCU_Result bvReulst=Dialog_Open(&g_hDialog, &dialogParam, &dialogControlParam);
                printf("open lib Dialog_Open \n");
                cout<<bvReulst<<endl;
      return BVCU_Result_SUCCEEDED(bvReulst);

  }


void OnDialogEvent(BVCSP_HDialog hDialog, int iEventCode, BVCSP_Event_DialogCmd* pParam)

  {

      if (!pParam) return;

//      BVCSP_DialogInfo dialogInfo;
//
//      memset(&dialogInfo, 0, sizeof(dialogInfo));

      switch (iEventCode)

      {

      case BVCSP_EVENT_SESSION_OPEN:

          if (pParam->iResult == BVCU_RESULT_S_OK)

          {

//              BVCSP_GetDialogInfo(g_hDialog, &dialogInfo);

              printf("打开设备: 的通道: 会话成功\n");
//              FILE *fd=fopen("/sdcard/zpf_test123.h264","rb");
              FILE *fd=fopen("/sdcard/sdcard/video/0123456789_19700105083843000_000001.MP4","rb");
                          if(!fd) return;
                          const int iDataLen = 100000;

                              char szData[iDataLen] = { 0 };
                              void *handle=getHandle();
                                 typedef BVCU_Result (*BVCSP_Dialog_Write)(BVCSP_HDialog hDialog, BVCSP_Packet* pData);
                                 BVCSP_Dialog_Write Dialog_Write = (BVCSP_Dialog_Write) dlsym(handle, "BVCSP_Dialog_Write");
                                if(!Dialog_Write)
                                {
                                        printf("open lib Dialog_Write fail\n");
                                        cout<<dlerror()<<endl;
                                        dlclose(handle);
                                        return ;
                                }
                               while (1)

                               {

                                   int iReadSize = fread(szData, sizeof(char), iDataLen, fd);

                                   memset(szData, 0, sizeof(szData));

                                   BVCSP_Packet packet;

                                   memset(&packet, 0, sizeof packet);

                                   packet.iDataType = BVCSP_DATA_TYPE_VIDEO;

                                   packet.iDataSize = iReadSize;

                                   fread(szData, 1, iReadSize, fd);

                                   packet.pData = szData;

                                   BVCU_Result result=Dialog_Write(g_hDialog,&packet);
                                   printf("open lib BVCSP_Dialog_Write success\n");
                                   cout<<result<<endl;
                                   printf("open lib BVCSP_Dialog_Write iReadSize=%d\n",iReadSize);
                                   if (iReadSize < iDataLen){

                                       break;

                                   }

                                   usleep(4);

                               }

                               fclose(fd);

          }

          else

          {

              printf("打开会话失败\n");

          }

          break;

      case BVCSP_EVENT_SESSION_CLOSE:

          if (pParam->iResult == BVCU_RESULT_S_OK)

          {

              printf("关闭会话成功\n");

          }

          else

          {

              printf("关闭会话失败\n");

          }

          break;

      default:

          break;

      }

  }
reply agree Against

使用道具 report

11

主题

157

帖子

533

积分

advMem

Rank: 4

积分
533
34#
 Owner| poston 2019-6-11 10:26 | 显示全部楼层
Arthur post on2019-6-11 09:44
上传文件如果想要cu端能够查询到文件,要上传到指定服务器目录 /PU_23504251/Video/20190611/PU_23504251_0 ...

我定义了BVCU_File_TransferParam对象后,把这个对象传到哪个方法里呢?
reply agree Against

使用道具 report

11

主题

157

帖子

533

积分

advMem

Rank: 4

积分
533
35#
 Owner| poston 2019-6-11 10:42 | 显示全部楼层
Arthur post on2019-6-11 09:44
上传文件如果想要cu端能够查询到文件,要上传到指定服务器目录 /PU_23504251/Video/20190611/PU_23504251_0 ...

/**
* 创建文件传输。该函数是异步的。如果创建会话成功,在返回前或者返回后会产生OnEvent回调函数,
* 事件码是BVCU_EVENT_DIALOG_OPEN,如果事件参数的iResult是失败代码,则会话创建失败。
* @param[out] phTransfer: 返回传输句柄.
* @param[in] pParam: 传输参数。
* @return: 常见返回值
*        BVCU_RESULT_S_OK: 调用正确完成。结果通过OnEvent通知调用者。
*        BVCU_RESULT_E_UNSUPPORTED: 不支持的操作,服务器版本过低。
*        BVCU_RESULT_E_FAILED或其他: 其他错误导致失败
*/
LIBBVCU_API BVCU_Result BVCU_FileTransfer_Open(BVCU_File_HTransfer* phTransfer, BVCU_File_TransferParam* pParam);

/**
*获得会话相关信息
*@param[in] hTransfer: BVCU_FileTransfer_Open返回的hTransfer,或BVCU_File_GlobalParam.OnFileRequest通知的hTransfer
*@param[out] pInfo: BVCU_File_TransferInfo
*@return: BVCU_Result
*/
LIBBVCU_API BVCU_Result BVCU_FileTransfer_GetInfo(BVCU_File_HTransfer hTransfer, BVCU_File_TransferInfo* pInfo);

/**
* 关闭文件传输。
* @param[in] hTransfer: 同BVCU_FileTransfer_GetInfo.
* @return: 常见返回值
*        BVCU_RESULT_S_OK: 正确完成。结果通过OnEvent通知调用者。
*        BVCU_RESULT_S_IGNORE:  会话不存在
*        BVCU_RESULT_E_FAILED或其他: 其他错误导致失败
*/
LIBBVCU_API BVCU_Result BVCU_FileTransfer_Close(BVCU_File_HTransfer hTransfer);
问下这个不是cu端调用的接口吗?
开发手册里
主动上传文件 BVCSP_Dialog_Open/BVCSP_Dialog_Write 会话目标的子通道号写BVCU_SUBDEV_INDEXMAJOR_DOWNLOAD, 媒体方向为BVCU_MEDIADIR_DATASEND。 通过BVCSP_Dialog_Write写文件流到通道来上传文件。  
问下实现上传不是调用BVCSP_Dialog_Open/BVCSP_Dialog_Write方法实现吗?
reply agree Against

使用道具 report

11

主题

157

帖子

533

积分

advMem

Rank: 4

积分
533
36#
 Owner| poston 2019-6-11 11:25 | 显示全部楼层
Arthur post on2019-6-11 10:18
bvcspPacket.iDataType = BVCSP_DATA_TYPE_TSP; 你不是上传文件么,不应该填video
dialogParam.stFileTarg ...

strcpy(dialogParam.stTarget.szID, "NRU_");修改成这个后,
dialogParam.OnEvent = OnDialogEvent;这个回调打开会话失败,返回值是-65523 请求错误
reply agree Against

使用道具 report

11

主题

157

帖子

533

积分

advMem

Rank: 4

积分
533
37#
 Owner| poston 2019-6-11 12:05 | 显示全部楼层
Arthur post on2019-6-11 11:37
dialogParam.stFileTarget.pPathFileName 这个远端路径改了么,先传到/temp/目录下

修改成/temp,打开会话成功,但是BVCSP_Dialog_Write写数据还是返回值为-65526
reply agree Against

使用道具 report

11

主题

157

帖子

533

积分

advMem

Rank: 4

积分
533
38#
 Owner| poston 2019-6-11 13:54 | 显示全部楼层
Arthur post on2019-6-11 12:31
要么没有流,要么是通道还没有完全建立成功。

问下BVCSP_Dialog_Open 成功后:
sessionParam.OnCommand = OnCommand;

sessionParam.OnNotify = OnNotify;

sessionParam.OnDialogCmd = OnDialogCommand;
这三个回调方法会走吗?现在现象是都不走。

如果strcpy(dialogParam.stTarget.szID, "PU_8953");这样修改BVCSP_Dialog_Open 成功后
sessionParam.OnDialogCmd = OnDialogCommand;这个回调会走,
OnDialogCommand success IndexMajor =66064

sessionParam.OnCommand = OnCommand;这个回调不会走。
reply agree Against

使用道具 report

11

主题

157

帖子

533

积分

advMem

Rank: 4

积分
533
39#
 Owner| poston 2019-6-11 15:17 | 显示全部楼层
Arthur post on2019-6-11 14:19
目标ID填成PU_ID就相当于去向这个PU设备(这个ID应该是你自己吧)发送请求了,所以会有这个回调。主动上 ...

BVCSP_Dialog_Write写数据 返回值-65526,不知道如何解,你们那边能否写的demo实例给到我
reply agree Against

使用道具 report

11

主题

157

帖子

533

积分

advMem

Rank: 4

积分
533
40#
 Owner| poston 2019-6-11 16:06 | 显示全部楼层
Arthur post on2019-6-11 15:36
bvcspPacket.iDataType = BVCSP_DATA_TYPE_TSP;这个地方改了么

这个地方改了。
reply agree Against

使用道具 report

creditRule

QQ|wireless surveillance

GMT+8, 2024-5-2 09:34 , Processed in 0.071292 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

QuickReply backToTop BackToList