- 7
- 0
- 约 10页
- 2017-08-19 发布于重庆
- 举报
用Java实现音频播放
用Java实现音频播放
一、JavaSound的体系结构 二、JavaSound混频原理 三、音频数据与存储格式 四、设计音乐播放器 五、播放音乐 六、支持更多的音频格式 ━━━━━━━━━━━━━ 桌面PC的性能日益提高,Java虚拟机的优化技术也不断获得突破,这一切使得用Java处理实时信号成为可能。本文将通过设计和构造一个支持实时 MP3、WAV和Ogg音频格式解码/回放的Java音乐播放器,阐述用JavaSound API编写音频处理程序的思路和一般过程。 JavaSound是一个小巧的低层API,支持数字音频和MIDI数据的记录/回放。在JDK 1.3.0之前,JavaSound是一个标准的Java扩展API,但从Java 2的1.3.0版开始,JavaSound就被包含到JDK之中。由于Java有着跨平台(操作系统、硬件平台)的特点,基于JavaSound的音频处 理程序(包括本文的程序)能够在任何实现了Java 1.3+的系统上运行,无需加装任何支持软件。 一、JavaSound的体系结构 当前JDK的JavaSound API随同Java媒体框架(JMF,Java Media Framework)一起发布,主页在/products/java-media/jmf/,适合JDK 1.1以及更高的版本。除了JDK实现的JavaSound API之外,还有一个源代码开放的JavaSound实现是Tritonus,主页在/。 图一描述了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的能力。 二、JavaSound混频原理 图二阐述了JavaSound的混频器原理。在处理输入音频的应用中,对于来自各种音频输入端口的信号,例如麦克风、CD播放器、磁带播放器,等等,我 们可以在它们到达TargetDataLine之前,利用混频器控制输入混频,最后在程序中通过TargetDataLine获得数字化的音频输入流。 图二:JavaSound混频器 类似地,在处理输出音频的应用中,混频器用来对一系列来自SourceDataLine的数据进行混频处理,经处理后的信号可输出到各种输出端口,例如 扬声器、耳机等。SourceDataLine是一个可写入音频信号数字流的设备,例如,我们可以从一个WAV文件读取内容写入到 SourceDataLine,然后再通过扬声器输出。 输入到混频器的信号可以来源于剪辑。剪辑(Clip)是一个包含一段完整音频数据流的设备,或者说,剪辑就是一个缓冲在内存中的完整音频数据流。在一些要求反复播放音乐片段的场合,例如游戏的背景音乐,剪辑是很有用的。 图三描述了JavaSound API中一些常用的类、接口及其关系,所有图三显示的类、接口都通过Line这个基本接口统一起来。Line接口用来关闭/打开设备、注册事件监听器,以 及提供一些用来调整声音效果的对象,例如调整音量大小的对象。AudioSystem在JavaSound体系中起着一个工厂(Factory)类的作 用,提供了一系列的静态方法,我们通过这些静态方法来获取JavaSound系统默认配置的资源(所谓静态方法,就是可以在不创建AudioSystem 实例的情况下直接调用的方法)。 图三:常用的JavaSound类 顺便说明一下,在当前(JDK 1.4)实现的JavaSound的默认配置中,输入声音来自本地声卡的麦克风,输出声音到本地声卡的扬声
您可能关注的文档
- 水泥磨辊压机的操作.docx
- 水文翻译(卫星降水产品在中流域的水文评价).doc
- 永宏PLC学习是注意的几点.doc
- 水泥立磨技术参数表.doc
- 永磁同步电机滑模变结构矢量控制.doc
- 水下光学探测发展综述.doc
- 汇编上机过程及DEBUG调试.doc
- 江苏省普通高中学业水平测试单元卷 五.doc
- 汤森路透调研.docx
- 污水处理中离心分离及过滤处理.doc
- 山西天一大联考2025-2026学年高二上学期期末学情监测语文试题(试卷+解析).docx
- 山西忻州部分学校2025-2026学年高一上学期2月质量检测数学试题(人教B版)(试卷+解析).docx
- 山西运城市2025-2026学年高二第一学期期末调研测试数学试题(试卷+解析).docx
- 陕西省榆林市榆阳区2025-2026学年八年级上学期期末地理试题(试卷+解析).docx
- 陕西西安市碑林区2025-2026学年度第一学期期末八年级生物试题(试卷+解析).docx
- 四川省广元市苍溪县2025-2026年八年级上学期期末道德与法治试题(试卷+解析).docx
- 江苏泰州市姜堰区2025-2026学年七年级上学期1月期末数学试题(试卷+解析).docx
- 江苏省扬州市邗江区2025-2026学年九年级上学期期末考试化学试题(试卷+解析).docx
- 江西上饶市铅山县2025-2026学年第一学期期末考试八年级数学试题(试卷+解析).docx
- 江苏扬州市高邮市2025-2026学年度第一学期期末学业质量监测试题九年级英语(试卷+解析).docx
最近下载
- 2026年深圳中考历史易混考点辨析试卷(附答案可下载) (1).docx VIP
- 锡安长老纪要1-24本.pdf VIP
- 2026届高考语文一轮复习:120个文言实词天天练(教师版) .docx
- 2026届高考语文二轮专题复习:整本书阅读:《论语》++课件.pdf VIP
- 外研版中考英语话题复习 居住环境.docx VIP
- 外研版中考英语话题复习:Protecting+the+earth.docx VIP
- 2026年安徽省亳州市辅警人员招聘考试试卷带答案.docx VIP
- 2025年中考生物考纲.docx VIP
- 主播话术 直播间话术技巧训练.pdf VIP
- 外研版中考英语一轮复习 话题7+Hygiene+and+Health+&+Food+and+Drink+&+Safety+and+First+Aid+导学案和作业.docx VIP
原创力文档

文档评论(0)