Time我知道javaxswingTimer有类似的功能,希望对你有用:
public Timer(int delay,
ActionListener listener)创建一个每 delay 毫秒将通知其侦听器的 Timer。如果 delay 小于或等于零,则该计时器将在一启动就开始工作。如果 listener 不为 null,则它会在计时器上注册为 *** 作侦听器。
Timer myTimer = Timer(delay,this);
myTimerStart()开始计时。
另外javautil下面有Timer,可以创建守护线程的计时器:
1。public Timer(String name)创建一个新计时器,其相关的线程具有指定的名称。相关的线程不 作为守护程序运行。
2。public Timer(String name,
boolean isDaemon)创建一个新计时器,其相关的线程具有指定的名称,并且可以指定作为守护程序运行。
3。public Timer(boolean isDaemon)创建一个新计时器,可以指定其相关的线程作为守护程序运行。如果计时器将用于安排重复的“维护活动”,则调用守护线程,在应用程序运行期间必须调用守护线程,但是该 *** 作不应延长程序的生命周期。
AudioCLip主要的方法有:play()播放依次声音;loop()循环播放音乐;stop()停止播放。做法一:InputStreamis=null;AudioStreamas=null;is=getClass()getResourceAsStream("awav");try{as=newAudioStream(is);}catch(IOExceptione){}AudioPlayerplayerstart(as);此方法将音乐文件放入流中在播放,仅限于JavaApplication,容易报错,空指针异常,或者是流异常,不推荐。做法二:Stringmusic="awav";AudioClipclip=AppletnewAudioClip(getClass()getResource(music));次方法在Applet中运行没有问题,但是Application中getclass()会返回空指针,导致失败。推荐做法:privateURLurl;privateAudioClipac;Filef1=newFile("C:/3wav");try{url=f1toURL();}catch(MalformedURLExceptione){//TODOAuto-generatedcatchblockeprintStackTrace();}ac=AppletnewAudioClip(cb1);acplay();
import javaio;
import javaxsoundsampled;
import javanet;
/
Title: VoiceChat
Description: 输出音频(放音程序)
Copyright: Copyright (c) 2001
Company:
@author 网络
@version 10
/
class Playback implements Runnable {
final int bufSize = 16384;
SourceDataLine line;
Thread thread;
Socket s;
Playback(Socket s){//构造器 取得socket以获得网络输入流
thiss=s;
}
public void start() {
thread = new Thread(this);
threadsetName("Playback");
threadstart();
}
public void stop() {
thread = null;
}
public void run() {
AudioFormat format =new AudioFormat(8000,16,2,true,true);//AudioFormat(float sampleRate, int sampleSizeInBits, int channels, boolean signed, boolean bigEndian)
BufferedInputStream playbackInputStream;
try {
playbackInputStream=new BufferedInputStream(new AudioInputStream(sgetInputStream(),format,2147483647));//封装成音频输出流,如果网络流是经过压缩的需在此加套解压流
}
catch (IOException ex) {
return;
}
DataLineInfo info = new DataLineInfo(SourceDataLineclass,format);
try {
line = (SourceDataLine) AudioSystemgetLine(info);
lineopen(format, bufSize);
} catch (LineUnavailableException ex) {
return;
}
byte[] data = new byte[1024];//此处数组的大小跟实时性关系不大,可根据情况进行调整
int numBytesRead = 0;
linestart();
while (thread != null) {
try{
numBytesRead = playbackInputStreamread(data);
linewrite(data, 0,numBytesRead);
} catch (IOException e) {
break;
}
}
if (thread != null) {
linedrain();
}
linestop();
lineclose();
line = null;
}
}
import javaio;
import javaxsoundsampled;
import javanet;
/
Title: VoiceChat
Description: 音频捕捉(录音程序)
Copyright: Copyright (c) 2001
Company:
@author 网络
@version 10
/
class Capture implements Runnable {
TargetDataLine line;
Thread thread;
Socket s;
BufferedOutputStream captrueOutputStream;
Capture(Socket s){//构造器 取得socket以获得网络输出流
thiss=s;
}
public void start() {
thread = new Thread(this);
threadsetName("Capture");
threadstart();
}
public void stop() {
thread = null;
}
public void run() {
try {
captrueOutputStream=new BufferedOutputStream(sgetOutputStream());//建立输出流 此处可以加套压缩流用来压缩数据
}
catch (IOException ex) {
return;
}
AudioFormat format =new AudioFormat(8000,16,2,true,true);//AudioFormat(float sampleRate, int sampleSizeInBits, int channels, boolean signed, boolean bigEndian)
DataLineInfo info = new DataLineInfo(TargetDataLineclass,format);
try {
line = (TargetDataLine) AudioSystemgetLine(info);
lineopen(format, linegetBufferSize());
} catch (Exception ex) {
return;
}
byte[] data = new byte[1024];//此处的1024可以情况进行调整,应跟下面的1024应保持一致
int numBytesRead=0;
linestart();
while (thread != null) {
numBytesRead = lineread(data, 0,1024);//取数据(1024)的大小直接关系到传输的速度,一般越小越快,
try {
captrueOutputStreamwrite(data, 0, numBytesRead);//写入网络流
}
catch (Exception ex) {
break;
}
}
linestop();
lineclose();
line = null;
try {
captrueOutputStreamflush();
captrueOutputStreamclose();
} catch (IOException ex) {
exprintStackTrace();
}
}
}
声音可以创造意境 触发遐想 当与虚拟图像相结合时 更加可以让整个世界充满幻觉 声音是多媒体技术的基础 这就是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编程问题,手动设置音频文件播放时间、java js前端请求后台去获得音频流,然后播放音乐,音乐可以控制进度,显示总时长、用JAVA怎样捕获音频输出数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)