mobile CCTV,mobile surveillance,police body worn cameras

 forgetPW
 registerNow
search
view: 1407|reply: 5

PU端主动(自动)上传文件功能OpenDialog失败

[copyURL]

6

主题

19

帖子

70

积分

member

Rank: 2

积分
70
poston 2018-10-18 08:54 | 显示全部楼层 |阅读模式

如题,部分源码如下:

//文件上传BVCSP_Dialog_Open 失败
memset(&stDlgParam, 0, sizeof(stDlgParam));
stDlgParam.hSession = g_hSession; /* 实际会话的句柄 */
stDlgParam.OnEvent = upload_on_event;
stDlgParam.stFileTarget.iStartTime_iOffset = 0;
stDlgParam.stFileTarget.iEndTime_iFileSize = u64Size;

/* 目前BVCSP库内固定为PU_1 */
sprintf(stDlgParam.stTarget.szID, "%s", "PU_1");
stDlgParam.stTarget.iIndexMajor = BVCU_SUBDEV_INDEXMAJOR_DOWNLOAD;
stDlgParam.stTarget.iIndexMinor = BVCU_ENCODERSTREAMTYPE_STORAGE;
stDlgParam.iAVStreamDir = BVCU_MEDIADIR_DATASEND;

memset(&stDlgCtrlParam, 0, sizeof(stDlgCtrlParam));
stDlgCtrlParam.iTimeOut = 60 * 1000;
stDlgCtrlParam.iDelayMin = 1000;
stDlgCtrlParam.iDelayMax = 6000;
stDlgCtrlParam.iDelayVsSmooth = 3;
stDlgParam.stFileTarget.pPathFileName = s_azPathFileName;/* 文件路径,如/app/sd/666666/Photo/PU_1_00_20181017_17052500.JPG */

enResult = BVCSP_Dialog_Open(&hDialog, &stDlgParam, &stDlgCtrlParam);
if (BVCU_Result_FAILED(enResult))
{
    MLOGE("BVCSP_Dialog_Open fail! %d\n", enResult);
}


返回错误码-65535


注:
登录时已经创建上传/下载通道
    sprintf(g_stPUChannelInfo[0].szName, "%s", PU_CFG_VID_AUD_CHN);
    g_stPUChannelInfo[0].iChannelIndex = BVCU_SUBDEV_INDEXMAJOR_MIN_CHANNEL;   
    g_stPUChannelInfo[0].iMediaDir = (BVCU_MEDIADIR_VIDEOSEND | BVCU_MEDIADIR_AUDIOSEND | BVCU_MEDIADIR_AUDIORECV);

    sprintf(g_stPUChannelInfo[1].szName, "%s", PU_CFG_GPS_CHN);
    g_stPUChannelInfo[1].iChannelIndex = BVCU_SUBDEV_INDEXMAJOR_MIN_GPS;
    g_stPUChannelInfo[1].iMediaDir = (BVCU_MEDIADIR_DATASEND | BVCU_MEDIADIR_DATARECV);
    g_stPUChannelInfo[1].iPTZIndex = 0;

    sprintf(g_stPUChannelInfo[2].szName, "%s", PU_CFG_PLAYBACK_CHN);
    g_stPUChannelInfo[2].iChannelIndex = BVCU_SUBDEV_INDEXMAJOR_PLAYBACK;
    g_stPUChannelInfo[2].iMediaDir = (BVCU_MEDIADIR_DATASEND | BVCU_MEDIADIR_DATARECV);
    g_stPUChannelInfo[2].iPTZIndex = 0;

    sprintf(g_stPUChannelInfo[3].szName, "%s", PU_CFG_DOWNLOAD_CHN);
    g_stPUChannelInfo[3].iChannelIndex = BVCU_SUBDEV_INDEXMAJOR_DOWNLOAD;
    g_stPUChannelInfo[3].iMediaDir = (BVCU_MEDIADIR_DATASEND | BVCU_MEDIADIR_DATARECV);
    g_stPUChannelInfo[3].iPTZIndex = 0;

    stSesParam.stEntityInfo.iOnlineThrough = BVCU_PU_ONLINE_THROUGH_RADIO;
    stSesParam.stEntityInfo.iStreamPathWay = BVCU_STREAM_PATHWAY_AUTO;
    stSesParam.stEntityInfo.iLongitude = PU_CFG_GPS_LONGITUDE;
    stSesParam.stEntityInfo.iLatitude = PU_CFG_GPS_LATITUDE;
    stSesParam.stEntityInfo.pChannelList = g_stPUChannelInfo;
    stSesParam.stEntityInfo.iChannelCount = 4;

    enResult = BVCSP_Login(&g_hSession, &stSesParam);



请问,这种情况是哪里参数存在错误,还是优视平台不支持PU端主动发送文件到服务器端


reply

使用道具 report

2

主题

414

帖子

1188

积分

vipMem

Rank: 6Rank: 6

