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
81#
 Owner| poston 2019-6-11 16:06 | authorOnly
Arthur post on2019-6-11 15:36
bvcspPacket.iDataType = BVCSP_DATA_TYPE_TSP;这个地方改了么

这个地方改了。
reply agree Against

使用道具 report

0

主题

20

帖子

80

积分

member

Rank: 2

积分
80
82#
poston 2019-6-11 19:47 | authorOnly
如果传输文件时得到的返回值为 BVCU_RESULT_E_NOTIMPL(-65526) 可能是一次传输的数据太大了,建议等待一会。每次上传数据量建议设为800字节。
reply agree Against

使用道具 report

11

主题

157

帖子

533

积分

advMem

Rank: 4

积分
533
83#
 Owner| poston 2019-6-11 19:58 | authorOnly
yumengtao post on2019-6-11 19:47
如果传输文件时得到的返回值为 BVCU_RESULT_E_NOTIMPL(-65526) 可能是一次传输的数据太大了,建议等待一会 ...

每次上传数据改成800字节,有等待上传,返回值还是BVCU_RESULT_E_NOTIMPL(-65526)
reply agree Against

使用道具 report

0

主题

20

帖子

80

积分

member

Rank: 2

积分
80
84#
poston 2019-6-11 22:03 | authorOnly
在回调通知你上传之后,你一个包都无法上传是吗?
reply agree Against

使用道具 report

11

主题

157

帖子

533

积分

advMem

Rank: 4

积分
533
85#
 Owner| poston 2019-6-12 09:05 | authorOnly
yumengtao post on2019-6-11 22:03
在回调通知你上传之后,你一个包都无法上传是吗?

是的,没有一组数据写入通道上传成功的。
reply agree Against

使用道具 report

11

主题

157

帖子

533

积分

advMem

Rank: 4

积分
533
86#
 Owner| poston 2019-6-12 09:57 | authorOnly
yumengtao post on2019-6-11 22:03
在回调通知你上传之后,你一个包都无法上传是吗?

回调的log信息
06-12 09:55:03.701 16816 16820 D MG_LOG  : Log_Callback ,level=1,log=jni-r19c/../src/ThreadNetwork.cpp, line 190, function Login, call Login:1 CUID:8953 user:admin server:192.168.0.175:9701 agent:BVCSP_PU_Test
06-12 09:55:03.724 16816 16820 D MG_LOG  : Log_Callback ,level=1,log=jni-r19c/../src/Session.cpp, line 257, function OnEvent, CSession::OnEvent:1 evetCode:1 result:0
06-12 09:55:03.800 16816 16820 D MG_LOG  : Log_Callback ,level=1,log=jni-r19c/../src/BVDialog.cpp, line 361, function OnEvent, CBVDialog::OnEvent:2 eventCode:1 result:0
06-12 09:55:04.042 16816 16820 D MG_LOG  : Log_Callback ,level=1,log=jni-r19c/../src/Session.cpp, line 276, function OnCommand, 1 CSession::OnCommand: method:1 submothod:65541
06-12 09:55:04.052 16816 16820 D MG_LOG  : Log_Callback ,level=1,log=jni-r19c/../src/Session.cpp, line 276, function OnCommand, 1 CSession::OnCommand: method:1 submothod:65542
06-12 09:55:04.062 16816 16820 D MG_LOG  : Log_Callback ,level=1,log=jni-r19c/../src/Session.cpp, line 276, function OnCommand, 1 CSession::OnCommand: method:1 submothod:65543
06-12 09:55:07.717 16816 16820 D MG_LOG  : Log_Callback ,level=1,log=jni-r19c/../src/ThreadNetwork.cpp, line 354, function Invite, 1 call Invite:3 targetID:NRU_ index:66064 media:16 bOverTCP:1 iResult:0
06-12 09:55:07.789 16816 16820 D MG_LOG  : Log_Callback ,level=1,log=jni-r19c/../src/BVDialog.cpp, line 361, function OnEvent, CBVDialog::OnEvent:3 eventCode:1 result:0
06-12 09:55:34.045 16816 16820 D MG_LOG  : Log_Callback ,level=1,log=jni-r19c/../src/Session.cpp, line 286, function CommandOnEvent, 1 CSession::CommandOnEvent: method:1 submothod:65541 result:-65516
06-12 09:55:34.052 16816 16820 D MG_LOG  : Log_Callback ,level=1,log=jni-r19c/../src/Session.cpp, line 286, function CommandOnEvent, 1 CSession::CommandOnEvent: method:1 submothod:65542 result:-65516
06-12 09:55:34.062 16816 16820 D MG_LOG  : Log_Callback ,level=1,log=jni-r19c/../src/Session.cpp, line 286, function CommandOnEvent, 1 CSession::CommandOnEvent: method:1 submothod:65543 result:-65516
帮忙分析下。
reply agree Against

使用道具 report

0

主题

20

帖子

80

积分

member

Rank: 2

