ffmpeg 编码丢帧调用 flush encode 崩溃

在flush_encoder 的时候,调用 (下面为代码片段)

···

AVPacketoutPkt;

av_new_packet(&outPkt,y_size*3);

intret =avcodec_encode_video2(c, &outPkt,picture, &got_picture);

···


会有崩溃问题,崩溃点

崩溃在libx264.c   encode_nals  函数下memcpy(p, nals[i].p_payload, nals[i].i_payload);

此函数的含义是将 编码后的数据在libx264 的数据结构转化为AVPacket 的数据结构;

ffmpeg 编码丢帧调用 flush encode 崩溃_第1张图片
flush encoder 崩溃点

正确的处理方式

ffmpeg 编码丢帧调用 flush encode 崩溃_第2张图片

你可能感兴趣的:(ffmpeg 编码丢帧调用 flush encode 崩溃)