📄 利用jmf进行多媒体编程(3) - runner0592的专栏(what's up) - csdnblog.htm
字号:
<LI class=listitem><A
href="http://blog.csdn.net/runner0592/category/184630.aspx">探索JAVA</A><A
href="http://blog.csdn.net/runner0592/category/184630.aspx/rss">(RSS)</A></LI></UL>
<H3 class=listtitle>收藏</H3>
<UL class=list>
<LI class=listitem><A
href="http://blog.csdn.net/runner0592/category/186343.aspx">数据结构与算法</A></LI></UL>
<H3 class=listtitle>相册</H3><!--category title-->
<UL class=list></UL>
<H3 class=listtitle>友情连接</H3>
<UL class=list>
<LI class=listitem><A href="http://blog.csdn.net/leoyao2006/"
target=_blank>KING(风之吻)</A><A href="http://blog.csdn.net/leoyao2006/"
target=_blank>(RSS)</A></LI></UL>
<H3 class=listtitle>存档</H3>
<UL class=list>
<LI><A
href="http://blog.csdn.net/runner0592/archive/2007/02.aspx">2007年02月(2)</A>
<LI><A
href="http://blog.csdn.net/runner0592/archive/2007/01.aspx">2007年01月(10)</A>
<LI><A
href="http://blog.csdn.net/runner0592/archive/2006/12.aspx">2006年12月(1)</A>
<LI><A
href="http://blog.csdn.net/runner0592/archive/2006/11.aspx">2006年11月(1)</A>
<LI><A
href="http://blog.csdn.net/runner0592/archive/2006/10.aspx">2006年10月(3)</A>
<LI><A
href="http://blog.csdn.net/runner0592/archive/2006/09.aspx">2006年09月(2)</A>
<LI><A
href="http://blog.csdn.net/runner0592/archive/2006/08.aspx">2006年08月(1)</A>
<LI><A
href="http://blog.csdn.net/runner0592/archive/2006/06.aspx">2006年06月(1)</A>
<LI><A
href="http://blog.csdn.net/runner0592/archive/2006/05.aspx">2006年05月(2)</A>
<LI><A
href="http://blog.csdn.net/runner0592/archive/2006/03.aspx">2006年03月(16)</A></LI></UL><SPAN
id=Anthem_RecentComments_ltlComments__><SPAN id=RecentComments_ltlComments>
<H3 class=listtitle>最近评论</H3>
<UL class=list>
<LI class=listitem>无名:<A title=点击查看《回复:tomcat简介》
href="http://blog.csdn.net/runner0592/archive/2006/10/17/1338701.aspx#504670">怎么不在系统环境变量中设置任何关于TOMCAT的值,也能正常工作呢?</A>
<LI class=listitem>runner0592:<A title=点击查看《回复:对接口的理解》
href="http://blog.csdn.net/runner0592/archive/2006/03/16/625833.aspx#471416">嘿嘿~~不知道撒!
<BR>现在只觉得设计接口的初衷是可以让派生类继承多个不同类的方法。
<BR>还有就是运用好多态比if-else好很多。if-else多起来就太乱了!</A>
<LI class=listitem>Seagar:<A title=点击查看《回复:对接口的理解》
href="http://blog.csdn.net/runner0592/archive/2006/03/16/625833.aspx#469221">嘿嘿,小青~~
<BR>就你的理解,接口在Java起了什么作用?</A></LI></UL></SPAN></SPAN><BR><BR></DIV>
<DIV id=main><SPAN class=PreAndNext id=viewpost.ascx_PreviousAndNextEntriesUp>
<DIV align=center><A
href="http://blog.csdn.net/runner0592/archive/2006/03/22/633066.aspx">上一篇: 利用JMF进行多媒体编程(4)</A> | <A
href="http://blog.csdn.net/runner0592/archive/2006/03/22/633055.aspx">下一篇: 利用JMF进行多媒体编程(2)</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="利用JMF进行多媒体编程(3) - runner0592的专栏(what's up) - CSDNBlog.files/vote.js"></SCRIPT>
<A href="http://blog.csdn.net/runner0592/archive/2006/03/22/633063.aspx"><IMG
height=13
src="利用JMF进行多媒体编程(3) - runner0592的专栏(what's up) - CSDNBlog.files/zhuan.gif"
width=15 border=0> 利用JMF进行多媒体编程(3)</A>
<SCRIPT
src="利用JMF进行多媒体编程(3) - runner0592的专栏(what's up) - CSDNBlog.files/count.htm"></SCRIPT>
</DIV>
<DIV class=postText>
<P>作者:冯睿 本文选自:赛迪网 2002年09月29日 <BR> <BR>有时你需要使用一个Player对象来控制多个其他的Player和Controller对象,我们把这个Player对象称为主对象,并把这些对象组成一个组。通过调用主对象中的start()、stop()、setMediaTime()等方法就可以激活组中所有成员的相应方法。主对象控制所有的状态变化和事件发布。然后使用addControllerListerner()方法来将一个ControllerListener对象绑定到Player对象上,Controller对象将向该ControllerListener对象发送事件消息。 <BR><BR>dualPlayer.addControllerListener(this);<BR> <BR><BR><BR>最后需要调用start()方法来启动Player对象。start()方法将Player对象的状态设置为Started。如果Player没有被实体化(Realize)或预取(Prefetch),start()方法会自动执行这些操作。 <BR><BR>dualPlayer.start();<BR> <BR><BR><BR>由于JMF类实现了ControllerLister接口,因此需要实现该接口中的controllerUpdate()方法,该方法在Controller对象产生一个事件时被调用。 <BR><BR>public synchronized void controllerUpdate(ControllerEvent event) {<BR> if (event instanceof RealizeCompleteEvent) {<BR> Component comp;<BR> if ((comp = dualPlayer.getVisualComponent()) != null)<BR> add ("Center", comp);<BR> if ((comp = dualPlayer.getControlPanelComponent()) != null)<BR> add("South", comp);<BR> validate();<BR> }<BR>}<BR> <BR><BR><BR>当JMF类产生了一个RealizeCompleteEvent事件后,controllerUpdate()方法在界面上增加两个Component对象,一个用于播放媒体,一个用于放置控制按钮,例如播放、停止等。 <BR><BR>在运行程序的过程中,程序会产生下面的输出。 <BR><BR>Starting player ...javax.media.TransitionEvent<BR> [source=com.sun.media.content.video.mpeg.Handler@71bb78,<BR> previous=Unrealized,<BR> current=Realizing,<BR> target=Started]<BR>Open log file: C:\test\Java\JMF\JMF\jmf.log<BR>javax.media.DurationUpdateEvent<BR> [source=com.sun.media.content.video.mpeg.Handler@71bb78,duration=<BR> javax.media.Time@2a37a6<BR>javax.media.RealizeCompleteEvent<BR>[source=com.sun.media.content.video.mpeg.Handler@71bb78,<BR> previous=Realizing,<BR> current=Realized,<BR> target=Started]<BR>Adding visual component<BR>Adding control panel<BR>javax.media.TransitionEvent<BR> [source=com.sun.media.content.video.mpeg.Handler@71bb78,<BR> previous=Realized,<BR> current=Prefetching,<BR> target=Started]<BR>javax.media.PrefetchCompleteEvent<BR> [source=com.sun.media.content.video.mpeg.Handler@71bb78,<BR> previous=Prefetching,<BR> current=Prefetched,target=Started]<BR>javax.media.StartEvent<BR> [source=com.sun.media.content.video.mpeg.Handler@71bb78,<BR> previous=Prefetched,<BR> current=Started,<BR> target=Started,<BR> mediaTime=javax.media.Time@56a05e,timeBaseTime=<BR> javax.media.Time@3a8602]<BR>javax.media.EndOfMediaEvent<BR> [source=com.sun.media.content.video.mpeg.Handler@71bb78,<BR> previous=Started,<BR> current=Prefetched,<BR> target=Prefetched,<BR> mediaTime=javax.media.Time@1d332b]<BR> <BR><BR><BR>前面提到,当调用start()方法的时候,Player会切换到Started状态。从上面列出的信息中可以看到Player对象的状态从Unrealized变成了Started。当EndOfMedia事件被激活时(这时Player对象完成了媒体文件的播放),状态从Started变成了Prefetched。图二显示了程序正在播放多媒体文件时的情况。 <BR><BR><IMG
alt=""
src="利用JMF进行多媒体编程(3) - runner0592的专栏(what's up) - CSDNBlog.files/35637.jpg"><BR><BR><BR><BR><BR>图二 程序正在播放媒体文件<BR></P><BR><BR>
<P id=TBPingURL>Trackback:
http://tb.blog.csdn.net/TrackBack.aspx?PostId=633063</P><BR></DIV>
<DIV class=postFoot>
<SCRIPT src=""></SCRIPT>
[<A title=功能强大的网络收藏夹,一秒钟操作就可以轻松实现保存带来的价值、分享带来的快乐
href="javascript:d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(saveit=window.open('http://wz.csdn.net/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=590,height=300,left=75,top=20,status=no,resizable=yes'));saveit.focus();">收藏到我的网摘</A>]
[<A
href="http://tb.blog.csdn.net/TrackBack.aspx?PostId=633063">发送Trackback]</A> runner0592发表于
2006年03月22日 23:30:00 </DIV></DIV><LINK
href="http://blog.csdn.net/runner0592/Services/Pingback.aspx" rel=pingback><!--<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"xmlns:dc="http://purl.org/dc/elements/1.1/"xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"><rdf:Descriptionrdf:about="http://blog.csdn.net/runner0592/archive/2006/03/22/633063.aspx"dc:identifier="http://blog.csdn.net/runner0592/archive/2006/03/22/633063.aspx"dc:title="利用JMF进行多媒体编程(3)"trackback:ping="http://tb.blog.csdn.net/TrackBack.aspx?PostId=633063" /></rdf:RDF>-->
<SCRIPT>function hide(){showComment();}</SCRIPT>
<BR>
<DIV class=post>
<DIV class=postTitle>相关文章:</DIV>
<UL class=postText>
<LI><A href="http://blog.csdn.net/runner0592/archive/2006/03/22/632929.aspx"
target=_blank>利用JMF进行多媒体编程(1)</A> 2006-03-22 <A
href="http://blog.csdn.net/runner0592/" target=_blank>runner0592</A>
<LI><A href="http://blog.csdn.net/runner0592/archive/2006/03/22/633055.aspx"
target=_blank>利用JMF进行多媒体编程(2)</A> 2006-03-22 <A
href="http://blog.csdn.net/runner0592/" target=_blank>runner0592</A>
<LI><A href="http://blog.csdn.net/kenson/archive/2005/01/20/260960.aspx"
target=_blank>Java软件开发学习笔记(四)</A> 2005-01-20 <A
href="http://blog.csdn.net/kenson/" target=_blank>kenson</A>
<LI><A href="http://blog.csdn.net/enoeht/archive/2004/06/23/23658.aspx"
target=_blank>Synchronized使用心得</A> 2004-06-23 <A
href="http://blog.csdn.net/enoeht/" target=_blank>enoeht</A>
<LI><A href="http://blog.csdn.net/Kamus/archive/2004/09/16/106082.aspx"
target=_blank>Windows Media Player V10 发布</A> 2004-09-16 <A
href="http://blog.csdn.net/Kamus/" target=_blank>Kamus</A>
<DIV align=right><A
href="http://blog.csdn.net/runner0592/relatedarticles/633063.aspx"
target=_blank>更多内容...</A></DIV></LI></UL></DIV><BR><BR><BR>
<DIV class=post id=csdn_zhaig_ad_yahoo></DIV>
<SCRIPT type=text/javascript>document.write("<img src=http://counter.csdn.net/pv.aspx?id=24 border=0 width=0 height=0>");</SCRIPT>
<SPAN class=PreAndNext id=viewpost.ascx_PreviousAndNextEntriesDown>
<DIV align=center><A
href="http://blog.csdn.net/runner0592/archive/2006/03/22/633066.aspx">上一篇: 利用JMF进行多媒体编程(4)</A> | <A
href="http://blog.csdn.net/runner0592/archive/2006/03/22/633055.aspx">下一篇: 利用JMF进行多媒体编程(2)</A></DIV></SPAN><SPAN
id=Anthem_Comments.ascx_ltlComments__><SPAN id=Comments.ascx_ltlComments><BR>
<DIV id=comments>
<H3>评论</H3>没有评论。 </DIV></SPAN></SPAN>
<SCRIPT language=javascript>
ad_width=468;
ad_height=60;
adcss=2;
unionuser=19;
ad_type='j';
count=5;
</SCRIPT>
<DIV>
<SCRIPT language=javascript
src="利用JMF进行多媒体编程(3) - runner0592的专栏(what's up) - CSDNBlog.files/showads.js"
type=text/javascript></SCRIPT>
<SCRIPT language=javascript
src="利用JMF进行多媒体编程(3) - runner0592的专栏(what's up) - CSDNBlog.files/showgm.js"
type=text/javascript></SCRIPT>
</DIV>
<DIV class=CommentForm id=commentform>
<H3>发表评论 </H3>
<DIV id=Anthem_PostComment.ascx_CommentUpdatePanel__>
<DIV id=PostComment.ascx_CommentUpdatePanel>
<TABLE class=CommentForm>
<TBODY>
<TR>
<TD width=69 height=0></TD>
<TD></TD></TR>
<TR>
<TD width=70>大名:</TD>
<TD align=left><INPUT id=PostComment.ascx_tbName style="WIDTH: 300px"
disabled maxLength=32 size=40 value=hjd_668 name=PostComment.ascx:tbName>
<SPAN id=PostComment.ascx_RequiredFieldValidator2
style="DISPLAY: none; COLOR: red" initialvalue=""
evaluationfunction="RequiredFieldValidatorEvaluateIsValid"
display="Dynamic" errormessage="<br>请输入尊姓大名"
controltovalidate="PostComment.ascx_tbName"><BR>请输入尊姓大名</SPAN> </TD></TR>
<TR>
<TD width=70>网址:</TD>
<TD align=left><INPUT id=PostComment.ascx_tbUrl style="WIDTH: 300px"
maxLength=256 size=40 name=PostComment.ascx:tbUrl> </TD></TR>
<DIV id=PostComment.ascx_AntiBotImageRegion></DIV>
<TR>
<TD width=70>校验码:</TD>
<TD align=left><INPUT id=PostComment.ascx_tbAntiBotImage
style="WIDTH: 75px" name=PostComment.ascx:tbAntiBotImage> <SPAN
id=PostComment.ascx_valAntiBotImage style="DISPLAY: none; COLOR: red"
evaluationfunction="CustomValidatorEvaluateIsValid"
display="Dynamic">检验码无效!</SPAN> <SPAN
id=Anthem_PostComment.ascx_imgAntiBotImage__><IMG
id=PostComment.ascx_imgAntiBotImage alt=""
src="利用JMF进行多媒体编程(3) - runner0592的专栏(what's up) - CSDNBlog.files/AntiBotImage.jpg"
align=absMiddle border=0></SPAN> <SPAN
id=Anthem_PostComment.ascx_lbCreateAntiBotImage__><A
id=PostComment.ascx_lbCreateAntiBotImage
onclick="javascript:Anthem_FireCallBackEvent(this,event,'PostComment.ascx:lbCreateAntiBotImage','',false,'','','',true,null,null,null,true,true);return false;"
href="javascript:__doPostBack('PostComment.ascx$lbCreateAntiBotImage','')">看不清,换一张</A></SPAN>
</TD></TR>
<DIV></DIV>
<TR>
<TD colSpan=3>评论 <SPAN id=PostComment.ascx_RequiredFieldValidator3
style="DISPLAY: none; COLOR: red" initialvalue=""
evaluationfunction="RequiredFieldValidatorEvaluateIsValid"
display="Dynamic" errormessage="<br>请输入评论"
controltovalidate="PostComment.ascx_tbComment"><BR>请输入评论</SPAN> <BR><TEXTAREA id=PostComment.ascx_tbComment style="WIDTH: 381px; HEIGHT: 193px" name=PostComment.ascx:tbComment rows=10 cols=50></TEXTAREA>
</TD></TR>
<TR>
<TD colSpan=3><SPAN id=Anthem_PostComment.ascx_btnSubmit__><INPUT language=javascript class=Button id=PostComment.ascx_btnSubmit onclick="javascript:Anthem_FireCallBackEvent(this,event,'PostComment.ascx:btnSubmit','',true,'','','正在处理...',false,null,null,null,true,true);return false;WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("PostComment.ascx:btnSubmit", "", true, "", "", false, false))" type=submit value=提交 name=PostComment.ascx:btnSubmit></SPAN>
</TD></TR>
<TR>
<TD colSpan=3><SPAN id=PostComment.ascx_Message
style="COLOR: red"></SPAN></TD></TR></TBODY></TABLE></DIV></DIV></DIV></DIV>
<P id=footer>Powered by: <BR><A id=Footer1_Hyperlink2
href="http://scottwater.com/blog" name=Hyperlink1><IMG
src="利用JMF进行多媒体编程(3) - runner0592的专栏(what's up) - CSDNBlog.files/100x30_Logo.gif"
border=0></A> <A id=Footer1_Hyperlink3 href="http://asp.net/"
name=Hyperlink1><IMG
src="利用JMF进行多媒体编程(3) - runner0592的专栏(what's up) - CSDNBlog.files/PoweredByAsp.Net.gif"
border=0></A> <BR>Copyright © runner0592 </P>
<SCRIPT
src="利用JMF进行多媒体编程(3) - runner0592的专栏(what's up) - CSDNBlog.files/counter.js"></SCRIPT>
<SCRIPT type=text/javascript>
<!--
var Page_Validators = new Array(document.getElementById("PostComment.ascx_RequiredFieldValidator2"), document.getElementById("PostComment.ascx_valAntiBotImage"), document.getElementById("PostComment.ascx_RequiredFieldValidator3"));
// -->
</SCRIPT>
<SCRIPT type=text/javascript>
<!--
var Page_ValidationActive = false;
if (typeof(ValidatorOnLoad) == "function") {
ValidatorOnLoad();
}
function ValidatorOnSubmit() {
if (Page_ValidationActive) {
return ValidatorCommonOnSubmit();
}
else {
return true;
}
}
// -->
</SCRIPT>
</FORM></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -