【问题标题】:Java Convert AudioFormatJava 转换音频格式
【发布时间】:2017-03-27 22:43:00
【问题描述】:

我正在尝试做的是我通过 TargetDataLine 类从麦克风捕获音频,使用套接字发送它并通过 SourceDataLine 在另一端播放。问题是我正在捕获的麦克风仅支持:

AudioFormat format = new AudioFormat(48000, 16, 1, true, true);

我正在播放它的扬声器,仅支持:

AudioFormat format = new AudioFormat(32000, 16, 2, true, true);

我直接把48khz推到32khz音频格式时,声音是有音调的,有什么办法可以把48khz单声道转成32khz立体声?

【问题讨论】:

    标签: java audio audioformat


    【解决方案1】:

    如果 Java 有一些内置的音频文件格式转换,您可以从音频教程线程上的“Using Files and Format Converters”帖子中了解它。

    如果必须手动完成,请查看该页面上的第一个代码示例,特别注意注释中的要点

      // Here, do something useful with the audio data that's 
      // now in the audioBytes array...
    

    如果并行运行输入和输出行,则可以使用线性插值从 48000 行获取数据并发布到 32000 行。比例为 3:2。

    因此,对于输入中的 3 个 PCM 数据点,为输出计算 2 个 PCM 数据点。

    对于输入,您可以将 in[0] 发送到 out[0],并将 in1/2 和 in[2]/2 的总和发送到 out1

    复制从单声道转换为立体声的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-20
      • 1970-01-01
      • 1970-01-01
      • 2012-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多