необработанное декодирование битового потока h.264

Я могу получить необработанные кадры h.264 с камеры. (он НЕ содержит сетевых заголовков, например rtsp, http). Это необработанные данные h.264. И я помещаю эти данные в очередь кадр за кадром. Я гуглил множество примеров ffmpeg, в которых используется avformat_open_input() либо с локальным путем к файлу, либо с сетевым путем. И я могу смотреть видео, сохраняя кадры в файл и используя avformat_open_input().

Моя проблема в том, что я хочу декодировать кадры в реальном времени, а не после их сохранения в виде файла. У кого-нибудь есть идеи по этому поводу?

Спасибо!


person srjohnhuang    schedule 16.09.2015    source источник


Ответы (1)


Вам не нужен авформат, вам нужен авкодек. avformat предназначен для разбора контейнеров и протоколов. avcodec предназначен для кодирования и декодирования элементарных потоков (то, что у вас уже есть).

AVPacket avpkt; int err, frame_decoded = 0;
AVCodec *codec = avcodec_find_decoder ( AV_CODEC_ID_H264 );
AVCodecContext *codecCtx = avcodec_alloc_context3 ( codec );
avcodec_open2 ( codecCtx, codec, NULL );
// Set avpkt data and size here
err = avcodec_decode_video2 ( codecCtx, avframe, &frame_decoded, &avpkt );
person szatmary    schedule 16.09.2015