【问题标题】:How to read and modify amr audio file data?如何读取和修改amr音频文件数据?
【发布时间】:2012-06-20 16:19:24
【问题描述】:

如何从 AMR-NB 文件中提取采样率、比特率等信息。 严格来说,我想要采样率或任何其他可能改变其音高或速度的数据。

WAV 文件很容易,但在这里我受限于 AMR-NB 格式(J2me 设备)

我在谷歌上搜索了很多,但找不到任何东西......

AMR-NB 是否固定在 8Khz?还是因每个样本而异?

【问题讨论】:

    标签: java audio amr file-structure audioformat


    【解决方案1】:

    根据http://developer.nokia.com/community/wiki/AMR_format 的 AMR 文件格式,AMR 文件有一个 6 字节的标题,后跟一组音频帧,每个帧都有一个 1 字节的标题。每个音频帧的长度为 20 毫秒,并且采样率在每个帧的标题中给出。所以要读取第一帧的采样率,您需要读取文件中的第 7 个字节。取第 7 个字节并将其右移 3 位,并屏蔽掉新值的低 4 位。在 java 中,这是“((value>>3)& 0x0F)”,其中 value 是帧的 1 字节标头。然后对照下表检查该数字以确定该帧的比特率。然后由于每帧的长度为 20 毫秒,因此您需要将比特率(它们以 kb/s 的形式给出,因此将该数字乘以 1000 以获得每秒的比特数)除以 20 并除以((每字节 8 位)* 1000 毫秒每second) = 8000 以获取下一帧头要跳过的字节数。如果您想修改框架的内容,只需将这些框架按顺序重新复制到一个新文件中,但用旧框架替换您的新框架。一个临时文件很适合这个。我已经从下面的源页面复制了比特率表以供参考。

    0 - AMR 4.75 - 以 4.75kbit/s 编码

    1 - AMR 5.15 - 以 5.15kbit/s 编码

    2 - AMR 5.9 - 以 5.9kbit/s 编码

    3 - AMR 6.7 - 以 6.7kbit/s 编码

    4 - AMR 7.4 - 以 7.4kbit/s 编码

    5 - AMR 7.95 - 以 7.95kbit/s 编码

    6 - AMR 10.2 - 以 10.2kbit/s 编码

    7 - AMR 12.2 - 以 12.2kbit/s 编码

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多