application 中播放音乐的小问题---100分

mituzhishi 2004-11-17 10:14:55
import java.applet.*;
import java.io.*;
import java.net.*;

public class SimpleSoundApplication
{
public static void main(String args[])
{
File soundFile = new File("RING.WAV");

AudioClip theSound = null;
try
{
theSound = Applet.newAudioClip(soundFile.toURL());
}
catch(MalformedURLException e)
{
System.out.println(e);
}

// Play the audio clip...
theSound.play();
}
}

程序执行时,只听音响了一下(0.1秒不到,音乐没放完)程序就结束了。

"RING.WAV"是个很小的声音文件(10k)

换个大的声音文件就没问题了,

并且在applet中不管多小都没问题。

我的意思是说怎样在一个application中播放一个很小的.wav文件,

就像C++中的playsound()一样?
...全文
432 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaohao19853 2004-12-14
  • 打赏
  • 举报
回复
学习
lEFTmOON 2004-12-14
  • 打赏
  • 举报
回复
play()后要延时的
你可以看看我的程序:)
http://www.xhai.com/kyodai
loverisyour 2004-12-06
  • 打赏
  • 举报
回复
我也是
bluepingguo 2004-12-06
  • 打赏
  • 举报
回复
感兴趣,进来看看
GJA106 2004-12-06
  • 打赏
  • 举报
回复
用JMF不行吗?
drugon 2004-12-06
  • 打赏
  • 举报
回复
在Java中控制播放的进度,比较麻烦,不是很好处理。
songwei76 2004-12-06
  • 打赏
  • 举报
回复
关注
cumtyy2599hh 2004-11-18
  • 打赏
  • 举报
回复
对啊,你得使用它给你得那几个方法,用起来比较简单,我也在学习中,:)
classjava 2004-11-17
  • 打赏
  • 举报
回复
你可以用那个级别比较低的线程完成音频的创建工作,即使后台载入声音
SStallMan 2004-11-17
  • 打赏
  • 举报
回复
import java.applet.*;

AudioClip ac=getAudioClip (getCodeBase(), File);
// 创 建Audioclip 对 象 并 装 入.au 文 件
ac.play(); // 播 放 一 次
ac.stop(); // 停 止 播 放
ac.loop(); // 循 环 播 放

大 家 可 能 认 为 此 代 码 在Application 中 也 能 使 用, 但 不 幸 的 是 它 在 编 译 时 就 会 发 生 错 误。 因 为AudioClip 对 象(object) 和getAudioClip() 方 法(method) 都 是 属 于java.applet 包 的-- 它 在Application 中 无 法 调 用。



解 决 问 题 的 办 法 是 使 用 一 些Sun 在JDK 中 发 布 但 未 正 式 注 明(undocumented) 的 特 点。 用Winzip 或Zip 观 察 一 下class.zip 文 件 就 会 发 现 除 了java.applet 包 中 包 含 对 声 音 文 件 处 理 外, 在/sun/audio 目 录 下 的sun.audio 包 也 提 供 类 似 的 方 法。 下 面 是 实 现 代 码 和 注 释:

import sun.audio.*; // 引 入sun.audio 包
import java.io.*;

InputStream in = new FileInputStream (Filename);
// 打 开 一 个 声 音 文 件 流 作 为 输 入
AudioStream as = new AudioStream (in);
// 用 输 入 流 创 建 一 个AudioStream 对 象
AudioPlayer.player.start (as);
//“player” 是AudioPlayer 中 一 静 态 成 员 用 于 控 制 播 放
AudioPlayer.player.stop (as);

当 需 从 网 上 下 载 文 件 播 放 时, 用 以 下 代 码 打 开 音 乐 文 件 网 址:

AudioStream as = new AudioStream (url.openStream());

播 放 一 个 持 续 的 声 音 流 就 复 杂 一 些 了:

首 先 如 上 创 建 声 音 流;
AudioData data = as.getData ();
// 创 建AudioData 源
ContinuousAudioDataStream cas
= new ContinuousAudioDataStream (data);
AudioPlayer.player.play (cas); // 放 音
AudioPlayer.player.stop (cas); // 停 止

完 成 了 ! 因 为 以 上 程 序 使 用 了 未 公 开 的 特 性, 所 以 不 能 保 证 它 能 在 除 了 当 前 版 本 的Sun JDK 以 外 的 编 译 器 上 运 行。


62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