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

MediaCodec h264编码器输出大的原始流

孙斌
2023-03-14

大小范围在2.5MB-20MB之间。这个问题在较长的剪辑上变得更糟,例如7分钟的范围是9MB-120MB。

正常吗?

我试图捕捉同样的场景,但还是得到了不同的结果。

Codec: OMX.SEC.AVC.Encoder
Color Format: 21
KEY_FRAME_RATE: 8.77
KEY_BIT_RATE: ~880Kbit
mediaVideoCodec.queueInputBuffer(inputBufferIndex, 0, FrameData.length, computePresentationTime(frameCounter), 0);
private long computePresentationTime(int frameIndex) {
    return (long)(132 + (frameIndex * (1000000f / 8.77f)));
}

共有1个答案

季凡
2023-03-14

“132”表示代码是从CTS测试复制的,而CTS测试生成它编码的视频。测试代码正在创建一系列具有恒定帧速率的帧。为了确定时间戳是在未经修改的情况下通过的,并且不是由编解码器内部生成的,会添加一个小的偏移量。

在880Kbps时,您希望(880/8)*(7*60)/1024=45MB。大多数编码器都能很好地匹配所需的速率。我见过当帧上的时间戳与帧速率不匹配时(例如这篇文章),这种情况变坏了,但既然您正在生成时间戳,我不确定为什么会这样。

理想情况下,时间戳来自相机,而不是生成的值或系统时间。否则,您无法知道帧是否被丢弃在源附近。

 类似资料:
  • 问题是输出文件的大小大于原始文件 编辑:-我知道的解决方案,即读写文件字节明智,但我的问题是为什么这是发生的?

  • 我试图写一个通用函数,将写一个未压缩和压缩文件(取决于用户输入)。根据zlib,您只需将gzopen模式设置为“w0”(无压缩),但我仍然得到zlib头! 在ZLIB手册中,它提到可以写入原始数据(没有头/尾),但没有说明如何写入。我如何用zlib编写一个普通的(原始编码的)文件?

  • 问题内容: 我想以类似于http://www.google.com/ig/api?weather=Mountain+View的方式输出原始xml,但使用PHP。 我的网络服务器上有一个非常简单的php脚本: 我在Chrome / firefox中只能看到“ sample_name”。我想看看: 我找不到简单的教程。 谢谢 问题答案: 默认情况下,PHP将Content-Type设置为text /

  • 要再次编码,解码数据将再次转换为,然后转换为编码的字符串。但是与不匹配。请帮助我创建一个完美无瑕的编码解码到重新编码流。 详细说明,如果这样执行,重新编码与初始编码完全匹配。 但是,我的是从数据库中提取的,如下所示,在这种情况下,重新编码不匹配。 这2看起来相似的方式,但我的程序似乎正在产生一个损坏的版本,实际的base64解码字符串应该是什么。

  • 问题内容: 我想分解一下我拥有的可引导x86磁盘的MBR(前512个字节)。我已将MBR复制到使用 对可以反汇编文件的Linux实用程序有何建议? 问题答案: 您可以使用objdump。根据本文的语法为:

  • 问题内容: 我有一些.proto文件,用于编译Java,C 和C#中的类。对于Java和C ,我使用Protoc编译器,对于C#,我使用Protogen。用于创建Java / C ++类的脚本是 对于C#类,我有 这两个脚本都引用.proto文件(当然是;])。我添加了上面的C#脚本,以生成允许我测试是否指定了字段的属性;该选项将为其中的所有字段创建。 我的问题很简单,我想确保C#,C ++和Ja