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
121#
 Owner| poston 2019-6-20 15:03 | authorOnly
实时图传功能,我们这边是一帧一帧的H265数据和aac数据,请问怎样赋值szMyselfAudio 和szMyselfVideo参数。
reply agree Against

使用道具 report

2

主题

414

帖子

1188

积分

vipMem

Rank: 6Rank: 6

积分
1188
122#
poston 2019-6-20 20:15 | authorOnly
meige post on2019-6-20 15:03
实时图传功能,我们这边是一帧一帧的H265数据和aac数据,请问怎样赋值szMyselfAudio 和szMyselfVideo参数。 ...

参考前面的demo
reply agree Against

使用道具 report

0

主题

20

帖子

80

积分

member

Rank: 2

积分
80
123#
poston 2019-6-20 20:22 | authorOnly
meige post on2019-6-20 15:03
实时图传功能,我们这边是一帧一帧的H265数据和aac数据,请问怎样赋值szMyselfAudio 和szMyselfVideo参数。 ...

参数固定的话就直接写死在代码里。在onDialogCmd中填写。
reply agree Against

使用道具 report

11

主题

157

帖子

533

积分

advMem

Rank: 4

积分
533
124#
 Owner| poston 2019-6-20 21:16 | authorOnly
yumengtao post on2019-6-20 20:22
参数固定的话就直接写死在代码里。在onDialogCmd中填写。

1.一帧一帧的数据,每帧数据大小都不一样,onDialogCmd只会找一次,
2.onDialogCmd中填写固定参数后,向通道里写视频数据返回-65521,切换只传音频,向通道写入音频数据成功了,但是pc端声音是杂音。
reply agree Against

使用道具 report

11

主题

157

帖子

533

积分

advMem

Rank: 4

积分
533
125#
 Owner| poston 2019-6-20 21:17 | authorOnly
meige post on2019-6-20 21:16
1.一帧一帧的数据,每帧数据大小都不一样,onDialogCmd只会找一次,
2.onDialogCmd中填写固定参数后,向 ...

bool init_AVParam(BVCSP_DialogParam *pParam,int iAVStreamDir)
    {

        /*audio send*/
            if(iAVStreamDir==5 || iAVStreamDir==4){
                    LOGD(" init_AVParam ----1");
                pParam->szMyselfAudio.codec = SAVCODEC_ID_AAC;
                LOGD(" init_AVParam ----2");
            pParam->szMyselfAudio.eSampleFormat = SAV_SAMPLE_FMT_S16;
            LOGD(" init_AVParam ----3");
            pParam->szMyselfAudio.iBitrate = 16000;
            LOGD(" init_AVParam ----4");
            pParam->szMyselfAudio.iChannelCount = 2;
            LOGD(" init_AVParam ----5");
            pParam->szMyselfAudio.iSampleRate = 16000;
            LOGD(" init_AVParam ----6");
            pParam->szMyselfAudio.pExtraData = reinterpret_cast<char*>(getMGBvcsp()->audioData);
            LOGD(" init_AVParam ----7");
            pParam->szMyselfAudio.iExtraDataSize = audioSize;
            }
        /*audio send*/

        /*video send*/
            if(iAVStreamDir==5 || iAVStreamDir==1){
            LOGD(" init_AVParam ----8");
//            pParam->szMyselfVideo.codec = SAVCODEC_ID_HEVC;
            LOGD(" init_AVParam ----9");
            pParam->szMyselfVideo.iHeight = 720;
            LOGD(" init_AVParam ----10");
            pParam->szMyselfVideo.iWidth = 1280;
            LOGD(" init_AVParam ----11");
            pParam->szMyselfVideo.iExtraDataSize = videoSize;
            LOGD(" init_AVParam ----12");
            pParam->szMyselfVideo.pExtraData = reinterpret_cast<char*>(getMGBvcsp()->videoData);
            }
        /*video send*/

        /*audio receive*/
        //默认
            LOGD(" init_AVParam ----13");
        pParam->szTargetAudio.codec = SAVCODEC_ID_G726;
        LOGD(" init_AVParam ----14");
        pParam->szTargetAudio.eSampleFormat = SAV_SAMPLE_FMT_FLTP;
        LOGD(" init_AVParam ----15");
        pParam->szTargetAudio.iBitrate = 16000;
        LOGD(" init_AVParam ----16");
        pParam->szTargetAudio.iChannelCount = 1;
        LOGD(" init_AVParam ----17");
        pParam->szTargetAudio.iSampleRate = 8000;
        LOGD(" init_AVParam ----18");
        /*audio receive*/
        return true;
    }
写入的参数赋值
reply agree Against

使用道具 report

11

主题

157

帖子

533

积分

advMem

Rank: 4

积分
533
126#
 Owner| poston 2019-6-20 21:18 | authorOnly
