FFmpeg - H264 编码器找不到有效设备并且无法配置编码器

2024-05-02

我尝试使用 H264 编码器进行编码,但是当我这样做时,出现以下错误:

[h264_v4l2m2m @ 0x55682d2416c0] Could not find a valid device
[h264_v4l2m2m @ 0x55682d2416c0] can't configure encoder

我确保在配置 FFmpeg 时启用了编码器。当我运行命令时ffmpeg -codecs我看到 H264 编解码器被列为编码器:

DEV.LS h264    H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
(decoders: h264 h264_v4l2m2m )
(encoders: libx264 libx264rgb h264_v4l2m2m h264_vaapi )

源视频的视频编解码器是 H264,所以我不确定为什么当同时有解码器和编码器时我无法使用 H264 进行编码。即使当我跑步时avcodec_find_encoder_by_name找到libx264编码器,它不能。

这是失败的代码块:

codec = avcodec_find_encoder(AV_CODEC_ID_H264);
if (!codec) {
    printf("[ERROR] Failed to find video output codec\n");
    return -1;
}
outputCodecContext = avcodec_alloc_context3(codec);
if (!outputCodecContext) {
    printf("[ERROR] Failed to allocate memory for video output codec context\n");
    return -1;
}
av_opt_set(outputCodecContext->priv_data, "preset", "slow", 0);
outputCodecContext->bit_rate = inputCodecContext->bit_rate;
outputCodecContext->width = inputCodecContext->width;
outputCodecContext->height = inputCodecContext->height;
outputCodecContext->time_base = (AVRational){1, 60};
outputCodecContext->framerate = (AVRational){60, 1};
outputCodecContext->pix_fmt = inputCodecContext->pix_fmt;
outputCodecContext->extradata = inputCodecContext->extradata;
outputCodecContext->extradata_size = inputCodecContext->extradata_size;

// This if statement fails as a result of the encoder error
if (avcodec_open2(outputCodecContext, codec, NULL) < 0) {
    printf("[ERROR] Failed to open video output codec\n");
    return -1;
}
return 0;

当我使用 H264 进行编码时ffmpeg命令,我没有收到任何这些错误。任何帮助表示赞赏。


事实证明,我总是忘记打电话make and make install(我在 Ubuntu 上)在我使用命令之后./configure --enable-shared --enable-libx264 --enable-gpl。这消除了我收到的错误,并且我的代码能够找到libx264编码器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FFmpeg - H264 编码器找不到有效设备并且无法配置编码器 的相关文章

