кодировка ffmpeg hevc (x265)

я пытаюсь использовать кодер h265 в библиотеке ffmpeg, но выдает мне эту ошибку:

Cannot open libx265 encoder.

это мой код:

formatContext = avformat_alloc_context();
videoStream = avformat_new_stream(formatContext,0);
if(!videoStream ) {
//error
return;
}
av_init_packet(&packet);
codecContext=videoStream->codec;
codecContext->codec_type = AVMEDIA_TYPE_VIDEO;
codecContext->width = width;
codecContext->height = height;
codecContext->time_base.den = fps;
codecContext->time_base.num = 1;
codecContext->pix_fmt = AV_PIX_FMT_YUV420P;
codecContext->codec_id = AV_CODEC_ID_HEVC;
AVDictionary *param = 0;
av_dict_set(&param, "x265-params", "qp=20", 0);
av_dict_set(&param, "preset", "ultrafast", 0);
av_dict_set(&param, "tune", "zero-latency", 0);
av_dict_set(&param, "qmin", "0", 0);
av_dict_set(&param, "qmax", "69", 0);
av_dict_set(&param, "qdiff", "4", 0);
codec = avcodec_find_encoder(codecContext->codec_id);
if (!codec) {
//codec not found
return;
}
int rt = avcodec_open2(codecContext, codec, &param); // <----- fails here
if (rt < 0) {
// fails here!!
return;
}

Этот код работает для кодера h264, кто-нибудь знает, почему не работает с HEVC?

3

Решение

Если вы установите

codecContext->sample_aspect_ratio.num = 4;
codecContext->sample_aspect_ratio.den = 3;

Кодер HEVC будет работать, но на выходе нет видео.

1

Другие решения

Привет ты дошел до открытия libx265 кодировщик?
У меня была такая же проблема, и я пытался использовать AV_CODEC_ID_H265 вместо.
У меня была такая же проблема раньше с libx264 но я решил, установив:

av_dict_set(&param, "profile", "high", 0);

Кажется, что-то не хватало в конфигурации кодека.

1

По вопросам рекламы [email protected]