【问题标题】:AMR - how to upsampleAMR - 如何上采样
【发布时间】:2011-03-06 13:26:17
【问题描述】:

如何对 AMR 音频数据进行上采样。 amr 文件包含 6 个字节的标题 - "!#AMR".getBytes(),之后有 32 个字节的帧,每个帧有 1 个字节的标题和 31 个字节的音频。我应该如何对其进行上采样?我阅读了有关线性插值的信息,但我不确定如何在这里应用它。 我应该在不同帧之间或帧中的字节之间或其他东西之间进行插值吗? 任何帮助将不胜感激:)

【问题讨论】:

    标签: java audio sampling amr


    【解决方案1】:

    您需要将 AMR 数据转换为原始 PCM 缓冲区,对 PCM 缓冲区进行重新采样,然后可选择转换回 AMR。

    【讨论】:

    • 所以不能直接上采样amr?那很糟。你能给我一些关于如何上采样 pcm 以及 pcm 数据结构的材料吗?谢谢。
    • @gosho:PCM 数据只是线性样本值的连续原始缓冲区。您可以将任何标准上采样算法应用于此数据,然后您将拥有一个更大的输出缓冲区,您可以将其转换回 AMR 数据。不过我想知道:您真的是指 upsample 吗?上采样意味着增加采样率,同时保留原始样本数据 - 这真的是您想要做的吗?在 AMR 数据的背景下似乎没有多大意义?
    • @Paul R 好吧,这是我的事。我正在为移动设备制作 voip 应用程序,并从一个设备捕获 AMR 音频,将其包装在数据报中并发送到播放它的另一台设备。我的问题是音频播放器有一些内部缓冲区(您无法控制),需要在实际播放音频之前对其进行填充。这会导致 2 秒延迟,而其余代码(网络和其他内容)足够快。所以我的想法是上采样(在接收设备上),从而为玩家的缓冲区创建更多数据。在这里上采样是个好方法。
    • 还有一件事——我可以用 PCM 录音,所以 AMR 在这里不是强制性的。如果代码更容易并且我可以避免一些不需要的计算,我可以替换代码。我只是对 PCM 不太熟悉。
    • @gosho:这听起来像是一个非常棒的解决方案 - 假设您将采样放大 2 倍,您仍然会有 1 秒的延迟,并且您的带宽需求将增加一倍。如果这确实是您想要做的,那么是的,记录为 PCM 和上采样。
    猜你喜欢
    • 1970-01-01
    • 2019-04-15
    • 1970-01-01
    • 1970-01-01
    • 2017-02-07
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    • 2020-12-28
    相关资源
    最近更新 更多