FFmpeg使用avcodec_receive_packet编码时报错AVERROR(EAGAIN),返回值为-11
源码
//再次编码
ret = avcodec_send_frame(againCodecContext,frame);
if(ret<0){
av_strerror(ret,errorStr,sizeof(errorStr));
qDebug()<<"打开编码器失败"<<QString(errorStr)<<ret;
qDebug()<<"avcodec_send_frame失败"<<ret;
return;
}
while (ret>=0) {
ret = avcodec_receive_packet(againCodecContext, out_pkt);
if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF){
av_strerror(ret,errorStr,sizeof(errorStr));
qDebug()<<"编码失败"<<QString(errorStr)<<ret;
break;
}else if (ret < 0) {
qDebug()<<"编码失败";
return;
}
qDebug()<<"向RTSP中写入视频帧";
ret = av_interleaved_write_frame(OutputFormatContext, out_pkt);
if (ret < 0) {
qDebug()<<"写入视频帧失败";
return;
}
}