簡體   English   中英

ffmpeg hevc(x265)編碼

[英]ffmpeg hevc (x265) encoding

我正在嘗試在ffmpeg庫中使用h265編碼器但是給我這個錯誤:

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一起使用?

嗨,你有沒有打開libx265編碼器? 我遇到了同樣的麻煩,並嘗試使用AV_CODEC_ID_H265 我在使用libx264之前遇到了同樣的麻煩,但我解決了它,通過設置:

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

似乎編解碼器配置中缺少某些東西。

如果你設置

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

HEVC編碼器可以工作,但輸出上沒有視頻。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM