Я пытаюсь декодировать кадр H264, используя библиотеку libav. После инициализации библиотеки путем выделения кадра и контекста, я использую следующий код для декодирования:libav - Декодирование H264 Ошибка кадра
AVPacket pkt;
int got_picture, len;
av_init_packet(&pkt);
pkt.size = size;
pkt.data = buffer;
while(pkt.size > 0) {
if((len = avcodec_decode_video2(context, frame, &got_picture, &pkt)) < 0) {
break;
}
if(got_picture) {
// Do something with the picture...
}
avPkt.size -= len;
avPkt.data += len;
}
Однако всякий раз, когда я называю avcodec_decode_video2
печатает следующее сообщение об ошибке в консоли:
[...]
[h264 @ 000000000126db40] AVC: The buffer size 210 is too short to read the nal length size 0 at the offset 210.
[h264 @ 000000000126db40] AVC: The buffer size 283997 is too short to read the nal length size 0 at the offset 283997.
[h264 @ 000000000126db40] AVC: The buffer size 17137 is too short to read the nal length size 0 at the offset 17137.
[...]
Что я Я пропустил? Я попытался найти темы, касающиеся аналогичной проблемы, но ничего не получилось. Или я могу отладить ошибку, чтобы получить больше информации об этом?
Что такое возвращаемое значение avcodec_decode_video2()? –
Возвращаемое значение равно количеству оставшихся байтов. Кроме того, указатель got_picture отличен от нуля, поэтому я предполагаю, что декомпрессия прошла успешно. Тем не менее, я всегда получаю эту ошибку. – chrisp
Я даже не знаю, что пытается сказать сообщение об ошибке. О каком буфере относится ошибка? – chrisp