FFmpeg h265 кодировать-> декодировать, c ++ - PullRequest
1 голос
/ 15 марта 2019

Привет, у меня уже есть работающий код и код прямого декодирования для h264.Я пытаюсь адаптировать код для работы с h265, но я делаю что-то не так с декодированием, так как всегда получаю сообщение об ошибке:

[hevc @ 0x78eca0] PPS id out of range: 0
[hevc @ 0x78eca0] Error parsing NAL unit #0.

Инициализация декодирования:

decoder = avcodec_find_decoder(AV_CODEC_ID_H265);

ctx = avcodec_alloc_context3(decoder);
ctx->extradata = NULL;
ctx->width = 400;
ctx->height = 256;
ctx->pix_fmt = AV_PIX_FMT_YUV420P;

avcodec_open2(ctx,decoder,NULL);

Кодирование, кажется, нормально, так как я работаю только с небольшими видео, я получаю только один наль:

x265_nal* nals;
unsigned int i_nals;

int ret = x265_encoder_encode(m_x265Encoder, &nals, &i_nals, m_picIn, m_picOut);

AVPacket avpkt;
av_init_packet(&avpkt);
avpkt.size = nals[0].sizeBytes;
avpkt.data = nals[0].payload;
AVFrame* frame = avcodec_alloc_frame();

int got=0;
avcodec_decode_video2(ctx,frame,&got,&avpkt);

Кто-нибудь может мне помочь с этим?

br Майк

1 Ответ

0 голосов
/ 18 марта 2019

Вы уверены, что передали модули SPS, PPS, VPS NAL в декодер до фактического сжатия изображения? Кажется, что декодер получил изображение, но еще не имеет PPS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...