当前位置: 首页 > 知识库问答 >
问题:

如何用KEY_I_FRAME_INTERVAL参数在MediaCodec中配置特定的GOP大小?

公孙成仁
2023-03-14

我的问题是下一个:我知道mediaformat.key_i_frame_interval是I帧将要出现的时间间隔(以秒为单位)(整数)。

因此,如果我将值设为1,帧速率为15,GOP大小将为15,如果帧速率为30,GOP大小将为30。

因此,在参数mediaformat.key_i_frame_interval是一个整数的情况下(不能给出值0.5作为使用30帧率的15帧gopsize),是否有任何解决方案将其配置为特定的GOP大小?

共有1个答案

季小云
2023-03-14

如您在问题中所述,关键帧出现在每个key_i_frame_interval*key_frame_rate帧中。所以如果你想要一个15的GOP大小,指定一个1的间隔和15的帧率,然后只需以30fps发送视频。

这就引出了一个问题:谎报帧速率对编解码器满足比特率目标的能力有什么影响?我知道有些设备会根据演示时间戳来调整质量,而不是固定的每秒帧数概念,这会让一切都变得很好。然而,似乎并不是所有的设备都是这样工作的。

不幸的是,mediacodec没有提供更灵活的方法来指定GOP大小。

 类似资料:
  • 我在我的项目中使用MediaCodec来编码来自摄像机的视频。由于某些原因,我需要将KEY_I_FRAME_INTERVAL设置为0,这意味着录制的mp4视频中的每一帧都将是一个关键帧(关键帧包含整个图像,而不仅仅是与前一帧的增量差异)。 而在这里我遇到了问题:在nexus 10、nexus 7、小米红米2、华硕zenphone 5、galaxy a5上一切都OK。但联想vibe s1的录音只有关

  • 问题内容: 基本上,我想做的是: 但是更普遍的问题是, 如何用填充特定的位置参数。 PS我确实意识到我可以代替使用。 问题答案: 无法完成。您必须创建包装函数。 表面上,您将尝试使用关键字参数- 这就是它们的目的,对吧?不幸的是,正如您所发现的那样,python的标准库函数没有采用命名参数。因此,在当前的实现方式下,如果不通过其他功能运行干扰是不可能的。 根据PEP 309的接受,接受包含的内容是

  • 自首次报道以来已经6年了:https://github.com/SeleniumHQ/selenium/issues/854 从这里https://chromedriver.chromium.org/getting-started我尝试这个代码: 当它启动时,去吧chrome://version/ 请参阅: 配置文件路径C:\Users\USERCU~1\AppData\Local\Temp\sc

  • 假设我有以下类及其接口 步骤1:使用Autofac在测试项目中设置构造函数: 步骤2:设置测试 现在,我如何注入配置器未知但“MyApplication”已知的参数“value”? 在我想要这么做之前 但是现在我正在尝试我们依赖反转和依赖注入,最终出现了上面描述的问题。

  • 问题内容: 如何在Go中分配运行时大小的数组? 以下代码是非法的: 您会收到消息(或类似消息),但是效果很好: 问题是,我可能要等到运行时才能知道我想要的数组的大小。 问题答案: 答案是您不直接分配一个 数组 ,而是 在创建 slice 时 让Go为您分配一个 数组 。 内置的函数创建了一个切片 和它后面的阵列 ,并且没有(傻)上的值编译时间常数- 限制性和。正如Go语言规范中所说: 使用创建的切

  • 我正在尝试构建一个自定义的< code>NavBar,带有一些可选的< code >视图,比如searchbar(但前提是视图需要显示它)。 基本上,我需要在视图中传递一些带有参数。 下面是一个示例: 我所说的属性是和。但是执行 或 会引发编译错误: 无法将类型“绑定?”的值分配给类型“绑定” 你知道我该如何解决这个问题吗? 还是有更好的方法来做我想做的事?