📄 用java多媒体框架设计自动播放机_开 发 者_网上学园_科技时代_新浪网.htm
字号:
<P> if (position > tellPoint) {</P>
<P> thoroughSkip (position - tellPoint);</P>
<P> } else {</P>
<P> close();</P>
<P> open();</P>
<P> thoroughSkip (position);</P>
<P> }</P>
<P> return tellPoint;</P>
<P> } catch (IOException ioe) {</P>
<P> return 0; // bogus...</P>
<P> }</P>
<P> } </P>
<P> 使用这个类,Manager可以找到一个可用的Player用于播放.jar文件中的.mov或者.avi文件。我们的示例的TinyPlayer使用ClassLoader.getResource
()方法来在类路径中寻找movie/themovie.mov或者movie/themovie.avi。当类路径只包含.jar文件的时候,我们将对其进行设置。</P>
<P> 准备一个合适的.jar文件中的第一步是使用JMF的jmfcustomizer工具来创建一个jar,只使用播放我们的媒体所需要类,去掉用于流、捕捉、译码和其它对于一个简化的播放程序不需要的函数。不幸的是,Sun在各种Java版本的JMF中都不包含jmfcustomizer的帮助文件,但是各种定制屏幕很容易设计出来:</P>
<P> 1.媒体源和媒体汇点:选择"媒体文件"和"播放"。</P>
<P> 2.协议:只是"文件"。</P>
<P> 3.源媒体格式:"QuickTime (.mov)"和"Avi"。</P>
<P> 4.解码器:无论你计划在你的媒体中使用什么解码器,但是用于音频的大部分都是"A - law"、"U -
law"或"IMA4",用于视频的是"H263"。不要为编码器、封包器和解包器而费心。</P>
<P> 5.渲染:在音频中,我们需要"JavaSound"用于Java
1.3及1.3以上的版本,SunAudio用于Sun的pre-1.3 JVM。对于视频,我们只需要AWT。</P>
<P> 其结果是本来用于我们的播放器的jar被从1.9 MB压缩到700K。</P>
<P> 假定你已经编译了两个com.mac.invalidname.spmovie类,把它们添加到定制的jar中:</P>
<P> jar uf customized.jar com/mac/invalidname/spmovie/*.class </P>
<P> JMF的许可证有效期需要它的readme文件使用任何JMF或者定制子集来分布。我已经在misc目录中提供了,在TinyPlayer的菜单项可以找到它:</P>
<P> jar uf customized.jar misc/ </P>
<P> 为了使这个.jar文件可双击,我们提供一个manifest文件告诉Java运行时间在.jar文件中的哪个类中有在双击或者使用简单jar命令行变量的时候调用的main()方法。manifest还提供一个只包含jar自己的类路径:</P>
<P> Main-Class: com.mac.invalidname.spmovie.TinyPlayer</P>
<P> Class-Path: . </P>
<P> 这个manifest使用下面的命令来添加:</P>
<P> jar ufm customized.jar manifest-stub.txt </P>
<P> 这个文件现在有用于播放jar中的一个电影的所有的代码。为了将来之用,请把它保存为spmovie-engine.jar文件,或者类似的文件。</P>
<P> 现在引擎已经具备了,我们所需要的只有媒体了。正如你可从JMF支持类型页面<HTTP: formats.html 2.1.1
jmf java-media products
java.sun.com>看到的那样,所有Java版本的JMF有一个相当有限的所支持解码器的集合。对于视频来说最好的选择可能是H.263,在很广泛的比特率下能够工作的很好,然而它可能在老机器上会执行得很困难,除非你压缩视频或者保持较低的帧速率。虽然音频较少是事先准备好的,但是我想IMA
4:1执行得相当好。适当地编码或者译码你的媒体,并且把它复制为movie/themovie.mov或者movie/themovie.avi。如果你喜欢你也可以把.jar文件改名(我使用spmovie.jar)并且添加媒体:</P>
<P> jar u0f spmovie.jar media/ </P>
<P> 注意这里的"0"是数字零,而不是字母O;这表明我们不想压缩这个输入项,因为我们的媒体已经被压缩了。</P>
<P> 千辛万苦,我们的自我播放电影终于做成了,这个文件知道在双击的时候运行什么类,提供了多路解编、解码和渲染一部电影所需的所有的代码,以及电影本身。如果你想看看这种小型自我播放电影,你可以去<HTTP:
spmovie-small.jar spmovie invalidname homepage.mac.com>看看。</P>
<P> 它扩展了小应用程序的概念,允许媒体在任何可用于Java的浏览器中播放。</P>
<P> 说白了,它是一个Java虚拟机而不是媒体播放机。但是我们这种"一次编辑,到处播放"的思想是完全符合Java的原先的目的的。
</P><BR clear=all>
<TABLE width="90%" align=center border=0>
<TBODY>
<TR></TR></TBODY></TABLE><BR clear=all>
<TABLE cellSpacing=0 cellPadding=0 width=565 border=0>
<TBODY>
<TR>
<TD align=right>【<A
href="http://comment.sina.com.cn/cgi-bin/comment/comment.cgi?channel=kj&newsid=2-68-27742">发表评论</A>】【<A
href="http://bbs2.sina.com.cn/show.shtml?tech:newbie">初学者园地</A>】【<A
href="http://chat27.sina.com.cn/cgi-bin/chat/go?channel=科技聊天室">科技聊天</A>】【<A
href="javascript:window.close()">关闭窗口</A>】</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD>
<TD width=1 bgColor=#747474 rowSpan=2><BR></TD>
<TD vAlign=top align=right width=149>
<TABLE cellSpacing=0 cellPadding=0 width=140 border=0>
<TBODY>
<TR>
<TD align=middle width=140 bgColor=#fdc903 colSpan=2 height=23>新 闻 查
询</TD></TR>
<FORM action=http://search.sina.com.cn/cgi-bin/search/search.cgi
method=get>
<TR>
<TD colSpan=2 height=30><INPUT maxLength=80 name=_searchkey></TD></TR>
<TR>
<TD width=85 height=30><SELECT name=_ss> <OPTION value=sina
checked>综合</OPTION> <OPTION value=href>网站</OPTION> <OPTION
value=avcn>网页</OPTION> <OPTION value=newstitle>新闻标题</OPTION>
<OPTION value=newsft selected>新闻全文</OPTION> <OPTION
value=dict>汉英辞典</OPTION> <OPTION value=stock>沪深行情</OPTION> <OPTION
value=down>软件</OPTION> <OPTION value=game>游戏</OPTION></SELECT> </TD>
<TD align=right
width=35><INPUT type=submit value=搜索 name=enter></TD></TR></FORM></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=149 align=center border=0>
<TBODY>
<TR>
<TD height=8></TD></TR>
<TR>
<TD class=c03><IFRAME marginWidth=0 marginHeight=0
src="用Java多媒体框架设计自动播放机_开 发 者_网上学园_科技时代_新浪网.files/16.htm"
frameBorder=0 width=149 scrolling=no
height=320></IFRAME></TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD vAlign=bottom align=right><!--${广告button}--></TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=0 cellPadding=0 width=750 border=0>
<TBODY>
<TR>
<TD width=600>
<TABLE cellSpacing=0 cellPadding=0 width=600 border=0>
<TBODY>
<TR>
<TD bgColor=#5550a2>
<TABLE cellSpacing=1 cellPadding=5 width="100%" border=0>
<TBODY>
<TR>
<TD bgColor=#ffffff height=23> 相关链接</TD></TR>
<TR>
<TD class=f14 bgColor=#ffffff><A
href="http://tech.sina.com.cn/it2/2004-02-12/1340291451.shtml"
target=_blank>JAVA语言助力火星探测</A> <FONT class=p12
color=gray><I>2004/02/12 13:40:26</I></FONT> <BR><A
href="http://tech.sina.com.cn/roll/2004-02-12/0926291263.shtml"
target=_blank>Sun Java杯网络应用程序设计大赛圆满闭幕</A> <FONT class=p12
color=gray><I>2004/02/12 09:26:00</I></FONT> <BR><A
href="http://news.sina.com.cn/w/2004-01-17/07131609214s.shtml"
target=_blank>也使用Java语言编程 操纵“勇气”号就像打游戏 </A><FONT class=p12
color=gray><I>2004/01/17 07:13:48</I></FONT> <BR><A
href="http://tech.sina.com.cn/h/n/2004-01-15/1353282878.shtml"
target=_blank>Java之父谈“勇气”号探测器登陆火星与<FONT
color=red>JAVA</FONT>(图) </A><FONT class=p12
color=gray><I>2004/01/15 13:53:05</I></FONT> <BR><A
href="http://games.sina.com.cn/newgames/2004/01/010711488.shtml"
target=_blank>BREW、JAVA、.NET 三大平台之比较 </A><FONT class=p12
color=gray><I>2004/01/07 16:00:19</I></FONT> <BR><A
href="http://tech.sina.com.cn/s/n/2004-01-07/1223278749.shtml"
target=_blank>制衡微软战略:十软件企业成立Java工具组织 </A><FONT class=p12
color=gray><I>2004/01/07
12:23:00</I></FONT></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR><!--结束:底部--><!--开始:底部-->
<HR width=750 SIZE=2>
<!--标准尾-->
<TABLE cellSpacing=0 cellPadding=0 width=750 border=0>
<TBODY>
<TR>
<TD class=title12 align=middle><BR><A
href="http://tech.sina.com.cn/guest.html"
target=_blank>科技时代意见反馈留言板</A> 电话:010-82628888-5488 欢迎批评指正<BR><BR><A
href="http://corp.sina.com.cn/chn/">新浪简介</A> | <A
href="http://corp.sina.com.cn/eng/">About Sina</A> | <A
href="http://ads.sina.com.cn/">广告服务</A> | <A class=sinatail
href="http://www.sina.com.cn/contactus.html">联系我们</A> | <A
href="http://corp.sina.com.cn/chn/sina_job.html">招聘信息</A> | <A
href="http://www.sina.com.cn/intro/lawfirm.shtml">网站律师</A> | <A
href="http://english.sina.com/">SINA English</A> | <A
href="http://unipro.sina.com.cn/register.html">会员注册</A> | <A
href="http://tech.sina.com.cn/focus/sinahelp.shtml">产品答疑</A>
<BR><BR>Copyright © 1996 - 2004 SINA Inc. All Rights Reserved<BR><BR><IMG
height=1
src="C:\Documents and Settings\nya\桌面\JMF\用Java多媒体框架设计自动播放机_开 发 者_网上学园_科技时代_新浪网.files\c(1).gif"
width=1><A href="http://home.sina.com.cn/intro/copyright.shtml"
target=_blank>版权所有</A> 新浪网</TD></TR></TBODY></TABLE><!-- 访问Log统计测试 : begin -->
<SCRIPT language=JavaScript
src="用Java多媒体框架设计自动播放机_开 发 者_网上学园_科技时代_新浪网.files/nnselect.js">
</SCRIPT>
<NOSCRIPT><IMG height=1 src="" width=1>
</NOSCRIPT><!-- 访问Log统计测试 : end --><BR><BR><!-- Start Wrating -->
<SCRIPT language=javascript>var wrUrl = "//sina.wrating.com/";var wrDomain = "sina.com.cn";var wratingDefaultAcc = "860010-0323010000";var wratingDomainArray = new Array();wratingDomainArray[0] = "video.sina.com.cn";wratingDomainArray[1] = "cctv.sina.com.cn";wratingDomainArray[2] = "chat.sina.com.cn";wratingDomainArray[3] = "ent.sina.com.cn";wratingDomainArray[4] = "tech.sina.com.cn";wratingDomainArray[5] = "mobile.sina.com.cn";wratingDomainArray[6] = "house.sina.com.cn";wratingDomainArray[7] = "bj.house.sina.com.cn";wratingDomainArray[8] = "auto.sina.com.cn";wratingDomainArray[9] = "eladies.sina.com.cn";wratingDomainArray[10] = "bj.sina.com.cn";wratingDomainArray[11] = "woman.sina.com.cn";wratingDomainArray[12] = "women.sina.com.cn";wratingDomainArray[13] = "lady.sina.com.cn";wratingDomainArray[14] = "man.eladies.sina.com.cn";wratingDomainArray[15] = "games.sina.com.cn";wratingDomainArray[16] = "game.sina.com.cn";wratingDomainArray[17] = "edu.sina.com.cn";wratingDomainArray[18] = "baby.sina.com.cn";wratingDomainArray[19] = "kid.sina.com.cn";wratingDomainArray[20] = "astro.sina.com.cn";wratingDomainArray[21] = "news.sina.com.cn";wratingDomainArray[22] = "weather.news.sina.com.cn";wratingDomainArray[23] = "mil.news.sina.com.cn";wratingDomainArray[24] = "www.sina.com.cn";wratingDomainArray[25] = "home.sina.com.cn";wratingDomainArray[26] = "sports.sina.com.cn";wratingDomainArray[27] = "shidefc.sina.com.cn";wratingDomainArray[28] = "weiqi.sina.com.cn";wratingDomainArray[29] = "f1.sina.com.cn";wratingDomainArray[30] = "golf.sina.com.cn";wratingDomainArray[31] = "2002.sina.com.cn";wratingDomainArray[32] = "2004.sina.com.cn";wratingDomainArray[33] = "2006.sina.com.cn";wratingDomainArray[34] = "2008.sina.com.cn";wratingDomainArray[35] = "yayun2002.sina.com.cn";wratingDomainArray[36] = "yayun2006.sina.com.cn";wratingDomainArray[37] = "inter.sina.com.cn";wratingDomainArray[38] = "chelsea.sina.com.cn";wratingDomainArray[39] = "book.sina.com.cn";wratingDomainArray[40] = "cul.book.sina.com.cn";wratingDomainArray[41] = "comic.book.sina.com.cn";wratingDomainArray[42] = "finance.sina.com.cn";wratingDomainArray[43] = "money.sina.com.cn";wratingDomainArray[44] = "yue.sina.com.cn";wratingDomainArray[45] = "www.sina.com";var wratingAccArray = new Array();wratingAccArray[0] = "860010-0309010000";wratingAccArray[1] = "860010-0309020000";wratingAccArray[2] = "860010-0311010000";wratingAccArray[3] = "860010-0312010000";wratingAccArray[4] = "860010-0313010000";wratingAccArray[5] = "860010-0313020000";wratingAccArray[6] = "860010-0315010000";wratingAccArray[7] = "860010-0315020000";wratingAccArray[8] = "860010-0316010000";wratingAccArray[9] = "860010-0317010000";wratingAccArray[10] = "860010-0317020000";wratingAccArray[11] = "860010-0317010000";wratingAccArray[12] = "860010-0317010000";wratingAccArray[13] = "860010-0317010000";wratingAccArray[14] = "860010-0317030000";wratingAccArray[15] = "860010-0318010000";wratingAccArray[16] = "860010-0318010000";wratingAccArray[17] = "860010-0307010000";wratingAccArray[18] = "860010-0320010000";wratingAccArray[19] = "860010-0320020000";wratingAccArray[20] = "860010-0321020000";wratingAccArray[21] = "860010-0310010000";wratingAccArray[22] = "860010-0310020000";wratingAccArray[23] = "860010-0310030000";wratingAccArray[24] = "860010-0322010000";wratingAccArray[25] = "860010-0322010000";wratingAccArray[26] = "860010-0308010000";wratingAccArray[27] = "860010-0308020000";wratingAccArray[28] = "860010-0308030000";wratingAccArray[29] = "860010-0308040000";wratingAccArray[30] = "860010-0308050000";wratingAccArray[31] = "860010-0308060000";wratingAccArray[32] = "860010-0308060000";wratingAccArray[33] = "860010-0308060000";wratingAccArray[34] = "860010-0308070000";wratingAccArray[35] = "860010-0308060000";wratingAccArray[36] = "860010-0308060000";wratingAccArray[37] = "860010-0308080000";wratingAccArray[38] = "860010-0308090000";wratingAccArray[39] = "860010-0319010000";wratingAccArray[40] = "860010-0319020000";wratingAccArray[41] = "860010-0319030000";
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -