【问题标题】:Is a single integer considered an "audio frame" in MediaCodec?MediaCodec 中是否将单个整数视为“音频帧”?
【发布时间】:2021-08-13 21:29:57
【问题描述】:

我从 MediaCodec 的官方文档中阅读了以下内容:

原始音频缓冲区包含 PCM 音频数据的整个帧,这是按通道顺序为每个通道提供的一个样本。每个 PCM 音频样本是一个 16 位有符号整数或浮点数,按原生字节顺序排列。

https://source.android.com/devices/graphics/arch-sh

我的阅读方式是,缓冲区包含一整帧音频,但一帧只是一个有符号整数。这似乎没有意义。或者这是左右音频的两个值?当它只包含一个值时,为什么称它为缓冲区?对我来说,缓冲区指的是跨越几毫秒的多个值。

【问题讨论】:

    标签: android-mediacodec


    【解决方案1】:

    这是docsAudioFormat 所说的:

    对于线性 PCM,音频帧由同时捕获的一组样本组成,其计数和通道关联由通道掩码给出,其样本内容由编码指定。例如,一个立体声 16 位 PCM 帧由两个 16 位线性 PCM 样本组成,帧大小为 4 字节。

    你说得对,只为一帧使用缓冲区是没有意义的。在实践中,缓冲区充满了许多帧。

    您可以通过MediaCodec.BufferInfosize 属性和帧大小来计算缓冲区中的帧数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-14
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 2016-03-12
      • 2016-10-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多