java - 连接两个具有不同 AudioFormat 的 wav 文件
问题描述
我有一个应该连接两个 .wav 声音文件的方法。如果我有两个具有相同 AudioFormat 的文件,它工作正常。但是,如果我采用两种不同格式的文件,其中一个文件的结果听起来会很糟糕。所以,我需要用这些格式连接两个 .wav 文件:
PCM_SIGNED 24000.0 Hz,16 位,单声道,2 字节/帧,小端;
PCM_SIGNED 44100.0 Hz,16 位,立体声,4 字节/帧,小端;
方法代码:
private static void concatenateTwoWaves(String fileName1, String fileName2) {
String wavFile1 = fileName1 + ".wav";
String wavFile2 = fileName2 + ".wav";
try {
AudioInputStream clip1 = AudioSystem.getAudioInputStream(new File(wavFile1));
AudioInputStream clip2 = AudioSystem.getAudioInputStream(new File(wavFile2));
AudioInputStream appendedFiles =
new AudioInputStream(
new SequenceInputStream(clip1, clip2),
clip1.getFormat(),
clip1.getFrameLength() + clip2.getFrameLength());
AudioSystem.write(appendedFiles,
AudioFileFormat.Type.WAVE,
new File("output.wav"));
} catch (Exception e) {
e.printStackTrace();
}
}
解决方案
这两种格式中的一种必须首先转换为另一种。Oracle 提供了以下专门针对该主题的教程,并附有示例:使用文件和格式转换器。
推荐阅读
- c# - 如何在 C# 中用负号和正号为 40 位数字编码格式字符串?
- c++ - 即使功能有效,测试仍然失败
- javascript - React 将数组映射到下拉问题
- c# - OracleCommandBuilder.DeriveParameters() 抛出 OracleException:ORA-06564:对象不存在 ORA-06512:在“SYS.DBMS_UTILITY”
- javascript - 在mongodb中访问nodejs中的对象属性时未定义
- r - 无法通过 for 循环附加向量
- javascript - Google Pay for Passes 与 React 应用程序集成时出现 403 错误
- ios - React Select 输入缩放 - 无法在 iPhone XS 上禁用
- flutter - 从多个小部件访问 StreamController Stream
- python - 如何在大查询和 python 中使用关键字限制获取数据时不重复的行