Я использую api FFMpeg для кодирования изображений в потоке H.264, код выглядит так: encode code. Когда я вызвал функцию avcodec_encode_video2
, у меня есть данные AVPacket, затем я сохранил ее в файл. Я использую несколько изображений для получения нескольких файлов для тестирования. Основываясь на стартовом коде 00 00 00 01
или 00 00 01
, я обнаружил, что данные 1-го и 2-го файлов содержат несколько H.264 NAL Uints. Но начните с третьего файла, я не могу найти начальный код. Как последующее изображение. Какова связь между AVPacket в FFMpeg и H.264 NAL Uint?
Я чувствую смущение. Основы кода FFMpeg Я думаю, что данные одного из AVPacket должны содержать хотя бы один NAL Uint, но результат является неожиданным. Это означает, что один NAL Uint может быть разделен на две данные AVPackets? Какова связь между AVPacket и H.264 NAL Uint?
Вы можете показать свой код? Я подозреваю, что ваш кодовый вызов фактически не возвратил пакет (got_packet_ptr == 0) или что-то в этом роде. –
Из [FFmpeg doxygen] (http://ffmpeg.org/doxygen/trunk/group__lavc__encoding.html#gaa2dc9e9ea2567ebb2801a08153c7306b) на 'avcodec_encode_video2': * Принимает исходные необработанные видеоданные из фрейма и записывает следующий выходной пакет, если он доступен, в avpkt , Выходной пакет ** не обязательно содержит данные для самого последнего кадра **, поскольку кодеры могут задерживать и переупорядочивать входные кадры по мере необходимости. * Так что, вероятно, он разбит. Можете ли вы объединить данные и передать их декодеру, чтобы узнать, не жалуется или нет? – incBrain
@ RonaldS.Bultje Я отлаживаю свою программу, 'got_output' на самом деле будет правдой каждый раз. – Ello