积分
80
87#
poston 2019-6-12 10:16 | authorOnly
我将我写的思路发给你,你对比一下我们之间的异同
1.登陆时注册文件传输通道。

    //file    g_channelInfo[channelIndex].iChannelIndex = BVCU_SUBDEV_INDEXMAJOR_DOWNLOAD;    g_channelInfo[channelIndex].iMediaDir = BVCU_MEDIADIR_DATASEND;    strcpy(g_channelInfo[channelIndex++].szName, "file");

2.打开成功后,库会调用onDialogCmd回调 ,在onDialogCmd中需要注册onEvent回调,并填写相应的文件信息。

写文件信息
                     pParam->stFileTarget.iStartTime_iOffset = 0;        pParam->stFileTarget.iEndTime_iFileSize = fileInfo.size();//文件大小


3.onEvent回调被调用后,就可以上传数据了。

while (!data->close){        iSendLen = in.readRawData(sendBuf,sizeof(sendBuf));        if (iSendLen > 0){            bvcspPacket.bKeyFrame = 1;            bvcspPacket.iDataType = BVCSP_DATA_TYPE_TSP;            bvcspPacket.iDataSize = iSendLen;            bvcspPacket.pData = sendBuf;            BVCU_Result ret= BVCSP_Dialog_Write(data->dialog, &bvcspPacket);            if (BVCU_Result_FAILED(ret)){                DEBUG(ret);                if(ret == BVCU_RESULT_E_NOTIMPL){//可能上传过快,等1S继续上传                    while(ret == BVCU_RESULT_E_NOTIMPL){                        DEBUG("try to upload");                        QThread::sleep(1);                        ret= BVCSP_Dialog_Write(data->dialog, &bvcspPacket);                    }


以上是我的思路。

如果思路相同,可以看一下每次只发一个字节得到的返回结果是否还是-65526

本帖子中包含更多资源

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

x
reply agree Against

使用道具 report

11

主题

157

帖子

533

积分

advMem

Rank: 4

积分
533
88#
 Owner| poston 2019-6-12 11:07 | authorOnly
yumengtao post on2019-6-12 10:16
我将我写的思路发给你,你对比一下我们之间的异同
1.登陆时注册文件传输通道。

还是不行,我把我的代码贴给你分析下:
OpenDialog(){
BVCSP_DialogParam dialogParam;

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

      dialogParam.iSize = sizeof(dialogParam);

      dialogParam.hSession = g_hSession;

      strcpy(dialogParam.stTarget.szID, "NRU_");//NRU_

      dialogParam.stTarget.iIndexMajor = BVCU_SUBDEV_INDEXMAJOR_DOWNLOAD;

      dialogParam.iAVStreamDir = BVCU_MEDIADIR_DATASEND;
      dialogParam.stFileTarget.pPathFileName="/temp/Audio/20190611/PU_20190611_172552.aac";//"/PU_8953/Video/20181011/PU_1234567_20181011121314000_00001.JPG";
      dialogParam.stFileTarget.iStartTime_iOffset=0;
      FILE *fp=fopen("/sdcard/sdcard/audio/20190611_172552.aac","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 \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;
}

回调方法OnDialogEvent:
FILE *fd=fopen("/sdcard/sdcard/audio/20190611_172552.aac","r");
                        if(!fd) return;
                        const int iDataLen = 1;

                            char szData[iDataLen] = { 0 };
                             while (1)
                             {
                                     memset(szData, 0, sizeof(szData));
                                 int iReadSize = fread(szData, sizeof(char), iDataLen, fd);

//                                 memset(szData, 0, sizeof(szData));
                                 LOGD("iReadSize=%d,szData size=%d,char size=%d,g_hDialog=%d",iReadSize,sizeof(szData),sizeof(char),g_hDialog);
                                 BVCSP_Packet packet;

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

                                 packet.iDataType = BVCSP_DATA_TYPE_TSP;

                                 packet.iDataSize = iReadSize;
                                 packet.bKeyFrame=1;
//                                 fread(szData, 1, iReadSize, fd);

                                 packet.pData = szData;
                                 BVCU_Result result=BVCSP_Dialog_Write(g_hDialog,&packet);
                                 LOGD("BVCSP_Dialog_Write result=%d",result);
                                 if (iReadSize < iDataLen){
                                     break;
                                 }
                                 sleep(1);
                             }

                             fclose(fd);
reply agree Against

使用道具 report

0

主题

20

帖子

80

积分

member

Rank: 2

积分
80
89#
poston 2019-6-12 15:43 | authorOnly
strcpy(dialogParam.stTarget.szID, "NRU_");//NRU_ 这个地方 "NRU_" 即 NRU_ 有对应 其他设备吗?还是随意填写的一个ID。
reply agree Against

使用道具 report

0

主题

20

帖子

80

积分

member

Rank: 2

积分
80
90#
poston 2019-6-12 16:00 | authorOnly
您尝试一下起一个线程上传文件数据,不要阻塞onEvent回调。
reply agree Against

使用道具 report

creditRule

QQ|wireless surveillance

GMT+8, 2024-4-28 17:39 , Processed in 0.073237 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

QuickReply backToTop BackToList