我在缓冲区中接收RTP数据并尝试使用avcodec_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违规?