mobile CCTV,mobile surveillance,police body worn cameras

 forgetPW
 registerNow
search
Owner: meige
打印 prevThread nextThread

适配BVCSP.h接口出现问题

[copyURL]

1

主题

320

帖子

1147

积分

vipMem

Rank: 6Rank: 6

积分
1147
61#
poston 2019-6-6 17:36 | authorOnly
meige post on2019-6-6 13:58
问下 pu端的图片,音频和视频如何上传到pc端的,能否给相关demo,谢谢!

参照下开发手册。目前没有这个demo。
reply agree Against

使用道具 report

11

主题

157

帖子

533

积分

advMem

Rank: 4

积分
533
62#
 Owner| poston 2019-6-6 18:00 | authorOnly
Arthur post on2019-6-6 17:36
参照下开发手册。目前没有这个demo。

开发手册,只看到主动上传的方法,没看到回调,查看上传的状态。
reply agree Against

使用道具 report

11

主题

157

帖子

533

积分

advMem

Rank: 4

积分
533
63#
 Owner| poston 2019-6-6 18:01 | authorOnly

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

使用道具 report

11

主题

157

帖子

533

积分

advMem

Rank: 4

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

使用道具 report

1

主题

320

帖子

1147

积分

vipMem

Rank: 6Rank: 6

积分
1147
65#
poston 2019-6-10 17:09 | authorOnly
BVCU_SUBMETHOD_PU_MANUALRECORD,//手工启动/停止PU录像。输入类型:BVCU_PUCFG_ManualRecord;输出类型:无
BVCU_SUBMETHOD_PU_SNAPSHOT, //手工远程抓拍。输入类型:BVCU_PUCFG_Snapshot;输出类型:无
sesParam.OnCommand = PUOnCommand; PU端接收命令,决定做何操作。

不同的媒体方向iAVStreamDir 来决定音频还是视频传输。

至于write的问题,贴下代码看下。
reply agree Against

使用道具 report

11

主题

157

帖子

533

积分

advMem

Rank: 4

积分
533
66#
 Owner| poston 2019-6-10 17:40 | authorOnly
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

1

主题

320

帖子

1147

积分

vipMem

Rank: 6Rank: 6

积分
1147
67#
poston 2019-6-11 09:32 | authorOnly
OnDialogCmd 里接收被动Dialog。 比如cu端请求音视频,cu端下载pu端的文件。
reply agree Against

使用道具 report

1

主题

320

帖子

1147

积分

vipMem

Rank: 6Rank: 6

积分
1147
68#
poston 2019-6-11 09:44 | authorOnly
上传文件如果想要cu端能够查询到文件,要上传到指定服务器目录 /PU_23504251/Video/20190611/PU_23504251_00_20190611_092908.mkv  (video audio photo) ,并且前缀名和后缀名有格式要求。前缀PU_xxxxxx(PUID)_00(通道) _xxxx(时间)。后缀.mkv  .mp4 .aac .jpg。

直接上传到/temp/目录下,没有任何要求,但是cu端文件检索是查不到的。 /temp/2019-06-11/PU_23504251_00_20190611_092456.jpg      /temp/123.apk
上传文件时,肯定是需要填一个本地路径和远端路径的。
BVCU_File_TransferParam param;
param.pLocalFilePathName
param.pRemoteFilePathName

param.OnEvent = OnFileTransferEvent;

本帖子中包含更多资源

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

x
reply agree Against

使用道具 report

1

主题

320

帖子

1147

积分

vipMem

Rank: 6Rank: 6

积分
1147
69#
poston 2019-6-11 10:18 | authorOnly
bvcspPacket.iDataType = BVCSP_DATA_TYPE_TSP; 你不是上传文件么,不应该填video
dialogParam.stFileTarget.pPathFileName 这个应该是远端路径。
strcpy(dialogParam.stTarget.szID, "NRU_"); 这个应该是存储服务器ID。 填NRU_ 服务器会自动选择。
reply agree Against

使用道具 report

11

主题

157

帖子

533

积分

advMem

Rank: 4

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

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

使用道具 report

creditRule

QQ|wireless surveillance

GMT+8, 2024-12-23 04:46 , Processed in 0.062502 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

QuickReply backToTop BackToList