AudioSystem类充当取样音频系统资源的入口点。此类允许查询和安装在系统上的
混频器。AudioSystem包括许多在不同格式间转换音频数据的方法,以及在音频文
件和流文件之间进行转换的方法。它还提供不用显式处理混频器即可直接从
AudioSystem获得Line的方法
AudioFormat 是在声音流中指定特定数据安排的类。通过检查以音频格式存储的信息,可以发现在二进制声音数据中解释位的方式。
Line.Info类
Line.Info对象包含关于行的信息。只有Line.Info本身提供的信息是该行的Java类。Line.Info子类添加该行的其他种类的信息。这些附加信息取决于通过Line.Info子类所描述的行种类实现的Line子接口。
DataLine.Info类
除了继承自超类Line.Info的类信息以外,DataLine.Info还提供特定于数据行的其他信息。这些信息包括:受数据行支持的音频格式 其内部缓冲区的最大和最小
接口SourceDataLine
源数据行是可以写入数据的数据行。它充当其混频器的源。应用程序将音频字节写入源数据行,这样可处理字节缓冲并将它们传给混频器。混频器可以将这些样本与取自其他源的样本混合起来,然后将该混合物传递到输出端口之类的目标(它可表示声卡上的音频输出设备)
程序事例:
import java.io.File;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.SourceDataLine;
public class Playtest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
AudioInputStream ais = AudioSystem.getAudioInputStream(new File(
"c:\\abc.wav"));// 获得音频输入流
AudioFormat baseFormat = ais.getFormat();// 指定声音流中特定数据安排
System.out.println("baseFormat="+baseFormat);
DataLine.Info info = new DataLine.Info(SourceDataLine.class,
baseFormat);
System.out.println("info="+info);
SourceDataLine line = (SourceDataLine) AudioSystem.getLine(info);
// 从混频器获得源数据行
System.out.println("line="+line);
line.open(baseFormat);// 打开具有指定格式的行,这样可使行获得所有所需的系统资源并变得可操作。
line.start();// 允许数据行执行数据 I/O
int BUFFER_SIZE = 4000 * 4;
int intBytes = 0;
byte[] audioData = new byte[BUFFER_SIZE];
while (intBytes != -1) {
intBytes = ais.read(audioData, 0, BUFFER_SIZE);// 从音频流读取指定的最大数量的数据字节,并将其放入给定的字节数组中。
if (intBytes >= 0) {
int outBytes = line.write(audioData, 0, intBytes);// 通过此源数据行将音频数据写入混频器。
}
}
} catch (Exception e) {
}
}
}
分享到:
相关推荐
java 编程事例 1200java 编程事例 1200java 编程事例 1200java 编程事例 1200java 编程事例 1200java 编程事例 1200java 编程事例 1200java 编程事例 1200java 编程事例 1200java 编程事例 1200java 编程事例 1200
java类的描述和使用,讲述了一段java代码的类的构成。
【VB语音识别事例源码】是一个针对初学者极具价值的资源,它展示了如何使用VB6.0(Visual Basic 6.0)编程环境实现基本的语音识别功能。VB6.0是微软开发的一种可视化编程工具,适用于创建Windows应用程序。在语音...
本资源“java数据处理事例.rar”提供了一些实际的 Java 数据处理示例,帮助开发者深入理解如何在 Java 环境下进行数据操作。 在 Java 中,数据处理涉及多个库和框架,如集合框架、I/O 流、数据库操作以及近年来流行...
java学习代码事例,很适合初学者,要的来下载哦
在这个“java Socket心跳事例”中,我们将会深入探讨如何使用Java的Socket编程来实现心跳机制,这是一种确保连接可靠性和有效性的常见策略。 心跳机制的基本思想是,两个通信端点定期交换信息,以确认连接仍然有效...
Java多线程是Java编程中的重要概念,尤其在开发高效能和并发应用程序时不可或缺。本文将深入探讨Java多线程的应用实例,这对于初学者来说是一个很好的学习起点。 首先,我们来看"SimulateRailwayStation.java"这个...
### Java经典编程实例分析 #### 一、向`ArrayList<Integer>`集合中添加字符串并显示 本实例演示了如何使用Java反射API向一个限定类型的`ArrayList<Integer>`中添加一个字符串元素。通常情况下,直接向此类集合中...
JAVA正则表达式是编程语言Java中用于处理字符串的强大工具,尤其在文本处理、数据验证、格式化等方面具有不可替代的作用。正则表达式通过一系列的字符和特殊符号,能够精确地描述和匹配复杂的字符串模式,极大地提高...
4. **输出播放**:最后,通过系统的音频设备播放生成的语音。 为了使这个程序更加完善,开发者可能还考虑了错误处理、用户界面设计、多语言支持以及可能的自定义设置。例如,用户可能可以调整语速、音色,甚至选择...
这个"java ssh最小事例demo myeclipse项目"是一个基础教程,旨在帮助开发者快速理解如何在MyEclipse集成开发环境中搭建并运行SSH项目的流程。 1. **Spring框架**:Spring是Java领域的一个全功能的轻量级应用框架,...
一个完整的小demo,是war包 解压后可以直接放进eclipse或者myeclipse就可以完美的运行,简单实用,包含增删改查的功能,出血注解模式的首选
在“Java应用事例压缩包”中,我们发现了一系列与Java Web开发相关的视频教程,适合初学者学习。这些教程涵盖了从基础环境配置到具体应用实践的多个方面,旨在帮助新手快速掌握Java Web开发的核心技能。 首先,"JDK...
首先,让我们关注"基于Java注解的事例"这一主题。在Spring 4中,我们不再需要XML配置文件来定义bean和它们的依赖关系。通过使用Java配置类和注解,我们可以更直观地理解代码结构,使得配置更加灵活且易于测试。例如...
Java JNI(Java Native Interface)应用框架案例主要涉及的是在Java程序中调用本地(C或C++)编写的动态链接库(DLL)的技术。JNI是Java平台标准的一部分,它允许Java代码和其他语言写的代码进行交互。本案例中,我们将...
是一个Java程序,很好的解释了网络蜘蛛
Java2教程和事例是学习Java编程语言的重要资源,它涵盖了广泛的编程概念和技术,适合初学者和有一定经验的开发者。本教程旨在深入讲解Java2(也称为Java SE 2)的核心概念,通过实例来增强理解和实践能力。 1. **...
根据提供的文件信息,我们可以推断出这是一篇关于Java编程语言的文章,主要目的是通过具体的例子帮助初学者更好地理解和...以上就是关于“Java实验举例和事例”的详细介绍,希望能够帮助到正在学习Java编程的初学者们。
- **标题**: “java开发电信ISAG事例代码” - **描述**: 该示例代码主要展示了如何利用AXIS2生成客户端,并设置了SOAP头来实现特定功能。 - **标签**: ISAG事例代码 - **部分内容**: 提供了一段具体的Java代码片段,...
【标题】"Java事例集合1"显然与Java编程语言相关,这可能是一个包含多个Java编程实例的资源包。在Java编程中,实例通常指的是具体的代码示例,用于展示某个概念或技术的运用。这个标题暗示我们可能会找到一系列用于...