while (av_read_frame(fctx, pkt) >= 0) { if (pkt->stream_index == vindex) { if ((iRes = avcodec_send_packet(cctx, pkt)) != 0) { cout << "Send video stream packet failed!" << endl; av_strerror(iRes, errbuf, 256); return -5; } if ((iRes = avcodec_receive_frame(cctx, fr)) != 0) { cout << "Receive video frame failed!" << endl; av_strerror(iRes, errbuf, 256); return -6; }收到-6,表示出了什么错,怎么改
时间: 2023-07-15 09:10:51 浏览: 394
收到-6表示avcodec_receive_frame()函数返回了一个错误码,这个错误码是AVERROR(EAGAIN),表示缓冲区中没有可用的输出帧,需要继续发送数据。这可能是因为缓冲区中的数据还不够多,需要等待更多的数据到来。
你可以尝试增加缓冲区的大小或者调整发送数据的频率。另外,你也可以尝试使用avcodec_send_packet()和avcodec_receive_frame()之间的循环来处理所有的数据包。在循环中,你可以不断地发送数据包,直到所有的数据包都被发送完毕,并且接收到了所有的输出帧。
阅读全文