avcodec_find_decoder(CODEC_ID_MPEG2TS) всегда NULL

Я хочу декодировать входящий поток MPEG2-Transport, а затем кодировать его в h264. Все отлично работает с кодеком h264, но проблема в том, что libavcodec, похоже, не распознает MPEG2-Transportstream. Я в основном делаю это аналогично официальному примеру:

http://ffmpeg.org/doxygen/trunk/decoding__encoding_8c-source.html

ptrCodec = avcodec_find_decoder(CODEC_ID_MPEG2TS);

ptrCodec всегда равен NULL. Может ли кто-нибудь помочь мне с этим?


person mmoment    schedule 06.01.2012    source источник


Ответы (1)


CODEC_ID_MPEG2TS = 0x20000, /**< _FAKE_ codec to indicate a raw MPEG-2 TS
                            * stream (only used by libavformat) */

CODEC_ID_MPEG2TS предназначен только для внутреннего использования.

Я думаю, вы путаете кодеки и форматы/контейнеры файлов. libavcodec может кодировать ваше видео в h264, mpeg2video или mpeg4. Если вы хотите поместить это видео в файл avi, mpeg или mpeg-ts, вы должны использовать libavformat.

Вам следует поискать другой пример. В этом видео кодируется в h264, а затем записывается в необработанный файл без каких-либо контейнеров.

person Piotr Praszmo    schedule 06.01.2012
comment
Спасибо, я проглядел это. Оглядываясь назад, ненужная ошибка - person mmoment; 21.01.2012