Qt使用avcodec_send_frame和avcodec_receive_packet程序段错误

报错

       The inferior stopped because it triggered an exception. Stopped in thread 9 by: Exception at 0x75cd4e3f,code:0xc00000005:read access violation at: 0x1, flags=0x0.

int got_picture = 0;
int ret = 1;

/* encode the image */
if(pkt == nullptr)
{
        pkt = av_packet_alloc();
        av_init_packet(pkt);
}
ret = avcodec_send_frame(videoCodec, avFrame);
if (ret < 0) {
    fprintf(stderr,"Error encoding video frame.\n");
    return 1;
}
got_picture = avcodec_receive_packet(videoCodec, pkt);

原因:

        avcodec_send_frame函数调用前,给avFrame申请空间av_frame_alloc

        avcodec_receive_packet函数调用前,先给pkt申请内存空间av_packet_alloc,并初始化av_init_packet(pkt)。

你可能感兴趣的:(FFMPEG,ffmpeg)