File file = new File("srcamr");
byte[] bts = new byte[1024];
int length = 0;
try {
InputStream stream = new FileInputStream(file);
OutputStream os = new FileOutputStream(new File("destamr"));
while ((length = streamread(bts)) > 0) {
oswrite(bts, 0, length);
}
osflush();
osclose();
streamclose();
} catch (Exception e) {
eprintStackTrace();
}
Tomcat 是一个 Java Servlet 容器,通常用于部署和运行 Java Web 应用程序。如果您需要在 Tomcat 上处理音频文件,可以使用 Java 音频库和相关 API 来实现。
在 Java 中,处理音频文件可以使用 Java 音频库 (Java Sound API)。您可以使用 Java 音频库来读取和播放各种音频格式,包括 WAV 格式。以下是一个使用 Java 音频库读取 WAV 文件的示例代码:import javaxsoundsampledAudioInputStream;
import javaxsoundsampledAudioSystem;
import javaxsoundsampledClip;
import javaxsoundsampledDataLine;
import javaxsoundsampledLineUnavailableException;
import javaioFile;
import javaioIOException;
public class AudioPlayer {
public static void main(String[] args) {
try {
// 打开音频文件
AudioInputStream audioInputStream = AudioSystemgetAudioInputStream(new File("audiowav"));
DataLineInfo info = new DataLineInfo(Clipclass, audioInputStreamgetFormat());
Clip clip = (Clip) AudioSystemgetLine(info);
// 播放音频文件
clipopen(audioInputStream);
clipstart();
// 等待音频播放完成
while (!clipisRunning())
Threadsleep(10);
while (clipisRunning())
Threadsleep(10);
// 关闭音频文件
clipclose();
audioInputStreamclose();
} catch (LineUnavailableException e) {
eprintStackTrace();
} catch (IOException e) {
eprintStackTrace();
} catch (Exception e) {
eprintStackTrace();
}
}
}
这个示例代码将读取名为 "audiowav" 的 WAV 文件并将其播放。您可以根据自己的需要修改代码,例如将其嵌入到 Web 应用程序中以实现通过 Tomcat 来访问和播放音频文件。
声音可以创造意境 触发遐想 当与虚拟图像相结合时 更加可以让整个世界充满幻觉 声音是多媒体技术的基础 这就是Sun公司的JAVA媒体技术开发小组忙于准备Java Sound API并将其包含于下一版本的JAVA开发工具库中的原因 在JAVA 平台出现之前 JAVA语言只能处理电话音质的声音 以单声道 KHZ的采样频率存储为μ law AU文件 JAVA 平台增加了对AIFF WAV以及三种MIDI文件类型的支持 所支持的三种MIDI文件格式为MIDI文件类型 MIDI文件类型 以及RMF 应用程序接口API 版提供了一个易于使用的工具集 使程序员可以访问底层的合成与演奏引擎 从而扩展了JAVA声音的应用 其中两个重要的领域是创建数字化音频以及乐器指令数字化接口MIDI 由于提供了大量的底层支持功能 所以程序员能输入输出声音 控制MIDI设备 并能查询系统运作情况 声音文件类型简介主要的声音文件类型如下 AU (扩展名为AU或SND)适用于短的声音文件 为Solaris和下一代机器的通用文件格式 也是JAVA平台的标准的音频格式 AU类型文件使用的三种典型音频格式为: 位μ law类型(通常采样频率为 kHz) 位线性类型 以及 位线性类型 WAV (扩展名为WAV)由 Microsoft和 IBM共同开发 对WAV的支持已经被加进Windows 并且被延伸到Windows WAV文件能存储各种格式包括μ law a law和 PCM (线性)数据 他们几乎能被所有支持声音的Windows应用程序播放 AIFF (扩展名为AIF或IEF)音频互换文件格式是为Macintosh计算机和Silicon Graphics (SGI)计算机所共用的标准音频文件格式 AIFF和 AIFF C几乎是相同的 除了后者支持例如μ law和 IMA ADPCM类型的压缩 MIDI (扩展名为MID)乐器数字接口MIDI是为音乐制造业所认可的标准 主要用于控制诸如合成器和声卡之类的设备 MIDI文件不包含数字音频采样 而是包括一系列指令 这些指令控制把来自不同乐器上的音符序列合成乐曲 一些MIDI文件包含附加指令来为各种合成设置进行编程 大多数合成器支持MIDI标准 所以在一个合成器上制作的音乐能够在另一个上播放 有 MIDI接口的计算机能 *** 纵 MIDI数据以产生新音乐或音响效果 例如 一个完整的音乐作品可以通过一个软件驱动的命令转换成全新的形式 JAVA声音引擎支持两种MIDI文件类型 MIDI类型 文件 包含仅仅一个序列 所有相关的乐器部分被包含在同一个逻辑 磁道 上 MIDI类型 文件 包含多重的 磁道 使得不同的乐器被逻辑地分开 从而使对声音的 *** 作和重组更加容易 RMF (扩展名为RMF)混合音乐格式是由Beatnik设计出来的混合文件类型 通过交互式设定将MIDI和音频采样封装在一起 RMF好比是一个所有音乐相关文件的容器 RMF也包含对有关版权的详细文件说明的支持 RMF文件可以包含多个由不同艺术家创作的存储为MIDI类型或音频采样类型的作品 每个都关联着相关的版权信息 对声音引擎的选择 在 年 SUN的JAVA媒体开发组试图找到一种方法 以增强声音的处理能力并为将来提供一个坚实的平台 根据JAVA媒体开发组经理Michael Bundschuh所说 我们想要非常高质量的播放引擎以处理所有的从八位μ law级直到 CD质量声音的每一件 *** 作 我们希望轻松跨越所有平台 诸如Solaris平台 Windows Mac以及其他 我们也想要高度发展了的能够跨越不同平台的MIDI能力 为上述目的 合理的选择是Beatnik的音频引擎(从前是Headspace ) SUN取得了Beatnik的音频引擎使用许可 把它当作JAVA声音应用程序接口API的基础 Thomas Dolby Robertson Beatnik简介在 年代初之前 Thomas Dolby Robertson的职业完全在音乐方面 他 推出的 她用科学照亮了我 是一部早期的MTV巨作 整个 年代 他都在不断地作曲和录音 使用一种非结构化音乐制作软件 但是在 通过一次为Guggenheim博物馆演示虚拟现实的合作 他开始思考能否做一些提高音乐制作能力的工作 我当时正伏在 C程序员的肩上 并且我突然认识到为做记录做了大量的工作 可是没有为演奏时的交互做任何事情 有了这样的想法 Robertson在 年建立了Headspace 雇用月光作曲组来帮助实现他的观点 Headspace于 年成为公司 现在被称为Beatnik JAVA声音音频引擎JAVA声音引擎为多媒体创建 同时考虑了游戏设计和发布WEB内容 用标准的 MIDI文件 RMF文件 并且/或来自任何源的采样 该引擎将播放音乐或制造音响效果 同时尽可能少用CPU 它提供完全的播放控制 具有混合音响的能力并可实时地回应用户的输入 JAVA声音引擎是软件 MIDI合成器 采样播放设备 以及 位立体混声器 它支持混合直到 位的立体MIDI声音和音频采样 它直接支持MIDI类型 和类型 文件以及从 位设备到 位乐器的波表合成 该引擎支持所有通用的 MIDI控制器并且包含象回声处理 LFO (控制过滤器或立体声设备)之类的特性 以及ADSR信封 (播放时整形采样) 即使用上所有的功能 JAVA声音引擎在一个 Mhz的奔腾计算机上也占用不超过 %的CPU时间 它还能通过有选择地禁用不需要的特性 使其变得更加高效一些 另外 它发布了存储在压缩的RMF音乐文件中的丰富的内容 Thomas Dolby Robertson的 她用科学照亮了我 一首 分 秒的歌曲 如存储为CD音质的文件足足占用 M字节空间 如果以RMF格式存储只需大约 KB 是 : 的减少 同时丝毫不减音质 为更多有关Beatnik的信息 请看Beatnik的WEB站点 JAVA平台声音的简要历史 在JDK x及JDK x下 AudioClip接口提供下列机能 l AudioClip接口播放循环停止恢复和播放声音最简单的方法是通过Applet类的play()方法 调用play()方法有如下二种方式: play() 带有一个参数 一个 URL对象 装载并演奏储存在 URL处的声音片断 play() 带有二个参数 基本 URL和文件夹路径名 装载并演奏声音文件 第一参数经常是对getCodeBase()或 getDocumentBase()的调用 下列代码片断举例说明了直接播放 hello au的方法 AU文件与小应用程序位于相同文件夹或目录 play(getCodeBase() hello au );play()一旦被调用立刻开始恢复和播放声音 如果声音文件不能被查找 将不会有出错信息 仅仅是沉默 启动和停止声音文件 或循环播放 你必须用 applet的 getAudioClip方法把它装载进入 AudioClip对象 类似上面play()方法的参数 getAudioClip方法要用一个或两个参数 当作播放的指示 第一个或唯一的一个参数是 URL参数 用来指示声音文件的位置 第二参数是文件夹路径指针 下列代码行举例说明加载声音文件进入剪贴对象: AudioClip co = getAudioClip(getCodeBase() horns wav );getAudioClip()方法仅仅能被applet内调用 随着JAVA 的引入 应用程序也能用Applet类的newAudioClip方法装入声音文件 前一例子可以改写如下以用于Java应用程序:AudioClip co = newAudioClip( horns wav );在你已创建 AudioClip对象之后 你能用该对象调用play() loop()以及stop()方法 如果 getAudioClip或 newAudioClip方法不能找到指定的声音文件 AudioClip对象的值将是空的 试着播放空对象会导致出错 所以标准的过程首先是对该条件进行检测 接下来是一个完整的程序设计示例 该程序将产生一个applet 当鼠标在该小应用程序applet范围内按下时会播放 flute+hrn+mrmba au音乐样本 此AU示例文件与applet在相同目录或文件夹下的 import java applet ;import java awt event ;public class PlayAudio extends Appletimplements MouseListener {AudioClip audio;public void init() {audio = getAudioClip(getDocumentBase() flute+hrn+mrmba au );addMouseListener(this);}public void mousePressed(MouseEvent evt) {if (audio != null) audio play();}public void mouseEntered (MouseEvent me) {}public void mouseExited (MouseEvent me) {}public void mouseClicked (MouseEvent me) {}public void mouseReleased(MouseEvent me) {}}注意 在许多JAVA 技术书籍中 mouseDown()方法确实是JAVA 事件模型的一部分 使用该方法会有一定的危险 因为该方法在将来可能不会被支持 在JAVA 平台下将MouseListener与mousePressed结合使用是优先的选择 API 质的飞跃注意 下列备注是以JAVA API的早期版本 为基础的 虽然目前这里讨论的大多数对象和概念与过去保持一致 但由于该API版本已经终止 出现某些改变的可能是存在的 JAVA声音 API为JAVA平台定义了一整套的基本的底层音频处理功能 它提供如下接口为:音频捕获和播放 IDI合成及序列化 这两个主要的功能模块在各自的程序包中提供 dia sound sampled 该程序包明确地说明了捕获 混合以及回播数字采样音频的界面 dia sound MIDI 该程序包提供MIDI合成 序列化以 lishixinzhi/Article/program/Java/Javascript/201311/25377
以上就是关于java音频文件的读写全部的内容,包括:java音频文件的读写、tomcat反复wav文件、JAVA声音技术等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)