【问题标题】:How can I convert a wav file in java如何在java中转换wav文件
【发布时间】:2012-09-17 04:57:28
【问题描述】:

如何在java中转换wav文件

AudioFormat targetFormat = new AudioFormat(
                                    sourceFormat.getEncoding(),
                                    fTargetFrameRate,
                                    16,
                                    sourceFormat.getChannels(),
                                    sourceFormat.getFrameSize(),
                                    fTargetFrameRate,
                                    false);

结果异常:

java.lang.IllegalArgumentException: Unsupported conversion: 
ULAW 8000.0 Hz, **16 bit**, mono, 1 bytes/frame, **from** ULAW 8000.0 Hz, **8 bit**, mono, 1 bytes/frame

在java中可以吗?

我需要从 8 获取 16 位的 wav 文件

【问题讨论】:

  • 好的,所以你想从 8 位转换到 16 位?

标签: java audioformat


【解决方案1】:

【讨论】:

    【解决方案2】:

    您始终可以使用 FFMPEG、http://ffmpeg.org/ 进行转换。您的 Java 程序可以调用 FFMPEG 进行转换。
    FFMPEG 适用于所有操作系统。

    【讨论】:

      【解决方案3】:

      这是一种使用内置 Java 方法将 8 位 uLaw 编码的二进制文件转换为 16 位 WAV 文件的方法。

      public static void convertULawFileToWav(String filename) {
          File file = new File(filename);
          if (!file.exists())
              return;
          try {
              long fileSize = file.length();
              int frameSize = 160;
              long numFrames = fileSize / frameSize;
              AudioFormat audioFormat = new AudioFormat(Encoding.ULAW, 8000, 8, 1, frameSize, 50, true);
              AudioInputStream audioInputStream = new AudioInputStream(new FileInputStream(file), audioFormat, numFrames);
              AudioSystem.write(audioInputStream, Type.WAVE, new File("C:\\file.wav"));
          } catch (IOException e) {
              e.printStackTrace();
          }
      }
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 2017-09-28
      • 2011-06-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多