You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用FFmpeg/libAV编码H.264时设置preset报错求助

解决FFmpeg/libAV设置H.264编码器preset返回错误-1414549496的问题

错误码-1414549496对应AVERROR_OPTION_NOT_FOUND,本质是当前使用的H.264编码器不支持preset参数,核心原因及解决方法如下:

核心原因

你调用avcodec_find_encoder(AV_CODEC_ID_H264)返回的编码器可能不是libx264(FFmpeg默认的H.264软件编码器),而是其他H.264编码器(如openh264、nvenc硬件编码器等),这些编码器没有preset配置项。

解决步骤

  1. 明确指定使用libx264编码器
    替换编码器查找代码,直接指定libx264,避免匹配到其他不兼容的编码器:

    // 替换原有的avcodec_find_encoder(AV_CODEC_ID_H264)
    mContext.codec = avcodec_find_encoder_by_name("libx264");
    if (!mContext.codec) {
        // 处理编码器不存在的情况:比如FFmpeg编译时未启用libx264支持
        fprintf(stderr, "libx264 encoder not found. Ensure FFmpeg was compiled with --enable-libx264\n");
        return -1;
    }
    
  2. 验证编码器类型
    可以在查找编码器后打印名称,确认是否为libx264:

    fprintf(stdout, "Using encoder: %s\n", mContext.codec->name);
    
  3. 调试错误细节
    用av_strerror解析错误码,获取更直观的错误描述,方便排查:

    int ret = av_opt_set(mContext.codec_context->priv_data, "preset", "medium", 0);
    if (ret < 0) {
        char errbuf[AV_ERROR_MAX_STRING_SIZE];
        av_strerror(ret, errbuf, sizeof(errbuf));
        fprintf(stderr, "Failed to set preset: %s\n", errbuf);
    }
    
  4. 确保FFmpeg编译时启用libx264
    如果avcodec_find_encoder_by_name("libx264")返回空,说明你的FFmpeg库编译时没有开启libx264支持,需要重新编译FFmpeg并添加--enable-libx264参数(需先安装x264开发库)。

内容的提问来源于stack exchange,提问作者Mateusz Wójt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 12:25:29