mobile CCTV,mobile surveillance,police body worn cameras

 forgetPW
 registerNow
search
12
backToList newPost
Owner: WhatToLearn
打印 prevThread nextThread

音视频获取与命令下发

[copyURL]

60

主题

1427

帖子

5949

积分

Moderator

Rank: 7Rank: 7Rank: 7

积分
5949
11#
poston 2020-9-17 21:32 | authorOnly
我印象中,视频帧跟音频帧是独立分离的,不是混在一起的。
reply agree Against

使用道具 report

1

主题

11

帖子

51

积分

member

Rank: 2

积分
51
12#
 Owner| poston 2020-9-19 18:04 | authorOnly
我查看BVCU_DialogParam类创建的dlgParam对象,可以有3个函数指针,分别是afterRecv,afterDecode,afterRender,后两个的入参pFrame什么时候是音频数据?什么时候是视频数据?
音频数据要获取出来进行处理,怎么做?
reply agree Against

使用道具 report

60

主题

1427

帖子

5949

积分

Moderator

Rank: 7Rank: 7Rank: 7

积分
5949
13#
poston 2020-9-19 21:35 | authorOnly
http://61.191.27.18:8081/doc.html
WEB SDK的文档和DEMO您都看过了吗?这个是最基础的,应该都有代码示例或者说明的。
其实,代码就是最好的文档。
reply agree Against

使用道具 report

1

主题

11

帖子

51

积分

member

Rank: 2

积分
51
14#
 Owner| poston 2020-9-23 18:59 | authorOnly
besovideo post on2020-9-19 21:35
http://61.191.27.18:8081/doc.html
WEB SDK的文档和DEMO您都看过了吗?这个是最基础的,应该都有代码示例 ...

可是这不是Web端的文档吗?我现在用的代码是C++写的MFC程序,MFC程序获取音频应该可以做到吧,不需要再用Web吧
reply agree Against

使用道具 report

1

主题

589

帖子

2045

积分

vipMem

Rank: 6Rank: 6

积分
2045
15#
poston 2020-9-24 10:46 | authorOnly
WhatToLearn post on2020-9-19 18:04
我查看BVCU_DialogParam类创建的dlgParam对象,可以有3个函数指针,分别是afterRecv,afterDecode,afterRend ...

您好,
afterRecv,afterDecode,afterRender回调的音频/视频类型,根据pCodec->eCodecID判断。
afterRecv收到的是编码后数据,
afterDecode收到的是原始数据(解码后的)
afterRender是渲染播放成功后回调的原始数据,同afterDecode,回调触发条件不同。
尽量不要在回调里处理数据,将数据拷贝到您的线程处理,否则耗时的视频数据处理,会影响底层库接收数据。
reply agree Against

使用道具 report

1

主题

11

帖子

51

积分

member

Rank: 2

积分
51
16#
 Owner| poston 2020-9-24 20:57 | authorOnly
fanghj90 post on2020-9-24 10:46
您好,
afterRecv,afterDecode,afterRender回调的音频/视频类型,根据pCodec->eCodecID判断。
afterRec ...

线程还没有开,但有个问题,调试时发现pCodec->eCodecID一直是SAVCODEC_ID_H264。我在else里int i=1处打断点,程序不会跳到断点处。根据网上的资料,H264是只有视频数据没有音频数据的。这是什么情况?
开线程可以在Browse里面开吗?pFrame和pCodec是全局的吗?
BVCU_Result CMLibBVCU::afterDecode(BVCU_HDialog hDialog, SAVCodec_Context* pCodec, SAV_Frame* pFrame)
{
   
    static int count = 0;
    if (count >= 0)//用于丢帧,count>=n,每n+1帧丢n帧
    {
        count = 0;
        //thread t(AVDataAcquire, pCodec, pFrame);
        if ((*pCodec).eCodecID == SAVCODEC_ID_H264)
        {
            int height = (*pCodec).stVideoParam.iHeight, width = (*pCodec).stVideoParam.iWidth;
            int yStride = (*pFrame).iDataSize[0];
            //YUV420p
            Mat frame(height * 3 / 2, width, CV_8UC1);
            for (int i = 0; i < height; i++)
            {
                memcpy_s(frame.ptr(i), width, (*pFrame).ppData[0] + i * yStride, yStride);
            }
            for (int i = 0; i < height / 4; i++)
            {
                memcpy_s(frame.ptr(i + height), width, (*pFrame).ppData[1] + i * yStride, yStride);
            }
            for (int i = 0; i < height / 4; i++)
            {
                memcpy_s(frame.ptr(i + height * 5 / 4), width, (*pFrame).ppData[2] + i * yStride, yStride);
            }
            cvtColor(frame, frame, COLOR_YUV420p2RGB);
            imshow("camera", frame);
            waitKey(1);
        }
        else
        {
            int i = 1;
        }
    }
    else
    {
        count++;
    }
    return BVCU_RESULT_S_OK;
}
reply agree Against

使用道具 report

12
backToList newPost

creditRule

QQ|wireless surveillance

GMT+8, 2024-12-22 02:57 , Processed in 0.055667 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

QuickReply backToTop BackToList