mobile CCTV,mobile surveillance,police body worn cameras

 forgetPW
 registerNow
search
view: 1385|reply: 3
打印 prevThread nextThread

pu端链接上监视器后,监视器来回切换音视频传输无法正常切换

[copyURL]

6

主题

19

帖子

70

积分

member

Rank: 2

积分
70
jumpTo
owner
poston 2018-10-22 15:33 | authorOnly 回帖奖励 |倒序浏览 |阅读模式
我们这边配置音视频预览传输的参数如下
if (pParam->iAVStreamDir & BVCU_MEDIADIR_VIDEOSEND)
        {
            if(s_s32VideoType == DIALOG_VIDEO_TYPE_H265)
            {
                pParam->szMyselfVideo.codec = SAVCODEC_ID_H265;
                pParam->szMyselfVideo.pExtraData = s_pExtraData;
                pParam->szMyselfVideo.iExtraDataSize = s_s32VideoSPSLen + s_s32VideoPPSLen + s_s32VideoVPSLen;
                memcpy(pParam->szMyselfVideo.pExtraData, s_azVideoVPS, s_s32VideoVPSLen);
                memcpy(pParam->szMyselfVideo.pExtraData + s_s32VideoVPSLen, s_azVideoSPS, s_s32VideoSPSLen);
                memcpy(pParam->szMyselfVideo.pExtraData + s_s32VideoVPSLen + s_s32VideoSPSLen , s_azVideoPPS, s_s32VideoPPSLen);
            }
            else if(s_s32VideoType == DIALOG_VIDEO_TYPE_H264)
            {
                pParam->szMyselfVideo.codec = SAVCODEC_ID_H264;
                pParam->szMyselfVideo.pExtraData = s_pExtraData;
                pParam->szMyselfVideo.iExtraDataSize = s_s32VideoSPSLen + s_s32VideoPPSLen;
                memcpy(pParam->szMyselfVideo.pExtraData, s_azVideoSPS, s_s32VideoSPSLen);
                memcpy(pParam->szMyselfVideo.pExtraData + s_s32VideoSPSLen, s_azVideoPPS, s_s32VideoPPSLen);
            }
        }

        if (pParam->iAVStreamDir & BVCU_MEDIADIR_AUDIOSEND)
        {
            pParam->szMyselfAudio.codec = SAVCODEC_ID_AAC;
            pParam->szMyselfAudio.iBitrate = 128000;//12200
            pParam->szMyselfAudio.iChannelCount = 1;// 1
            pParam->szMyselfAudio.iSampleRate = 48000;//8000
            pParam->szMyselfAudio.eSampleFormat = SAV_SAMPLE_FMT_S16;//(SAV_SAMPLE_FMT_FLTP)??
            make_dsi(get_samplerate_index(pParam->szMyselfAudio.iSampleRate),pParam->szMyselfAudio.iChannelCount,g_pExtraData);
            pParam->szMyselfAudio.pExtraData =(char *) g_pExtraData;
            pParam->szMyselfAudio.iExtraDataSize = 2;
        }
        if (pParam->iAVStreamDir & BVCU_MEDIADIR_AUDIORECV)
        {
            pParam->szTargetAudio.codec = SAVCODEC_ID_G726;
            pParam->szTargetAudio.eSampleFormat = SAV_SAMPLE_FMT_FLTP;
            pParam->szTargetAudio.iBitrate = 32000;
            pParam->szTargetAudio.iChannelCount = 1;
            pParam->szTargetAudio.iSampleRate = 8000;
        }
        
        memcpy(&stDialogParam, pParam,sizeof(BVCSP_DialogParam));
        memset(&stDialogCmd, 0, sizeof(stDialogCmd));
        stDialogParam.OnEvent = dialog_on_event;
        stDialogParam.afterRecv = dialog_after_recv;

        stDialogCmd.iResult = BVCU_RESULT_S_OK;
        stDialogCmd.pDialogParam = &stDialogParam;
        pParam->OnEvent(hDialog, iEventCode, &stDialogCmd);

        return BVCU_RESULT_S_PENDING;
当是我们配置成这种参数的时候,发现如果再监视器端切换音视频同传,只传音频,或者只传视频,切换一两次后就切换不正常,直接卡住,然后也修改过直接return bvcu_result_s_ok,这样的话会直接监视器端提示说没有接收到I帧,但是我们这边的编码是已经开启了的,数据肯定是正常发送了,不管这两种修改,多切换几次之后关闭通道没有接收到关闭的消息.
reply

使用道具 report

0

主题

20

帖子

80

积分

member

Rank: 2

积分
80
sofa
poston 2018-10-22 17:04 | authorOnly
您好,已经获取到音视频的相关信息,重新设置一下pParam->OnEvent和pParam->afterRecv相关回调,
无需再调用pParam->OnEvent(hDialog, iEventCode, &stDialogCmd),直接返回BVCU_RESULT_S_OK即可。
reply agree Against

使用道具 report

6

主题

19

帖子

70

积分

member

Rank: 2

积分
70
bench
 Owner| poston 2018-10-23 09:16 | authorOnly
我这边改成这样之后
memcpy(&stDialogParam, pParam,sizeof(BVCSP_DialogParam));
        memset(&stDialogCmd, 0, sizeof(stDialogCmd));
        stDialogParam.OnEvent = dialog_on_event;
        stDialogParam.afterRecv = dialog_after_recv;

        stDialogCmd.iResult = BVCU_RESULT_S_OK;
        stDialogCmd.pDialogParam = &stDialogParam;
        if(iEventCode == BVCSP_EVENT_DIALOG_UPDATE)
        {
            return BVCU_RESULT_S_OK;
        }
切换看起来是没什么问题,但是呢,我切换几次之后关闭通道并没有收到对应的close dialog信息过来?
reply agree Against

使用道具 report

0

主题

20

帖子

80

积分

member

Rank: 2

积分
80
ground
poston 2018-10-23 09:38 | authorOnly
unionman_li post on2018-10-23 09:16
我这边改成这样之后
memcpy(&stDialogParam, pParam,sizeof(BVCSP_DialogParam));
        memset(&stDi ...

直接修改pParam的回调函数
reply agree Against

使用道具 report

creditRule

QQ|wireless surveillance

GMT+8, 2024-5-17 11:48 , Processed in 0.058596 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

QuickReply backToTop BackToList