Я хочу преобразовать файл .mkv в .mp4 с помощью Libav, но когда я пытаюсь декодировать видеопоток h.264, в моем коде возникает сбой
Неверный размер блока NAL 21274662>141
Ошибка разделения ввода на единицы NAL
Похоже, что поток содержит экстраданные AVCC с форматированными данными Приложения B, которые являются недействительными. без рамы!
Не удалось отправить пакет на декодирование ("ошибка недопустимых данных при обработке ввода")
Соответствующий раздел кода доступен ниже.
while(!(ret = av_read_frame(ifmt_ctx, &input_packet))&&(ret>=0)){
if ((ret = avcodec_send_packet(avctx, &input_packet)) < 0) {
fprintf(stderr, "Could not send packet for decoding (error '%s')\n",get_error_text(ret));
return ret;
}
ret = avcodec_receive_frame(avctx, iframe);
if (ret == AVERROR(EAGAIN)) {
goto read_another_frame;
/* If the end of the input file is reached, stop decoding. */
} else if (ret == AVERROR_EOF) {
break;
} else if (ret < 0) {
fprintf(stderr, "Could not decode frame (error '%s')\n",get_error_text(ret));
break;
}
// Default case: encode data
else {
}
Я использую в основном новый API (отправить/получить пакет/кадр), и путаница существует, потому что кажется, что h.264 нуждается в специальной реализации. Я с нетерпением жду любой идеи, с чего мне начать отладку.