2015-09-16 2 views
4

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

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

Спасибо!

ответ

8

Вам не нужен avformat, вам нужен avcodec. 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);