随机推荐

  • 从片段调用片段

    我想通过单击当前片段中的按钮来调用当前片段中的另一个片段 这是我的主要活动 import android app FragmentManager import android os Bundle import android support
  • 嵌套 CollectionView 和显示(使用 Visual Studio 2019、Xamarin XPlatform Android)

    嵌套 CollectionView 并在另一个中滚动 官方支持吗 显示这些集合问题 请参阅下面的我的数据模型和 XAML 代码 我没有可以放置生成的屏幕图像的站点 namespace Notes Models public class No
  • 如何在 cgdb 中滚动 gdb 窗口?

    使用 cgdb 时 如何滚动浏览 gdb 窗口中可见的输出 PgUp 和 PgDn 应该滚动 gdb 窗口 如果他们不这样做 请检查您的TERM环境变量并确保其设置正确
  • 具有现有仿射变换的 UIKit Dynamics

    我的观点有一些尺度上的转变 当我在其上应用一些 UIKit Dynamics 时 它会将它们归零 如何在视图上保留现有的转换 同时使其跳转 P 谢谢 看看 UIDynamicAnimator 的updateItemUsingCurrentS
  • 是否有 NoSQL 解决方案的比较(在某些情况下哪个更好?)[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 当我在 Linux PHP 架构中构建基于密钥的归档应用程序时 我正在尝试了解有关 NoSQL 的更多信息 谁能解释一下主要解决方案
  • 表单验证后 isValid 保持 false

    我有一个自定义验证函数 但即使它没有返回错误 表单仍然无效 我将以下属性传递给 Formik validate import files gt return import files values length 0 import files
  • 如何从 python 脚本更改 python 文件中的变量值

    我目前有一个 python 文件 其中包含一堆带有值的全局变量 我想从一个单独的 python 脚本永久更改这些值 我尝试过 setattr 等 但似乎不起作用 有没有办法做到这一点 简短的回答是 不 不值得这么麻烦 听起来您正在尝试创建一
  • Momentjs 时区 - 获取特定时区时间的日期

    我正在尝试根据用户特定时区的 UTC 基准 创建日期 在本例中使用 momentjs momentjs 时区的 美国 洛杉矶 但是 我没有得到我期望的结果 var tempDate moment 1448841600000 moment 2
  • Matplotlib 动画未显示

    当我在家里的电脑上尝试这个时 它可以工作 但在工作的电脑上却不行 这是代码 import numpy as np import matplotlib pyplot as plt import matplotlib animation as
  • 如何按给定顺序对列表进行排序?

    我正在尝试执行以下操作 我有一个预定义的列表 用作给定列表上的 排序依据 my orderby car boat chicken cat dog mouse or my orderby car gt 0 boat gt 1 chicken
  • Unpickle 二进制文件为文本[重复]

    这个问题在这里已经有答案了 我需要对基本上如下所示的系统进行一些维护 复杂的遗留Python程序 gt 二进制pickle文件 gt 另一个复杂的遗留Python程序 这需要准确弄清楚中间 pickle 文件中的内容 我怀疑文件格式比生成和
  • 正则表达式删除2个字符串之间的所有内容

    我的replaceAll 需要一个正则表达式来删除2 个字符串和字符串本身之间的所有内容 例如 如果我有类似的东西 stackoverflow is really awesome nremove123 n I love it 我试图做一个像
  • android 如何延迟执行

    我正在构建一款具有人工智能功能的安卓棋盘游戏 AI 轮流执行 必须调用一系列操作 然后将无效信息发布到我的自定义视图中进行更新 我需要放慢这些动作的速度 以便用户能够看到人工智能正在轮到它 而不是它一闪而过 我已经尝试过一些类似的事情 tr
  • Objective-C 复制视图

    所以我在这里有一个简短的问题 我有一个视图控制器对象的实例 让我们调用它viewCon1 并且它上面放置了几个子视图 每个子视图都具有独特的属性 让我们称呼他们吧sub1 sub2 and sub3 现在 我以编程方式添加每个子视图 执行以
  • 每次加载解决方案时,所有项目引用都有黄色三角形

    我的所有项目 来自同一解决方案 引用都标有黄色三角形 这些项目都设置为相同的 NET 版本 4 5 1 错误日志说 无法引用项目 CommonLibrary 暂时解决该问题的方法是 删除并重新添加引用 右键单击并选择 添加服务引用 并立即取
  • 如何使用VerQueryValue?

    我有一个 exe 需要从特定 dll 检索版本信息 例如 FileDescription 我的代码已经调用了 GetFileVersionInfoSize 和 GetFileVersionInfo 但我不知道如何应用 VerQueryVal
  • 检查argc的值[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我对传递给程序的 argc 数量有疑
  • 保护客户端 API 的安全

    我正在为基于 JavaScript 的游戏构建服务器端 API 和客户端库 其中必须确保两个非常重要的功能的安全 用户每次游玩都必须扣款 我们必须确保提交的分数是玩家实际获得的分数 解决第一个问题看起来很简单 在每次游戏开始时 我们都会调用
  • Firebase JS 错误:getToken 由于令牌更改而中止

    我收到 Firebase 错误 错误 getToken 由于令牌更改而中止 使用 JavaScript 库运行 Firestore 事务时 错误不会每次都会抛出 而且我找不到模式 我想我已经在某处实现了一些竞争条件 我的应用程序中的用户流程
  • FFmpeg - H264 编码器找不到有效设备并且无法配置编码器

    我尝试使用 H264 编码器进行编码 但是当我这样做时 出现以下错误 h264 v4l2m2m 0x55682d2416c0 Could not find a valid device h264 v4l2m2m 0x55682d2416c0