java 播放声音问题

问题描述

我现在写个应用程序来播放声音文件 ,播放单个声音文件没有问题 ,但我连续播放多个声音文件 却有问题 ,我不想用 Thread.sleep(300) 这样实现文件与文件的间隔我将 多个文件的字节流合并成一个 在播放去只播放第一个文件 不知道哪里有问题 希望大家指导,帮助代码:public class Sound {private AudioStream as = null;private byte[] bs = null;public Sound() {}/** * 播放单个文件 */public synchronized void play(InputStream ins) {try {as = new AudioStream(ins);} catch (IOException e) {e.printStackTrace();}play(as);}/** * 播放 * * @param as */public synchronized void play(AudioStream as) {AudioPlayer.player.start(as);try {AudioPlayer.player.join(5000L);} catch (InterruptedException e) {e.printStackTrace();}AudioPlayer.player.stop(as);}/** * 播放单个文件 */public synchronized void play(InputStream[] ins) {as = getAllAudioStream(ins);play(as);}/** * 将多个流合并 * * @param ins * @return */private AudioStream getAllAudioStream(InputStream[] ins) {try {if (ins == null || ins.length == 0) {return null;}byte[] bytes = new byte[1024100];bs = new byte[0];for (int i = 0, count = ins.length; i < count; i++) {InputStream in = ins[i];int length = 0;length = in.read(bytes);byte[] tmp = new byte[bs.length + length];int j = 0;for (; j < bs.length; j++) {tmp[j] = bs[j];}for (int k = 0; k < length; k++) {tmp[j++] = bytes[k];}bs = new byte[tmp.length];for (int n = 0; n < tmp.length; n++) {bs[n] = tmp[n];}}as = new AudioStream(new ByteArrayInputStream(bs));} catch (IOException e) {e.printStackTrace();}return as;}}

解决方案

不建议合并流推荐楼主递归调用单个播放的方法

时间: 2024-11-03 21:54:49

java 播放声音问题的相关文章

java播放声音类和一个简单示例_java

播放声音的类 复制代码 代码如下: import java.io.File;import java.io.IOException; import javax.sound.sampled.AudioFormat;import javax.sound.sampled.AudioInputStream;import javax.sound.sampled.AudioSystem;import javax.sound.sampled.DataLine;import javax.sound.sampled

java代码-用Java做了一个记忆翻盘游戏,但是不知道怎么加进声音

问题描述 用Java做了一个记忆翻盘游戏,但是不知道怎么加进声音 10C 求大神帮忙,才学了两个月,用Java弄了一个记忆翻盘游戏,游戏界面已经可以呈现出来,但是不知道怎么加进声音,最好能提供一下代码,拜托拜托- 解决方案 import javax.sound.midi.*;try {Sequencer sequencer = MidiSystem.getSequencer();sequencer.open();Sequence sequence = MidiSystem.getSequence

使用Java Applet播放声音文件

使用Applet播放声音时需首先定义AudioClip对象,GetAudioClip方法能把声音赋予AudioClip对象,如果仅想把声音播放一遍,应调用AudioClip类的play方法,如果想循环把声音剪辑,应选用AudioClip类的loop方法. (1) 播放声音文件 图像格式各种各样,如BMP.GIF和JPEG等.声音文件也一样,WAV和AU是最常用的两种声音文件.目前Java仅支持AU文件,但Windows环境下常用的却是WAV文件,所以最好能有一个可把WAV文件转换为AU文件的工具

java编程播放声音只有画面没有声音,代码没有错误,怎么解决

问题描述 java编程播放声音只有画面没有声音,代码没有错误,怎么解决 package audio; import java.applet.*; import java.awt.*; import java.awt.event.*; import java.applet.AudioClip; public class sounda extends Applet implements ActionListener { /* */ Label lb; //标签,显示使用类方法的信息 AudioCli

Java声音技术简析

java 的魅力之一就是对多媒体的支持,Appley使得原来沉闷的网页变得丰富起来,在java.applet中提供了很多功能强大的方法对多媒体的支持.现在我们就java中的声音技术来分析其中的功能. 一 在Applet中播放声音 播放声音是java对多媒体的支持一个重要部分.现今流行的声音格式有wav,mid,au为扩展名的声音文件.而java现主要支持以au为名的声音.在Applet中专门提供了类AudioClip来对声音的支持. 由于Applet的多媒体功能书上都有很清晰的介绍也很简单.我们

实例-java中能不能添加声音

问题描述 java中能不能添加声音 各位,你好我想问一下java中能不能添加声音,我在网上看到能,但是我自己试过不行有谁可以给我一个实例啊?谢谢 解决方案 http://bbs.csdn.net/topics/340257858 解决方案二: java提供了对音频的支持的,可以在Applet中播放音频的.这里有个完整的实例参考:http://blog.csdn.net/sky_warmer/article/details/19324643 解决方案三: 在jdk7.0中的示例Applet中有播放

Java的网络功能与编程 一

编程|网络 Java的网络功能与编程徐迎晓(上海大学计算中心25#)                       摘  要:Java语言是Internet上最热门的编程语言,本文针对        Java的网络功能,对Java从网络上获取图象.声音.        HTML文档及文本文件等编程方法作了初步的介绍,同        时介绍了动态获取网络上资源的方法作了介绍.文中        提供了大量简明易懂的实例. 关键词:Java:Internet:网络     Java语言是Intern

Java游戏编程初步

编程 现在流行的游戏似乎都是用C或C++来开发的.在java平台上几乎没有很大型及可玩的流行游戏.由于java是个新生语言,他的许多特性还有待大家的发掘,但是我们不能否认Java在游戏编程方面的强大性.本文将带领大家一步一步学习编写Java游戏.最终打造属于自己的Java游戏. 在开始之前我们得确认你已经安装了Java JDK,并已经安装了浏览器软件如IE.本章是以Internet为开发对象,一步一步教大家认识Java的Thread.Applets-.以及游戏编程要注意的一些方方面面并在每一小部

J2ME学习(三)——如何播放声音

在J2ME中,处理声音需要使用到Mobile Media API(MMAPI),该包是MIDP1.0的可选包,在MIDP2.0中已经包含了这个包.所以如果你使用MIDP1.0的话,请确认你的运行环境是否支持. 一般手机支持的声音文件格式为wav.mid和mpg等.具体请查阅你的手机说明文档. 在声音处理中,有很多处理的方式,这里说一下最常用的情况,播放JAR文件中的wav文件. 播放声音文件的流程: 1. 按照一定的格式读取声音文件. 播放JAR文件中的声音文件一般是将声音文件处理成流的形式.示