积分
1188
poston 2018-10-18 09:45 | 显示全部楼层
参考一下Dialog_open的参数设置
    memset(pBVCSPParam, 0x00, sizeof(*pBVCSPParam));
    pBVCSPParam->iSize = sizeof(*pBVCSPParam);
    pBVCSPParam->pUserData = pFile;
    pBVCSPParam->hSession = SIP::getSIP()->GetBVCSPSession();
    strncpy(pBVCSPParam->stTarget.szID, pBVCUParam->szTargetID, sizeof(pBVCSPParam->stTarget.szID));
    pBVCSPParam->stTarget.iIndexMajor = BVCU_SUBDEV_INDEXMAJOR_DOWNLOAD;
    pBVCSPParam->stTarget.iIndexMinor = -1;
    pBVCSPParam->stFileTarget.pPathFileName = pBVCUParam->pRemoteFilePathName;

    pBVCSPParam->stFileTarget.iStartTime_iOffset = pBVCUParam->iFileStartOffset;
    LOGI("pBVCSPParam->stFileTarget.iStartTime_iOffset = %d", pBVCSPParam->stFileTarget.iStartTime_iOffset);
    pBVCSPParam->stFileTarget.iEndTime_iFileSize = pFile->GetFileSize();
    if (pBVCUParam->bUpload)
        pBVCSPParam->iAVStreamDir = BVCU_MEDIADIR_DATASEND;
    else
        pBVCSPParam->iAVStreamDir = BVCU_MEDIADIR_DATARECV;
    pBVCSPParam->bOverTCP = 1;
    pBVCSPParam->afterRecv = CFileTransfer::OnAfterRecv_BVCSP;
    pBVCSPParam->OnEvent = CFileTransfer::OnDialogEvent_BVCSP;
    //control
    memset(pBVCSPCtrl, 0x00, sizeof(*pBVCSPCtrl));
    pBVCSPCtrl->iDelayMax = 5000;
    pBVCSPCtrl->iDelayMin = 500;
    pBVCSPCtrl->iDelayVsSmooth = 3;
    pBVCSPCtrl->iTimeOut = pBVCUParam->iTimeOut;
reply agree Against

使用道具 report

6

主题

19

帖子

70

积分

member

Rank: 2

积分
70
 Owner| poston 2018-10-18 11:07 | 显示全部楼层
你好,我这边做了一个模拟操作用的是启动平台抓拍,现在的会话参数是
memset(&dlgParam, 0x00, sizeof(dlgParam));
    dlgParam.iSize = sizeof(dlgParam);
    dlgParam.hSession = hSession;
    strncpy(dlgParam.stTarget.szID, szDlgCUID,sizeof(dlgParam.stTarget.szID));
    dlgParam.stTarget.iIndexMajor = BVCU_SUBDEV_INDEXMAJOR_DOWNLOAD;
    dlgParam.stTarget.iIndexMinor = -1;
    dlgParam.iAVStreamDir = BVCU_MEDIADIR_DATASEND;
    dlgParam.stFileTarget.pPathFileName = file;
    dlgParam.stFileTarget.iStartTime_iOffset  = 0;
    dlgParam.stFileTarget.iEndTime_iFileSize = buf.st_size;

    dlgParam.bOverTCP = 1;

    dlgParam.OnEvent = dialog_on_event;
    dlgParam.afterRecv = dialog_after_recv;
   
    memset(&dlgControl, 0x00, sizeof(dlgControl));
    dlgControl.iTimeOut = 30 * 1000;
    dlgControl.iDelayMax = 5000;
    dlgControl.iDelayMin = 800;
    dlgControl.iDelayVsSmooth = 3;
enResult = BVCSP_Dialog_Open(&s_stDialogInfo[s32Idx].hDialog, &dlgParam, &dlgControl);
            if(enResult != BVCU_RESULT_S_OK)
            {
                MLOGE("call BVCSP_Dialog_Open fail! %d\n",enResult);
            }

现在 看起来是open成功,但是事件回调里面返回了一个设备正在使用,请问这个错误是什么原因引起的。
hDialog = 0x3, iEventCode = 1, pParam->iResult = -65523.
reply agree Against

使用道具 report

2

主题

414

帖子

1188

积分

vipMem

Rank: 6Rank: 6

积分
1188
poston 2018-10-18 11:39 | 显示全部楼层
unionman_li post on2018-10-18 11:07
你好,我这边做了一个模拟操作用的是启动平台抓拍,现在的会话参数是
memset(&dlgParam, 0x00, sizeof(dlg ...

上传文件时,dlgParam.stFileTarget.pPathFileName填写的是远端服务器的路径地址,测试上传可以填写/temp/xxx.jpg
reply agree Against

使用道具 report

6

主题

19

帖子

70

积分

member

Rank: 2

积分
70
 Owner| poston 2018-10-18 17:18 | 显示全部楼层
我们现在上传的时候会话传输的数据包类型为bvcspPacket.iDataType = BVCSP_DATA_TYPE_TSP;
每个数据包的大小限制是多少?参考你们的sample时看到你们上传跟下载都是用的800个字节,这个传输值如果过大会导致接口卡住,这个值理论上最大支持多少?
如果我们要传输比较大的文件比如说是4G大小的文件,这个传输速率是否比较慢?是否其他传输方式?
reply agree Against

使用道具 report

1

主题

579

帖子

1995

积分

vipMem

Rank: 6Rank: 6

积分
1995
poston 2018-10-18 17:37 | 显示全部楼层
unionman_li post on2018-10-18 17:18
我们现在上传的时候会话传输的数据包类型为bvcspPacket.iDataType = BVCSP_DATA_TYPE_TSP;
每个数据包的大 ...

sprintf(stDlgParam.stTarget.szID, "%s", "PU_1");这里的,stTarget.szID,填写的是要上传文件的对象ID,为存储服务器ID号,如果没有获取存储服务器信息,可以填 "NRU_",服务器会自动分配一个在线存储服务器,接收文件。
调用一次接口上传800个字节,不会影响上传速率,即使一次传入太多,也会被切片,还有可能导致内部缓冲区不足,丢数据。传输速率,通过调整调用write接口频率控制。
一次write 800字节,上层逻辑限速多少带宽,可以计算出一秒write多少次,如果遇到write接口返回失败,就是这次write的没发出去,可能是网络带宽不足,要降低发送速率,同时失败的数据要重现发送。
reply agree Against

使用道具 report

creditRule

QQ|wireless surveillance

GMT+8, 2024-3-29 14:44 , Processed in 0.060543 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

QuickReply backToTop BackToList