java 如何把多个音频合成一个

java 复制代码
    public static void main(String[] args) {
        File file1 = new File("D:\\配音\\LOL稳健4.mp3");
        File file2 = new File("D:\\配音\\LOL稳健4-2.mp3");
        File file3 = new File("D:\\配音\\LOL稳健444.mp3");

        // 创建要合并的音频文件对象列表
        List<File> sourceFiles = new ArrayList<>();
        sourceFiles.add(file1);
        sourceFiles.add(file2);

        mergeAudioFiles(sourceFiles, file3);
    }

    private static void mergeAudioFiles(List<File> audioFiles, File outputFile) {
        try {
            long totalLength = 0;
            AudioFormat audioFormat = null;
            AudioInputStream audioInputStream = null;
            List<AudioInputStream> audioInputStreams = new ArrayList<>();

            // 读取每个音频文件,获取其音频格式和音频流
            for (File audioFile : audioFiles) {
                audioInputStream = AudioSystem.getAudioInputStream(audioFile);
                totalLength += audioInputStream.getFrameLength();
                audioFormat = audioInputStream.getFormat();
                audioInputStreams.add(audioInputStream);
            }

            // 创建新的音频格式和流
            boolean isSigned = audioFormat.getEncoding() == AudioFormat.Encoding.PCM_SIGNED;
            AudioFormat newAudioFormat = new AudioFormat(audioFormat.getSampleRate(),
                audioFormat.getSampleSizeInBits(),
                audioFormat.getChannels(),
                isSigned,
                audioFormat.isBigEndian());
            AudioInputStream mergedAudioStream = new AudioInputStream(
                new SequenceInputStream(Collections.enumeration(audioInputStreams)),
                newAudioFormat,
                totalLength
            );

            // 写入合并后的音频流到输出文件
            AudioSystem.write(mergedAudioStream, AudioFileFormat.Type.WAVE, outputFile);

            // 关闭所有音频流
            for (AudioInputStream ais : audioInputStreams) {
                ais.close();
            }

            mergedAudioStream.close();
        } catch (UnsupportedAudioFileException | IOException e) {
            e.printStackTrace();
        }
    }
相关推荐
hongtianzai4 分钟前
Laravel8.x核心特性全解析
java·c语言·开发语言·golang·php
:mnong7 分钟前
MOVA MOSS Video and Audio同步视频-音频设计分析
音视频
逸Y 仙X7 分钟前
文章十一:ElasticSearch Dynamic Template详解
java·大数据·数据库·elasticsearch·搜索引擎·全文检索
隔壁小邓9 分钟前
IDEA 中同时启动多个微服务
java·微服务·intellij-idea
:12110 分钟前
idea17创建tomcat项目(计网底层核心理解!)
java·ide·intellij-idea
chushiyunen11 分钟前
python cosyVoice实现tts文本转语音、音频(未完成)
开发语言·python·音视频
Brookty13 分钟前
网络通信核心:四元组、socket与IO机制详解
java·网络通信·网络入门
佩奇大王24 分钟前
P159 摆动序列
java·开发语言·算法
计算机学姐25 分钟前
基于SpringBoot的网吧管理系统
java·spring boot·后端·spring·tomcat·intellij-idea·mybatis
Boop_wu27 分钟前
[Java EE 进阶] SpringBoot 配置文件全解析:properties 与 yml 的使用(1)
java·spring boot·spring·java-ee