|
我们这边配置音视频预览传输的参数如下
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帧,但是我们这边的编码是已经开启了的,数据肯定是正常发送了,不管这两种修改,多切换几次之后关闭通道没有接收到关闭的消息. |
|