Чтение байтов NAL H264 SPS и PPS с использованием API libavformat

Как читать байты NAL H264 SPS и PPS с помощью API libavformat?

Я пробовал считывать видеоданные в структуру «AVPacket» с помощью API «av_read_frame (input_avFormatContext, & avPkt)» из видеофайла .mp4 (кодек - h264).

Я сбросил avPkt-> данные в файл. Но чтение 1-го кадра - это кадр IDR.

Файл, созданный с помощью "ffmpeg -i video.mp4 video.h264", будет содержать SPS и PPS в начале перед запуском IDR.

Я хочу извлечь необработанное видео .h264 из файла .mp4 и выгрузить его в порядке SPS, PPS, IDR, P1, P2 ...

Я хочу сделать это программно, используя API libavformat.

Есть идеи по этому поводу?

Спасибо.


person mrsatish    schedule 24.06.2013    source источник


Ответы (1)


В mp4-контейнере (также mkv) PPS / SPS хранятся отдельно от данных кадра в глобальных заголовках. Чтобы получить к ним доступ из API-интерфейсов libav *, вам необходимо найти поле дополнительных данных в AVCodecContext AVStream, которое относится к необходимому видеопотоку. Кроме того, экстраданные могут иметь формат, отличный от стандартных NAL H.264, поэтому описание формата см. В спецификациях MP4-контейнера.

person nobody555    schedule 25.06.2013