📄 java语音播放事例 - oscar999的专栏 - csdnblog.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0061)http://blog.csdn.net/oscar999/archive/2006/12/05/1430953.aspx -->
<HTML xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>java语音播放事例 - oscar999的专栏 - CSDNBlog</TITLE>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
<META content=oscar999,混频器,audiosystem,baseformat, name=keywords>
<META content=java语音播放事例 name=description>
<SCRIPT src="java语音播放事例 - oscar999的专栏 - CSDNBlog.files/tabber.js"
type=text/javascript></SCRIPT>
<SCRIPT src="java语音播放事例 - oscar999的专栏 - CSDNBlog.files/feedBackToolTips.js"
type=text/javascript></SCRIPT>
<SCRIPT language=javascript
src="java语音播放事例 - oscar999的专栏 - CSDNBlog.files/JSUtils.js"
type=text/javascript></SCRIPT>
<LINK media=screen href="java语音播放事例 - oscar999的专栏 - CSDNBlog.files/tabber.css"
type=text/css rel=stylesheet><LINK
href="http://profile.csdn.net/oscar999/picture/1.ico" rel="Shortcut Icon"><LINK
media=all href="java语音播放事例 - oscar999的专栏 - CSDNBlog.files/style.css"
type=text/css rel=stylesheet><LINK media=print
href="java语音播放事例 - oscar999的专栏 - CSDNBlog.files/print.htm" type=text/css
rel=stylesheet><LINK title=RSS href="http://blog.csdn.net/oscar999/rss.aspx"
type=application/rss+xml rel=alternate>
<META content="MSHTML 6.00.2900.2963" name=GENERATOR></HEAD>
<BODY>
<FORM language=javascript id=Form1 name=Form1
onsubmit="javascript:return WebForm_OnSubmit();" action=1430953.aspx
method=post><INPUT id=__EVENTTARGET type=hidden name=__EVENTTARGET> <INPUT
id=__EVENTARGUMENT type=hidden name=__EVENTARGUMENT> <INPUT
id=" __VIEWSTATE" type=hidden name=__VIEWSTATE>
<SCRIPT type=text/javascript>
<!--
var theForm = document.forms['Form1'];
if (!theForm) {
theForm = document.Form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
// -->
</SCRIPT>
<SCRIPT src="java语音播放事例 - oscar999的专栏 - CSDNBlog.files/WebResource.axd"
type=text/javascript></SCRIPT>
<SCRIPT type=text/javascript>
//<![CDATA[
var Anthem_FormID = "Form1";
//]]>
</SCRIPT>
<SCRIPT
src="C:\Documents and Settings\nya\桌面\JMF\java语音播放事例 - oscar999的专栏 - CSDNBlog.files\WebResource(1).axd"
type=text/javascript></SCRIPT>
<SCRIPT
src="C:\Documents and Settings\nya\桌面\JMF\java语音播放事例 - oscar999的专栏 - CSDNBlog.files\WebResource(2).axd"
type=text/javascript></SCRIPT>
<SCRIPT type=text/javascript>
<!--
function WebForm_OnSubmit() {
if (typeof(ValidatorOnSubmit) == "function" && ValidatorOnSubmit() == false) return false;
return true;
}
// -->
</SCRIPT>
<!--done-->
<DIV id=main>
<DIV id=banner>
<DIV id=bnr_pic><!--done-->
<DIV class=header>
<DIV class=headerText><A class=headermaintitle id=Header1_HeaderTitle
href="http://blog.csdn.net/oscar999/">oscar999的专栏</A> </DIV>
<DIV class=headerDis><SPAN id=TopicAuthor
style="DISPLAY: none">oscar999</SPAN></DIV></DIV></DIV>
<DIV id=mylinks>
<DIV id=mystats><!--done-->
<DIV class=blogStats>原创 - 44, 翻译 - 0, 转贴 - 16, 点击 - 15128, 评论 - 6, Trackbacks -0
</DIV></DIV><!--done--><A class=mainmenu id=MyLinks1_csdnhome
href="http://www.csdn.net/">CSDN首页</A> <A class=mainmenu
id=MyLinks1_csdndev href="http://dev.csdn.net/">CSDN技术中心</A>
<A class=mainmenu id=MyLinks1_HomeLink title=到聚合站点
href="http://blog.csdn.net/">BLOG首页</A> <A class=mainmenu
id=MyLinks1_PersonalHome title="访问 oscar999的专栏"
href="http://blog.csdn.net/oscar999/">我的首页</A> <A
class=mainmenu id=MyLinks1_MyArticles title="查看 oscar999的专栏 所有文章"
href="http://blog.csdn.net/oscar999/MyArticles.aspx"
target=_blank>我的文章</A> <A class=mainmenu id=MyLinks1_MySpace
title="查看 oscar999 的个人空间" href="http://hi.csdn.net/oscar999/profile"
target=_blank><FONT color=red>我的空间</FONT></A> <A
class=mainmenu id=MyLinks1_ContactLink
href="http://blog.csdn.net/oscar999/contact.aspx">联系作者</A> <A
class=mainmenu id=MyLinks1_HyperLink1
href="http://search.csdn.net/search_blog.asp"
target=_blank>搜索</A> <A class=mainmenu id=MyLinks1_Admin
href="http://writeblog.csdn.net/">写文章</A> </DIV></DIV>
<DIV id=wrap>
<DIV id=left><!-- left starts -->
<DIV id=left_content>
<DIV id=topics><SPAN class=PreAndNext id=viewpost.ascx_PreviousAndNextEntriesUp>
<DIV align=center><A
href="http://blog.csdn.net/oscar999/archive/2006/12/05/1431111.aspx">上一篇: 逐日思程</A> | <A
href="http://blog.csdn.net/oscar999/archive/2006/12/05/1430413.aspx">下一篇: swing中在JTextPane中的输入窗口出现乱码的问题</A></DIV></SPAN><BR>
<SCRIPT>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</SCRIPT>
<DIV class=post>
<DIV class=postTitle>
<SCRIPT src="java语音播放事例 - oscar999的专栏 - CSDNBlog.files/vote.js"></SCRIPT>
<A href="http://blog.csdn.net/oscar999/archive/2006/12/05/1430953.aspx"><IMG
height=13 src="java语音播放事例 - oscar999的专栏 - CSDNBlog.files/authorship.gif"
width=15 border=0> java语音播放事例</A>
<SCRIPT src="java语音播放事例 - oscar999的专栏 - CSDNBlog.files/count.htm"></SCRIPT>
</DIV>
<DIV class=postText><FONT size=2><SPAN
style="FONT-FAMILY: Arial">AudioSystem类充当取样音频系统资源的入口点。此类允许查询和安装在系统上的</SPAN><BR
style="FONT-FAMILY: Arial"><BR style="FONT-FAMILY: Arial"><SPAN
style="FONT-FAMILY: Arial">混频器。AudioSystem包括许多在不同格式间转换音频数据的方法,以及在音频文</SPAN><BR
style="FONT-FAMILY: Arial"><BR style="FONT-FAMILY: Arial"><SPAN
style="FONT-FAMILY: Arial">件和流文件之间进行转换的方法。它还提供不用显式处理混频器即可直接从</SPAN><BR
style="FONT-FAMILY: Arial"><BR style="FONT-FAMILY: Arial"><SPAN
style="FONT-FAMILY: Arial">AudioSystem获得Line的方法</SPAN><BR
style="FONT-FAMILY: Arial"><BR style="FONT-FAMILY: Arial"><SPAN
style="FONT-FAMILY: Arial">AudioFormat
是在声音流中指定特定数据安排的类。通过检查以音频格式存储的信息,可以发现在二进制声音数据中解释位的方式。</SPAN><BR
style="FONT-FAMILY: Arial"><BR style="FONT-FAMILY: Arial"><SPAN
style="FONT-FAMILY: Arial">Line.Info类</SPAN><BR style="FONT-FAMILY: Arial"><SPAN
style="FONT-FAMILY: Arial">
Line.Info对象包含关于行的信息。只有Line.Info本身提供的信息是该行的Java类。Line.Info子类添加该行的其他种类的信息。这些附加信息取决于通过Line.Info子类所描述的行种类实现的Line子接口。</SPAN><BR
style="FONT-FAMILY: Arial"><BR style="FONT-FAMILY: Arial"><SPAN
style="FONT-FAMILY: Arial">DataLine.Info类</SPAN><BR
style="FONT-FAMILY: Arial"><SPAN style="FONT-FAMILY: Arial">
除了继承自超类Line.Info的类信息以外,DataLine.Info还提供特定于数据行的其他信息。这些信息包括:受数据行支持的音频格式
其内部缓冲区的最大和最小</SPAN><BR style="FONT-FAMILY: Arial"><BR
style="FONT-FAMILY: Arial"><SPAN
style="FONT-FAMILY: Arial">接口SourceDataLine</SPAN><BR
style="FONT-FAMILY: Arial"><SPAN style="FONT-FAMILY: Arial">
源数据行是可以写入数据的数据行。它充当其混频器的源。应用程序将音频字节写入源数据行,这样可处理字节缓冲并将它们传给混频器。混频器可以将这些样本与取自其他源的样本混合起来,然后将该混合物传递到输出端口之类的目标(它可表示声卡上的音频输出设备)</SPAN><BR
style="FONT-FAMILY: Arial"><BR style="FONT-FAMILY: Arial"><BR
style="FONT-FAMILY: Arial"><SPAN style="FONT-FAMILY: Arial">程序事例:</SPAN><BR
style="FONT-FAMILY: Arial"><BR style="FONT-FAMILY: Arial"><SPAN
style="FONT-FAMILY: Arial">import java.io.File;</SPAN><BR
style="FONT-FAMILY: Arial"><BR style="FONT-FAMILY: Arial"><SPAN
style="FONT-FAMILY: Arial">import javax.sound.sampled.AudioFormat;</SPAN><BR
style="FONT-FAMILY: Arial"><SPAN style="FONT-FAMILY: Arial">import
javax.sound.sampled.AudioInputStream;</SPAN><BR style="FONT-FAMILY: Arial"><SPAN
style="FONT-FAMILY: Arial">import javax.sound.sampled.AudioSystem;</SPAN><BR
style="FONT-FAMILY: Arial"><SPAN style="FONT-FAMILY: Arial">import
javax.sound.sampled.DataLine;</SPAN><BR style="FONT-FAMILY: Arial"><SPAN
style="FONT-FAMILY: Arial">import javax.sound.sampled.SourceDataLine;</SPAN><BR
style="FONT-FAMILY: Arial"><BR style="FONT-FAMILY: Arial"><SPAN
style="FONT-FAMILY: Arial">public class Playtest {</SPAN><BR
style="FONT-FAMILY: Arial"><BR style="FONT-FAMILY: Arial"><SPAN
style="FONT-FAMILY: Arial"> /**</SPAN><BR
style="FONT-FAMILY: Arial"><SPAN style="FONT-FAMILY: Arial">
* @param args</SPAN><BR style="FONT-FAMILY: Arial"><SPAN
style="FONT-FAMILY: Arial"> */</SPAN><BR
style="FONT-FAMILY: Arial"><SPAN style="FONT-FAMILY: Arial">
public static void main(String[] args) {</SPAN><BR
style="FONT-FAMILY: Arial"><SPAN style="FONT-FAMILY: Arial">
// TODO Auto-generated method stub</SPAN><BR
style="FONT-FAMILY: Arial"><SPAN style="FONT-FAMILY: Arial">
try {</SPAN><BR style="FONT-FAMILY: Arial"><SPAN
style="FONT-FAMILY: Arial">
AudioInputStream ais = AudioSystem.getAudioInputStream(new
File(</SPAN><BR style="FONT-FAMILY: Arial"><SPAN
style="FONT-FAMILY: Arial">
"c:\\abc.wav"));//
获得音频输入流</SPAN><BR style="FONT-FAMILY: Arial"><SPAN
style="FONT-FAMILY: Arial">
AudioFormat baseFormat = ais.getFormat();//
指定声音流中特定数据安排</SPAN><BR style="FONT-FAMILY: Arial"><SPAN
style="FONT-FAMILY: Arial">
System.out.println("baseFormat="+baseFormat);</SPAN><BR
style="FONT-FAMILY: Arial"><SPAN style="FONT-FAMILY: Arial">
DataLine.Info info = new
DataLine.Info(SourceDataLine.class,</SPAN><BR style="FONT-FAMILY: Arial"><SPAN
style="FONT-FAMILY: Arial">
baseFormat);</SPAN><BR
style="FONT-FAMILY: Arial"><SPAN style="FONT-FAMILY: Arial">
System.out.println("info="+info);</SPAN><BR style="FONT-FAMILY: Arial"><SPAN
style="FONT-FAMILY: Arial">
SourceDataLine line = (SourceDataLine)
AudioSystem.getLine(info);</SPAN><BR style="FONT-FAMILY: Arial"><SPAN
style="FONT-FAMILY: Arial">
// 从混频器获得源数据行</SPAN><BR style="FONT-FAMILY: Arial"><SPAN
style="FONT-FAMILY: Arial">
System.out.println("line="+line);</SPAN><BR
style="FONT-FAMILY: Arial"><SPAN style="FONT-FAMILY: Arial">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -