JAVA按顺序播放多个wav音频

简介: 用Java按顺序播放多个音频部件,不是同时播放。代码如下: List files = new ArrayList(); files.add("barcode_prefix.

用Java按顺序播放多个音频部件,不是同时播放。代码如下:

            List<String> files = new ArrayList<String>();
            files.add("barcode_prefix.wav");
            for (char letter : barcode.toCharArray())
            {
                files.add(letter + ".wav");
            }
            files.add("barcode_suffix.wav");
            
            byte[] buffer = new byte[4096];
            for (String file : files)
            {
                try
                {
                    AudioInputStream is = AudioSystem.getAudioInputStream(this.getClass().getResourceAsStream(file));
                    AudioFormat format = is.getFormat();
                    SourceDataLine line = AudioSystem.getSourceDataLine(format);
                    line.open(format);
                    line.start();
                    while (is.available() > 0)
                    {
                        int len = is.read(buffer);
                        line.write(buffer, 0, len);
                    }
                    line.drain(); // **[DEIT]** wait for the buffer to empty before closing the line
                    line.close();
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
            }

这个我在本地播放没有问题,放到服务器上会报错:

java.io.IOException: mark/reset not supported
	at java.util.zip.InflaterInputStream.reset(Unknown Source)
	at com.sun.media.sound.SoftMidiAudioFileReader.getAudioInputStream(Unknown Source)
	at javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source)
	at com.yulong.mes.winapp.form.quality.ForBatchOperationForm$PlayAudioRunnable.run(ForBatchOperationForm.java:4317)
	at java.lang.Thread.run(Unknown Source)


网上说要用BufferedInputStream封装一下。修改下代码确实如此:

 List<String> files = new ArrayList<String>();
            files.add("barcode_prefix.wav");
            for (char letter : barcode.toCharArray())
            {
                files.add(letter + ".wav");
            }
            files.add("barcode_suffix.wav");
            
            byte[] buffer = new byte[4096];
            for (String file : files)
            {
                try
                {
                    InputStream stream = this.getClass().getResourceAsStream(file);
                    InputStream bufferedIn = new BufferedInputStream(stream);
                    
                    AudioInputStream is = AudioSystem.getAudioInputStream(bufferedIn);
                    AudioFormat format = is.getFormat();
                    SourceDataLine line = AudioSystem.getSourceDataLine(format);
                    line.open(format);
                    line.start();
                    while (is.available() > 0)
                    {
                        int len = is.read(buffer);
                        line.write(buffer, 0, len);
                    }
                    line.drain(); // **[DEIT]** wait for the buffer to empty before closing the line
                    line.close();
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
            }

  

目录
相关文章
|
4月前
|
数据采集 Web App开发 Java
Java爬虫安全策略:防止TikTok音频抓取过程中的请求被拦截
Java爬虫安全策略:防止TikTok音频抓取过程中的请求被拦截
|
4月前
|
Java 程序员 语音技术
怎么用Java 把多个音频拼接成一个?
**Java音频拼接指南** 在Java中,利用音频处理库`cn.juwatech.*`可合并音频文件。步骤包括导入库,创建`AudioFile`对象,将它们添加到列表,然后用`AudioConcatenator.concat()`拼接成一个文件。注意确保音频格式一致,处理异常,并考虑性能优化。此技术提升用户体验,适用于音频编辑和合成场景。[来源:稀土掘金](https://juejin.cn/post/7387701265797840932)
117 0
|
5月前
|
Java
java实现视频和配音音频的合成
java实现视频和配音音频的合成
116 0
|
监控 Oracle Java
Java视频流提取与播放技术详解
Java视频流提取与播放技术详解
|
5月前
|
Java 开发工具 计算机视觉
Java使用OpenCV3.2实现视频读取与播放
Java使用OpenCV3.2实现视频读取与播放
66 0
|
Java
【Java】打开窗体后自动播放背景音乐代码实现
【Java】打开窗体后自动播放背景音乐代码实现
162 0
|
存储 Java 关系型数据库
Java使用JDBC向数据库存取二进制数据(如图片,视频,音频等)
Java使用JDBC向数据库存取二进制数据(如图片,视频,音频等)
389 0
Java使用JDBC向数据库存取二进制数据(如图片,视频,音频等)
|
Java Maven
Java 实现音频添加自定义时长静音(附代码) | Java工具类
Java 实现音频添加自定义时长静音(附代码) | Java工具类
Java 实现音频添加自定义时长静音(附代码) | Java工具类
|
编解码 Java Maven
Java 音频提升音量工具(附代码) | Java工具类
Java 音频提升音量工具(附代码) | Java工具类
Java 音频提升音量工具(附代码) | Java工具类
|
Java Maven 内存技术
java 视频提取音频 | Java工具类
java 视频提取音频 | Java工具类
java 视频提取音频 | Java工具类