用Java实现音频播放

tuwei23

tuwei23

2016-02-19 19:13

今天图老师小编要向大家分享个用Java实现音频播放教程,过程简单易学,相信聪明的你一定能轻松get!

  桌面PC的性能日益提高,Java虚拟机的优化技术也不断获得突破,这一切使得用Java处理实时信号成为可能。本文将通过设计和构造一个支持实时mp3、WAV和Ogg音频格式解码/回放的Java音乐播放器,阐述用JavaSound API编写音频处理程序的思路和一般过程。

   !-- frame contents --!-- /frame contents --   JavaSound是一个小巧的低层API,支持数字音频和MIDI数据的记录/回放。在JDK 1.3.0之前,JavaSound是一个标准的Java扩展API,但从Java 2的1.3.0版开始,JavaSound就被包含到JDK之中。由于Java有着跨平台(操作系统、硬件平台)的特点,基于JavaSound的音频处理程序(包括本文的程序)能够在任何实现了Java 1.3+的系统上运行,无需加装任何支持软件。

  

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  一、JavaSound的体系结构

  当前JDK的JavaSound API随同Java媒体框架(JMF,Java Media Framework)一起发布,主页在java.sun.com/prodUCts/java-media/jmf/,适合JDK 1.1以及更高的版本。除了JDK实现的JavaSound API之外,还有一个源代码开放的JavaSound实现是Tritonus,主页在http://www.tritonus.org/。

  图一描述了JavaSound API的体系结构,虚线表示Sun的JavaSound标准定义的API调用。上面一根虚线表示我们编写音频处理程序要调用的API,JavaSound API包含在javax.sound.sampled和javax.sound.midi包中。两根虚线之间的部分就是JavaSound API的具体实现。

   
  图一:JavaSound体系结构

  就象上面一根虚线表示的API具有统一标准一样,在所有的JavaSound实现中,图一下面一根虚线表示的SPI(服务提供者接口, Service Provider Interface)也是统一的。SPI的作用是以插件(Plug-In)的形式提供自定义的扩展模块,我们只要提供与SPI兼容的插件扩展模块,就可以在不改变API的情况下扩展音频处理程序的能力。SPI包含在java.sound.sampled.spi和javax.sound.midi.spi包中。

  例如,假设有一个只能播放WAV文件的程序,我们只要增加一个支持MP3文件解码的插件模块,就可以在不改动播放程序的任何一行代码的前提下,为这个播放程序添加播放MP3的能力。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)二、JavaSound混频原理

  

  图二阐述了JavaSound的混频器原理。在处理输入音频的应用中,对于来自各种音频输入端口的信号,例如麦克风、CD播放器、磁带播放器,等等,我们可以在它们到达TargetDataLine之前,利用混频器控制输入混频,最后在程序中通过TargetDataLine获得数字化的音频输入流。

  
  图二:JavaSound混频器

  

  类似地,在处理输出音频的应用中,混频器用来对一系列来自SourceDataLine的数据进行混频处理,经处理后的信号可输出到各种输出端口,例如扬声器、耳机等。SourceDataLine是一个可写入音频信号数字流的设备,例如,我们可以从一个WAV文件读取内容写入到SourceDataLine,然后再通过扬声器输出。

  输入到混频器的信号可以

展开更多 50%)
分享

猜你喜欢

用Java实现音频播放

编程语言 网络编程
用Java实现音频播放

用java实现RSA算法

编程语言 网络编程
用java实现RSA算法

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

用Delphi轻松实现背景播放

Delphi
用Delphi轻松实现背景播放

用Java实现回调例程

编程语言 网络编程
用Java实现回调例程

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

用java实现冒泡排序算法

编程语言 网络编程
用java实现冒泡排序算法

用Java Servlet实现文件上载

编程语言 网络编程
用Java Servlet实现文件上载

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

如何修复Win7缩略图显示错乱

如何修复Win7缩略图显示错乱

C++ Builder 初学问与答(五)

C++ Builder 初学问与答(五)
下拉加载更多内容 ↓