访问avcodec_decode_video2时访问冲突(0x0000005C)

时间:2018-04-08 22:40:48

标签: c++ rtsp rtp

我在缓冲区中接收RTP数据并尝试使用av​​codec_decode_video2()解码此缓冲区内的数据。但是,在调用此函数时,我似乎遇到了错误:

RTSP Video Application.exe中的0x10086F50(avcodec-57.dll)抛出异常:0xC0000005:访问冲突读取位置0x0000005C。

void video_decode(unsigned char * RTPData)
{
    AVCodecContext  *m_pCodecCtx;
    AVCodec         *m_pCodec;
    AVFrame         *m_pFrame;

    m_pCodec = avcodec_find_decoder(AV_CODEC_ID_H264);
    m_pCodecCtx = avcodec_alloc_context3(m_pCodec);
    avcodec_open2(m_pCodecCtx, m_pCodec, 0);

    m_pFrame = av_frame_alloc();

    AVPacket        packet;
    av_init_packet(&packet);

    packet.data = RTPData;
    packet.size = (int)sizeof(RTPData);

    packet.flags |= AV_PKT_FLAG_KEY;

    int framefinished = 0;

    avcodec_decode_video2(m_pCodecCtx, m_pFrame, &framefinished, &packet);
}

编辑:此函数是解码RTP数据的正确方法吗?如果是,为什么在调用avcodec_decode_video2()时会出现Access违规?

0 个答案:

没有答案