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;
/**
* @author hjl
* @date 2008-8-1
* @function 简化实现音乐播放功能
* @version 1.0
*/
public class MusicPlay {
public static void main(String[] args) {
AudioInputStream m_audioInputStream = null;
SourceDataLine m_line = null;
AudioFormat audioFormat = null;
try {
File file = new File("D:\\music070924\\雨一直下.mp3");
m_audioInputStream = AudioSystem.getAudioInputStream(file);
audioFormat = m_audioInputStream.getFormat();
if (audioFormat.getEncoding() != AudioFormat.Encoding.PCM_SIGNED) {
AudioFormat newFormat = new AudioFormat(
AudioFormat.Encoding.PCM_SIGNED, audioFormat
.getSampleRate(), 16, audioFormat.getChannels(),
audioFormat.getChannels() * 2, audioFormat.getSampleRate(),
false);
System.out.println("Converting audio format to " + newFormat);
AudioInputStream newStream = AudioSystem.getAudioInputStream(
newFormat, m_audioInputStream);
audioFormat = newFormat;
m_audioInputStream = newStream;
}
DataLine.Info info = new DataLine.Info(SourceDataLine.class,audioFormat);
m_line = (SourceDataLine) AudioSystem.getLine(info);
m_line.open(audioFormat, m_line.getBufferSize());
m_line.start();
int bufferSize = (int) audioFormat.getSampleRate() * audioFormat.getFrameSize();
byte[] buffer = new byte[bufferSize];
int bytesRead = 0;
while (bytesRead >= 0) {
bytesRead = m_audioInputStream.read(buffer, 0, buffer.length);
if (bytesRead >= 0) {
m_line.write(buffer, 0, bytesRead);
}
}
m_line.drain();
m_line.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
异常:
javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input file
at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1170)
at com.simpledev.music.sample.MusicPlay.main(MusicPlay.java:27)
缺少jl1.0.jar,tritonus_share.jar,mp3spi1.9.4.jar,见lib.rar
分享到:
相关推荐
【Java网络音乐播放器客户端】是一个典型的毕业设计项目,它基于Java编程语言,旨在实现一个能够在线播放音乐的客户端应用程序。这个项目展示了开发者对Java基础知识的掌握,以及在网络通信、多媒体处理等方面的技能...
### Java编码规范精简版本知识点解析 #### 一、为何制定编码规范? 1. **维护成本**: 软件在其整个生命周期中,大约80%的成本都集中在维护阶段。因此,良好的编码规范能够显著降低这部分成本。 2. **人员变动**: ...
《阿里巴巴 Java 编码指南》是业界广泛采用的编码规范,旨在提高代码质量和开发效率,尤其对于使用 IntelliJ IDEA 的开发者来说,此指南的兼容性更新至 2023.3+ 版本,确保了最新的开发环境支持。这份指南在 2024 年...
它采用了Spring Boot框架,这是一个基于Spring框架的高度简化版,旨在简化初始设置和配置,使开发者能更快地专注于应用开发。 "SpringBoot"是Spring生态系统的组成部分,它内置了Tomcat服务器,自动配置了许多...
总结起来,创建“牛逼的视频播放器和好看的音乐播放器”涵盖了多媒体编码、Web服务器部署、前端框架应用、HTML5多媒体API、响应式设计、性能优化等多个IT领域的知识点。通过这些技术的综合运用,可以实现功能丰富、...
而JAVA版MPEG播放器是专为Java平台设计的软件,能够解析并播放MPEG格式的视频文件。 在Java中实现MPEG播放器涉及到许多关键知识点,包括但不限于以下几点: 1. **多媒体框架**:Java提供了Java Media Framework ...
Java编码规范是指导Java程序员编写代码的重要参考文档,旨在保证编码风格的一致性,提高代码的可读性和可维护性。本文档详细阐述了Java编码的相关规范和要求,并提供了一系列编码案例作为参考,它适用于华信邮电咨询...
在Android平台上开发音乐播放器,开发者常常会遇到各种挑战,如音频解码、音轨切换、音效控制等。这个压缩包"安卓音乐播放器相关-基于SDLFFmpeg的android播放器源码.zip"提供了一个基于SDL(Simple DirectMedia ...
《MeyboMail Web(Java)开源简化版详解》 MeyboMail Web(Java)开源简化版是一款基于Java技术构建的Web邮件系统,专为毕业设计和程序设计学习者提供了一个实践平台。该系统的核心目标是实现一个功能完善的邮件服务,...
《Java编码规范详解》 在Java编程领域,代码规范是一种重要的约定,它旨在提升团队协作效率,确保代码的可读性、可维护性和一致性。Java编码规范是开发人员遵循的一套指导原则,它涵盖了命名规则、注释标准、类与...
Java对音乐文件的处理在许多应用中都是必不可少的,例如...总的来说,这个Java音乐文件处理jar包为开发者提供了全面的MP3处理工具,简化了在Java环境中处理音频的复杂性,使得开发者可以专注于构建功能丰富的音乐应用。
"MeyboMail Web(Java)开源简化版.rar"是一个针对Java开发者的学习资源,它提供了一个基于Web的邮件服务实现,适合初学者和有一定经验的开发者探索Java Web开发和电子邮件处理技术。这个开源项目可能包含了服务器端...
Java开发编码规范是确保代码可读性、可维护性和团队协作效率的重要指导原则。这份规范由武汉捷讯技术有限公司制定,适用于使用Java语言开发的项目,旨在统一编码风格,提高代码质量。 规范的适用范围包括项目的编码...
以下是一个简化的 Java 播放器的构建过程: 1. **初始化 JMF**:在程序启动时,需要调用 `System.loadLibrary("jmfreg")` 来加载 JMF 注册库,确保系统可以识别 JMF 组件。 2. **创建 Player**:通过 `Manager....
Java编码规范是一套用于指导Java开发者编写清晰、可读、可维护代码的准则。这份规范详细规定了从文件命名、代码组织、缩进排版、注释格式、声明方式、语句结构、空白使用、命名规则、编程习惯到代码示例和日志规范等...
总的来说,这个简易版的Java编码规范提供了一个清晰的框架,帮助开发者遵循最佳实践,从而写出高质量、易于维护的代码。遵循这些规则,可以显著提升代码的可读性和团队合作效率,降低维护成本。
Java 注释编码的知识点涵盖了Java注解(Annotations)的基本概念、语法、使用场景以及与Java SE 8的变化。注解是Java SE 5引入的一个特性,用于为Java代码提供元数据。这些元数据可以被编译器读取,也可以用于运行时...
4. 编程语言与框架:音乐播放器的开发可能涉及多种编程语言,如C++、Java、Swift、Python或JavaScript。开发者可能选择使用桌面应用框架(如Qt、wxWidgets或Electron)来简化跨平台开发。对于移动平台,可能会使用...
本话题主要关注如何使用Java解析ASN.1编码格式的CDR(Call Detail Record)话单文件。 CDR是通信系统中记录通话、短信等通信活动详细信息的数据文件,包含诸如呼叫时间、时长、主叫号码、被叫号码、通话状态等多种...