付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
山东财经大学计算机科学与技术学院Java多
程序设计第六章
Java多技术2技术概述6.1
Java多6.2
文本处理6.3
图像处理6.4
动画制作6.5
音频流处理6.6
JMF框架6.5
音频流处理数字音频格式有很多种,其质量和采样频率和采样精度两个参数有关。
采样频率:每秒采样次数;
采样精度:每次采样所
的数据量。Java支持声音格式:
AU、AIFF、WAVE、MIDI、MP3Java语言提供了两大类处理音频数据流的API,一类是应用于标准计算机设备中的API,它们可以处理各种声音(0-20kHz),如Java
sound等;另一类是应用于
设备中,专门处理语音(20Hz-8kHz),如Java
ephony、Java
Speech等。6.5
音频流处理Java语言应用于标准计算机设备的处理音频的API主要封装在三类程序包中:
java.applet
(JDK)、.sun.j3d.audioengines
(Java
3D)、.sun.media.sound
(JMF)6.5
音频流处理简单的方法通过Applet类的AudioClip接口来装载声音。
void
play():开始
voidloop():
循环
void
stop():
停止声音片断声音片断声音片断
getAudioClip():获取声音片断66.5
音频流处理声音。举例:显示图像和import
java.awt.*;import
java.applet.*;import
javax.swing.*;public
class
AudioImageextends
JApplet{AudioClip
audio;Image
imgDisplay;public
void
init(){imgDisplay
=
getImage(getCodeBase(),"1.jpg");audio
=
getAudioClip(getCodeBase(),"sample.mid");}public
void
paint(Graphics
g){g.drawString("Applet中
声音和显示图像",
30,
30);audio.loop();g.drawImage(imgDisplay,30,
40,
this);}}76.5
音频流处理利用Auido
API(音频处理包)来处理声音片断,包为sun.audio。举例:使用Audio
API进行音频文件处理。import
sun.audio.*;import
java.io.*;import
java.awt.event.*;import
java.awt.*;import
javax.swing.*;publicclass
AudioApplicationDemo
extends
JFrameimplements
ActionListener{AudioStream
as;");");JButton
btnStart=new
JButton("开始JButtonbtnPause=new
JButton("暂停JButton
btnContinue=new
JButton("继续");6.5
音频流处理public
AudioApplicationDemo(){try{InputStreamin
=
new
FileInputStream("src/Guiex/hai.wav");as
=
new
AudioStream(in);}catch(Exception
e){e.printStackTrace();}btnStart.addActionListener(this);btnPause.addActionListener(this);btnContinue.addActionListener(this);this.setLayout(new
FlowLayout());this.add(btnStart);this.add(btnContinue);this.add(btnPause);this.pack();this.setVisible(true);
}6.5
音频流处理public
void
actionPerformed(ActionEvent
e){if(as==null){System.out.println("AudioStream
object
is
not
created!");return;
}Object
cmd
=
e.getSource();if(cmd
==
btnStart){AudioPlayer.player.start(as);}else
if(cmd
==
btnPause){AudioPlayer.player.stop(as);}else
if(cmd
==
btnContinue){AudioPlayer.player.start(as);}
}public
static
void
main(String[]
args)
{AudioApplicationDemo
fame
=
newAudioApplicationDemo();fame.addWindowListener(new
WindowAdapter(){public
void
windowClosing(WindowEvent
e){System.exit(0);}
});}
}6.5
音频流处理利用Java
框架(JMF)中的Sound
API来处理声音片断,主要包含在两个包中:
javax.sound
com.sun.media.sound6.6
JMF框架JMF(Java
media
framework)API是专门用于处理视、音频
的扩展应用开发包,集成了对视、音频的采集、编码、传输、等处理。
可以在Java
Applet和应用程序中各种文件,例如AU、AVI、MIDI、MPEG、QuickTime和WAV等文件。
可以
从互联网上的流。
可以利用麦克风和
机一类的设备截取音频和
,并保存成多
处理多文件。文件,转换文件格式。
向互联网上传音频和
在互联网上广播音频和数据流。数据。6.6
JMF框架数据源(DataSource)
数据源中包含了也可以是从互联网上数据流,可以是一个多
文件,的数据流。当创建了DataSource对象后,可以将它送入Player对象中。截取设备(Capture
Device)
截取设备指可以截取到音频或
数据的硬件,如麦克风、
机等。截取到的数据可以被送入Player对象中进行处理。6.6
JMF框架器(Player)器接口。Player对象将音频/
数据流作为输入,然后将数据流输出到音箱或屏幕上。有6种状态:
Unrealized:在这种状态下,Player对象已经被实例化,但是并不知道它需要
的多
的任何信息。
Realizing:当调用realize()方法时,Player对象的状态从Unrealized转变为Realizing。在这种状态下,Player对象正在确定它需要占用哪些资源。
Realized:在这种状态下Player对象已经确定了它需要哪些资源,并且也知道需要
的多
的类型。6.6
JMF框架器(Player)Prefetching:当调用prefectch()方法时,Player对象的状态从Realized变为Prefetching。在该状态下的Player对象正在为多做一些准备工作,其中包括加载多 数据,获得需要独占的资源等。这个过程被称预取(Prefetch)。Prefetched:当Player对象完成了预取操作后就到达了该状态。Started:当调用start()方法后,Player对象就进入了该状态并多
。MediaPlayer类(javax.media.bean.playerbean)继承了javax.media.Player接口;ControllerListener(javax.media)接口响应器状态的变化;器包括一个可视组件(Visual
Component)和控制面板组件(Control
Panel
Component)。6.6
JMF框架处理器(Processor)
处理器接口(javax.media.Processor),继承了Player接口。
Processor对象除了支持Player对象支持的所有功能,还可以控制对于输入的多
数据流进行何种处理以及通过数据源向其他的Player对象或Processor对象输出数据。
除了在 器的6种状态外,Processor
对象还包括两种新的状态,这两种状态是在Unrealized状态之后,但是在Realizing状态之前。Configuring:当调用configure()方法后,Processor对象进入该状态。在该状态下,Processor对象连接到数据源并获取输入数据的格式信息
Configured:当完成数据源连接,获得输入数据格式的信息后,Processor对象就处于Configured状态。6.6
JMF框架数据格式(Format)
Format对象(javax.media.Format)中保存了多
的格式信编码的相关信息,但是息。该对象中本身没有记录多它保存了编码的名称。管理器(Manager)
JMF提供4种管理器:
Manager:相当于两个类之间的接口。例如当你需要
一个DataSource对象,你可以通过使用Manager对象创建一个Player对象来它。
PackageManager:该管理器中保存了JMF类
信息。
CaptureDeviceManager:该管理器中保存了截取设备的
信息。
PlugInManager:该管理器中保存了JMF插件的
信息。6.6
JMF框架在JMF编程中,最常见的工作就是创建一个Player对象。通过创建MediaPlayer类的实例来创建;也可以通过Manager类的createPlayer方法创建Player对象。当获得了一个Player对象后,通过调用
ponent方法得到Player对象的视觉部件。然后将视觉部件加入到应用程序或Applet的界面上。Player对象还包含一个控制面板部件(体的ponent方法),在上面可以控制媒、停止和暂停等。186.6
JMF框架例:编写
器,实现如下目标:
主窗口包含一个“文件”菜单,文件菜单包含三个菜单项——“打开”:用来打开一次(默认),还是重复文件;“循环”:;“退出”:退出程序。
主窗口显示彩色背景的“欢迎”信息。器还包含一个视觉部件、一个控制面板部件。文件包含的各帧图像;控制面板文件的
、或进行其他控制视觉部件顺序允许用户暂停、开始操作。6.6
JMF框架import
javax.swing.*;importjava.awt.*;import
java.awt.event.*;importjavax.media.*;public
class
MediaPlayer
extends
JFrameimplementsActionListener,
ControllerListener,
ItemListener
{Player
player;Component
vc,cc;boolean =
true,
loop
=false;String
currentDirectory;J Bar
mb;MediaPlayer(String
title){super(title);addWindowListener(new
WindowAdapter(){public
voidwindowClosing(WindowEvent
e){dispose();
}public
void
windowClosed(Window
e){ if(player
!=
null)player.close();System.exit(0);
}
});JJm=
new
JItem
mi
=new
J("文件");Item("打开");mi.addActionListener(this);m.add(mi);m.addSeparator();Item("循环",false);JCheckBox Item
cbmi
=
new
JCheckBoxcbmi.addItemListener(this);m.add(cbmi);m.addSeparator();mi=new
J Item("退出");mi.addActionListener(this);m.add(mi);mb
=new
J
Bar();mb.add(m);setJ
Bar(mb);setSize(200,200);setVisible(true);
}21public
void
actionPerformed(ActionEvent
e){if(
mand().equals("退出")){dispose();return;}文件",FileDialog.LOAD);FileDialog
fd=new
FileDialog(this,"打开fd.setDirectory(currentDirectory);fd.setVisible(true);if(fd.getFile()==null)
return;currentDirectory
=
fd.getDirectory();if
(player
!=
null)player.close();try{player
=
Manager.createPlayer(newMediaLocator("file:"+fd.getDirectory()+fd.getFile()));}catch(java.io.IOException
e2){System.out.println(e2);
}catch(NoPlayerException
e2)
{System.out.println("不能找到数据");return;
}器");
return;
}if(player==null){
System.out.println("无法创建=
false;setTitle(fd.getFile());player.addControllerListener(this);player.prefetch();
}22public
void
controllerUpdate(ControllerEvent
e){if(e
instanceof
ControllerClosedEvent){ if(vc!=null)
{
remove(vc); vc
=
null;
}if(cc!=null)
{
remove(cc); cc
=
null;
}return;
}if(e
instanceof
EndOfMediaEvent)
{if(loop)
{player.setMediaTime(new
Time(0));player.start();
}return;
}pleteEvent)
{if(e
instanceofplayer.start();return;
}pleteEvent)
{ponent();if(e
instanceofvc
=
pif(vc
!=
null)
add(vc);cc
=
player.ponent();if(cc
!=
null)
add(cc,BorderLayout.SOUTH);pack();
}
}public
void
itemStateChanged(ItemEvent
e){ loop
=
!loop;
}public
void
paint(Graphics
g){
super.paint(g);if(
)
{int
w
=
getSize().width;int
h
=
getSize().height;g.setColor(Color.red);g.fillRect(0,mb.getHeight()*2,
w,
h-
mb.getHeight());Font
f=
new
Font("DialogInput",Font.BOLD,16);g.setFont(f);FontMetrics
fm
=
g.getFontMetrics();int
swidth=fm.stringWidth("***欢迎***");g.setColor(Color.black);g.drawString("***欢迎***",
(w-swidth)/2,
(h+getInsets().top)/2);
}
}public
void
update(Graphics
g)
{
paint(g);
}public
static
void
main(String[]
args)
{new
MediaPlayer("
器1.0");}}运行结果:本章小结的处理方法;本章内容
Java中对文本、图像、动画、声音等多
Java多
框架的基本概念。本章要求
掌握文本显示主要方法、图像处理主要方法、动画实现原理、声音处理主要方法;
掌握JMF中的基本概念。Java语言编程基础程序结构数据类型常量和变量数组流程控制类与对象类的重用接口和多态异常处理内容回顾输入输出和文件处理输入/输出流文件读写FileInputStream、FileOutputStreamFileReader、FileWriterBufferedInputStream、BufferedOutpu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年核技术利用辐射安全与防护综合提升试卷(达标题)附答案详解
- 2026年山西省长治市街道办人员招聘笔试模拟试题及答案解析
- 2026年吉林省松原市街道办人员招聘笔试模拟试题及答案解析
- 2025年柳州市柳南区街道办人员招聘笔试试题及答案解析
- 2026年唐山市路北区街道办人员招聘考试备考题库及答案解析
- 2025年郑州市二七区网格员招聘考试试题及答案解析
- 2026年内江市市中区街道办人员招聘笔试备考题库及答案解析
- 川中医专医古文教案:大医精诚-普同一等
- 2026年三明市三元区街道办人员招聘考试备考题库及答案解析
- 2026年温州市龙湾区网格员招聘考试参考试题及答案解析
- 土地转租协议书合同
- 土石方开挖专项施工方案
- 卫生系统招聘(护理学)考试题库
- 《结直肠癌教学》课件
- 燃气行业法律法规培训
- 公司金融知到智慧树章节测试课后答案2024年秋首都经济贸易大学
- 2025年中考地理专题复习-专题二 等高线地形图
- DB51-T 2868-2022 机关事务应急保障规范
- 新疆2022年中考数学试卷(含答案)
- 人教部编版小学语文说明文阅读专项练习(一)(含答案)
- 怎样才能做到有效巡视病房
评论
0/150
提交评论