`
oscar999
  • 浏览: 216467 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

java语音播放事例

阅读更多

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 编程事例 1200

    java 编程事例 1200java 编程事例 1200java 编程事例 1200java 编程事例 1200java 编程事例 1200java 编程事例 1200java 编程事例 1200java 编程事例 1200java 编程事例 1200java 编程事例 1200java 编程事例 1200

    java类的事例

    java类的描述和使用,讲述了一段java代码的类的构成。

    VB语音识别事例源码

    【VB语音识别事例源码】是一个针对初学者极具价值的资源,它展示了如何使用VB6.0(Visual Basic 6.0)编程环境实现基本的语音识别功能。VB6.0是微软开发的一种可视化编程工具,适用于创建Windows应用程序。在语音...

    java数据处理事例.rar

    本资源“java数据处理事例.rar”提供了一些实际的 Java 数据处理示例,帮助开发者深入理解如何在 Java 环境下进行数据操作。 在 Java 中,数据处理涉及多个库和框架,如集合框架、I/O 流、数据库操作以及近年来流行...

    java学习代码事例

    java学习代码事例,很适合初学者,要的来下载哦

    java Socket心跳事例

    在这个“java Socket心跳事例”中,我们将会深入探讨如何使用Java的Socket编程来实现心跳机制,这是一种确保连接可靠性和有效性的常见策略。 心跳机制的基本思想是,两个通信端点定期交换信息,以确认连接仍然有效...

    java多线程的应用事例

    Java多线程是Java编程中的重要概念,尤其在开发高效能和并发应用程序时不可或缺。本文将深入探讨Java多线程的应用实例,这对于初学者来说是一个很好的学习起点。 首先,我们来看"SimulateRailwayStation.java"这个...

    java 经典编程事例

    ### Java经典编程实例分析 #### 一、向`ArrayList<Integer>`集合中添加字符串并显示 本实例演示了如何使用Java反射API向一个限定类型的`ArrayList<Integer>`中添加一个字符串元素。通常情况下,直接向此类集合中...

    JAVA 正则表达式 事例

    JAVA正则表达式是编程语言Java中用于处理字符串的强大工具,尤其在文本处理、数据验证、格式化等方面具有不可替代的作用。正则表达式通过一系列的字符和特殊符号,能够精确地描述和匹配复杂的字符串模式,极大地提高...

    文本转语音事例程序

    4. **输出播放**:最后,通过系统的音频设备播放生成的语音。 为了使这个程序更加完善,开发者可能还考虑了错误处理、用户界面设计、多语言支持以及可能的自定义设置。例如,用户可能可以调整语速、音色,甚至选择...

    java ssh最小事例demo myeclipse项目

    这个"java ssh最小事例demo myeclipse项目"是一个基础教程,旨在帮助开发者快速理解如何在MyEclipse集成开发环境中搭建并运行SSH项目的流程。 1. **Spring框架**:Spring是Java领域的一个全功能的轻量级应用框架,...

    java springMVC demo 事例 注解模式 例子

    一个完整的小demo,是war包 解压后可以直接放进eclipse或者myeclipse就可以完美的运行,简单实用,包含增删改查的功能,出血注解模式的首选

    Java应用事例压缩包

    在“Java应用事例压缩包”中,我们发现了一系列与Java Web开发相关的视频教程,适合初学者学习。这些教程涵盖了从基础环境配置到具体应用实践的多个方面,旨在帮助新手快速掌握Java Web开发的核心技能。 首先,"JDK...

    spring4基于java注解事例

    首先,让我们关注"基于Java注解的事例"这一主题。在Spring 4中,我们不再需要XML配置文件来定义bean和它们的依赖关系。通过使用Java配置类和注解,我们可以更直观地理解代码结构,使得配置更加灵活且易于测试。例如...

    java jni 应用框架事例

    Java JNI(Java Native Interface)应用框架案例主要涉及的是在Java程序中调用本地(C或C++)编写的动态链接库(DLL)的技术。JNI是Java平台标准的一部分,它允许Java代码和其他语言写的代码进行交互。本案例中,我们将...

    Java网络蜘蛛事例程序

    是一个Java程序,很好的解释了网络蜘蛛

    java2 教程和事例

    Java2教程和事例是学习Java编程语言的重要资源,它涵盖了广泛的编程概念和技术,适合初学者和有一定经验的开发者。本教程旨在深入讲解Java2(也称为Java SE 2)的核心概念,通过实例来增强理解和实践能力。 1. **...

    JAVA实验举例和事例

    根据提供的文件信息,我们可以推断出这是一篇关于Java编程语言的文章,主要目的是通过具体的例子帮助初学者更好地理解和...以上就是关于“Java实验举例和事例”的详细介绍,希望能够帮助到正在学习Java编程的初学者们。

    java开发电信ISAG事例代码

    - **标题**: “java开发电信ISAG事例代码” - **描述**: 该示例代码主要展示了如何利用AXIS2生成客户端,并设置了SOAP头来实现特定功能。 - **标签**: ISAG事例代码 - **部分内容**: 提供了一段具体的Java代码片段,...

    java事例集合1

    【标题】"Java事例集合1"显然与Java编程语言相关,这可能是一个包含多个Java编程实例的资源包。在Java编程中,实例通常指的是具体的代码示例,用于展示某个概念或技术的运用。这个标题暗示我们可能会找到一系列用于...

Global site tag (gtag.js) - Google Analytics