meige post on2019-6-20 21:17
bool init_AVParam(BVCSP_DialogParam *pParam,int iAVStreamDir)
    {

向通道里写数据的代码:
//        typedef struct _BVCSP_VideoCodec
        //        {
        //            SAVCodec_ID codec; // 编码方式 SAVCODEC_ID_H264、SAVCODEC_ID_H265
        //            int iWidth; // 视频图像宽度。单位像素
        //            int iHeight; // 视频图像高度。单位像素
        //            char* pExtraData; //sps/pps/vps等打包的h264/h265帧数据(含0x00000001头)
        //            int   iExtraDataSize;   // pExtraData数据长度
        //        } BVCSP_VideoCodec;
        static void* writeVideoData(void* arg) {
//                getMGBvcsp()->dialog_param->szMyselfVideo.codec=SAVCODEC_ID_H265;
//                getMGBvcsp()->dialog_param->szMyselfVideo.iWidth=1280;
//                getMGBvcsp()->dialog_param->szMyselfVideo.iHeight=720;
                int currentSize =0;
                BVCSP_Packet packet;
                memset(&packet, 0, sizeof(packet));
                while(getMGBvcsp()->isOpenSession){
                        if(currentSize!=getMGBvcsp()->videoSize){
//                                getMGBvcsp()->dialog_param->szMyselfVideo.pExtraData = reinterpret_cast<char*>(getMGBvcsp()->videoData);
//                                getMGBvcsp()->dialog_param->szMyselfVideo.iExtraDataSize = getMGBvcsp()->videoSize;
                                packet.iDataType = BVCSP_DATA_TYPE_VIDEO;
                                packet.iDataSize = getMGBvcsp()->videoSize;
                                packet.pData = getMGBvcsp()->videoData;
                                BVCU_Result result = BVCSP_Dialog_Write(getMGBvcsp()->bvhDialog, &packet);
                                LOGD("BVCSP_Dialog_Write writeVideoData,BVCU_Result=%d ,videoSize=%d", result,getMGBvcsp()->videoSize);
                                currentSize=getMGBvcsp()->videoSize;
                        }
                        usleep(10000);
                }
                pthread_exit (NULL);
                if (getMGBvcsp()->thr[0] != 0) {
                        pthread_join(getMGBvcsp()->thr[0], NULL);
                }
        }
        //    typedef struct _BVCSP_AudioCodec
        //    {
        //        SAVCodec_ID codec; // 编码方式 SAVCODEC_ID_G726、SAVCODEC_ID_AAC
        //        int  iBitrate; // 波特率 32000、16000
        //        int  iChannelCount; // 声道数 1
        //        int  iSampleRate; // 采样率 8000
        //        SAV_SampleFormat eSampleFormat; // 采样精度 SAV_SAMPLE_FMT_S16
        //        char* pExtraData; // config字段解出的二进制数据(AAC音频编码时config有意义)。
        //        int   iExtraDataSize; // pExtraData数据长度
        //    } BVCSP_AudioCodec;
        static void* writeAudioData(void* arg) {
//                getMGBvcsp()->dialog_param->szMyselfAudio.codec = SAVCODEC_ID_AAC;
//                getMGBvcsp()->dialog_param->szMyselfAudio.iBitrate = 16000;
//                getMGBvcsp()->dialog_param->szMyselfAudio.iChannelCount = 2;
//                getMGBvcsp()->dialog_param->szMyselfAudio.iSampleRate = 16000;
//                getMGBvcsp()->dialog_param->szMyselfAudio.eSampleFormat =
//                                SAV_SAMPLE_FMT_S16;
                int currentSize = 0;
                BVCSP_Packet packet;
                memset(&packet, 0, sizeof(packet));
                while (getMGBvcsp()->isOpenSession) {
                        if (currentSize != getMGBvcsp()->audioSize) {
//                                getMGBvcsp()->dialog_param->szMyselfAudio.pExtraData =
//                                                reinterpret_cast<char*>(getMGBvcsp()->audioData);
//                                getMGBvcsp()->dialog_param->szMyselfAudio.iExtraDataSize =
//                                                getMGBvcsp()->audioSize;
                                BVCSP_Packet packet;
                                memset(&packet, 0, sizeof(packet));
                                packet.iDataType = BVCSP_DATA_TYPE_AUDIO;
                                packet.iDataSize = getMGBvcsp()->audioSize;
                                packet.pData = getMGBvcsp()->audioData;
                                BVCU_Result result = BVCSP_Dialog_Write(getMGBvcsp()->bvhDialog, &packet);
                                LOGD("BVCSP_Dialog_Write writeAudioData,BVCU_Result=%d,audioSize=%d", result,getMGBvcsp()->audioSize);
                                currentSize=getMGBvcsp()->audioSize;
                        }
                        usleep(10000);
                }
                pthread_exit (NULL);
                if (getMGBvcsp()->thr[2] != 0) {
                        pthread_join(getMGBvcsp()->thr[2], NULL);
                }
        }
reply agree Against

使用道具 report

0

主题

20

帖子

80

积分

member

Rank: 2

积分
80
127#
poston 2019-6-21 09:34 | authorOnly
meige post on2019-6-20 21:18
向通道里写数据的代码:
//        typedef struct _BVCSP_VideoCodec
        //        {

第一部:
sps pps是否正确

请你截一些关于sps pps的二进制数据给我。




本帖子中包含更多资源

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

x
reply agree Against

使用道具 report

11

主题

157

帖子

533

积分

advMem

Rank: 4

积分
533
128#
 Owner| poston 2019-6-21 10:44 | authorOnly
yumengtao post on2019-6-21 09:34
第一部:
sps pps是否正确

dnfi
这是一帧的数据:https://pan.baidu.com/s/1Wi7eGcB_GLmbhC4Ef7zr1g 提取码:dnfi
reply agree Against

使用道具 report

0

主题

20

帖子

80

积分

member

Rank: 2

积分
80
129#
poston 2019-6-21 11:31 | authorOnly
请问你在 pParam->szMyselfVideo.pExtraData 中传递是视频帧而不是 pps sps是吗?
reply agree Against

使用道具 report

11

主题

157

帖子

533

积分

advMem

Rank: 4

积分
533
130#
 Owner| poston 2019-6-21 11:51 | authorOnly
yumengtao post on2019-6-21 11:31
请问你在 pParam->szMyselfVideo.pExtraData 中传递是视频帧而不是 pps sps是吗?

是的,pParam->szMyselfVideo.pExtraData传的是视频一帧的数据。
reply agree Against

使用道具 report

creditRule

QQ|wireless surveillance

GMT+8, 2024-5-6 09:51 , Processed in 0.067386 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

QuickReply backToTop BackToList