⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 利用jmf进行多媒体编程(3) - runner0592的专栏(what's up) - csdnblog.htm

📁 JMF编程的基础教程。。。 html格式配有源码。。。 非常适合初学者学习
💻 HTM
📖 第 1 页 / 共 2 页
字号:
  <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">上一篇:&nbsp;利用JMF进行多媒体编程(4)</A>&nbsp;|&nbsp;<A 
href="http://blog.csdn.net/runner0592/archive/2006/03/22/633055.aspx">下一篇:&nbsp;利用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>&nbsp;利用JMF进行多媒体编程(3)</A>&nbsp;&nbsp;
<SCRIPT 
src="利用JMF进行多媒体编程(3) - runner0592的专栏(what's up) - CSDNBlog.files/count.htm"></SCRIPT>
 </DIV>
<DIV class=postText>
<P>作者:冯睿&nbsp;&nbsp;&nbsp;&nbsp;本文选自:赛迪网&nbsp;&nbsp;2002年09月29日&nbsp;&nbsp;<BR>&nbsp;<BR>有时你需要使用一个Player对象来控制多个其他的Player和Controller对象,我们把这个Player对象称为主对象,并把这些对象组成一个组。通过调用主对象中的start()、stop()、setMediaTime()等方法就可以激活组中所有成员的相应方法。主对象控制所有的状态变化和事件发布。然后使用addControllerListerner()方法来将一个ControllerListener对象绑定到Player对象上,Controller对象将向该ControllerListener对象发送事件消息。&nbsp;<BR><BR>dualPlayer.addControllerListener(this);<BR>&nbsp;<BR><BR><BR>最后需要调用start()方法来启动Player对象。start()方法将Player对象的状态设置为Started。如果Player没有被实体化(Realize)或预取(Prefetch),start()方法会自动执行这些操作。&nbsp;<BR><BR>dualPlayer.start();<BR>&nbsp;<BR><BR><BR>由于JMF类实现了ControllerLister接口,因此需要实现该接口中的controllerUpdate()方法,该方法在Controller对象产生一个事件时被调用。&nbsp;<BR><BR>public&nbsp;synchronized&nbsp;void&nbsp;controllerUpdate(ControllerEvent&nbsp;event)&nbsp;{<BR>&nbsp;&nbsp;if&nbsp;(event&nbsp;instanceof&nbsp;RealizeCompleteEvent)&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;Component&nbsp;comp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((comp&nbsp;=&nbsp;dualPlayer.getVisualComponent())&nbsp;!=&nbsp;null)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add&nbsp;("Center",&nbsp;comp);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((comp&nbsp;=&nbsp;dualPlayer.getControlPanelComponent())&nbsp;!=&nbsp;null)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add("South",&nbsp;comp);<BR>&nbsp;&nbsp;&nbsp;&nbsp;validate();<BR>&nbsp;&nbsp;}<BR>}<BR>&nbsp;<BR><BR><BR>当JMF类产生了一个RealizeCompleteEvent事件后,controllerUpdate()方法在界面上增加两个Component对象,一个用于播放媒体,一个用于放置控制按钮,例如播放、停止等。&nbsp;<BR><BR>在运行程序的过程中,程序会产生下面的输出。&nbsp;<BR><BR>Starting&nbsp;player&nbsp;...javax.media.TransitionEvent<BR>&nbsp;&nbsp;[source=com.sun.media.content.video.mpeg.Handler@71bb78,<BR>&nbsp;&nbsp;previous=Unrealized,<BR>&nbsp;&nbsp;current=Realizing,<BR>&nbsp;&nbsp;target=Started]<BR>Open&nbsp;log&nbsp;file:&nbsp;C:\test\Java\JMF\JMF\jmf.log<BR>javax.media.DurationUpdateEvent<BR>&nbsp;&nbsp;[source=com.sun.media.content.video.mpeg.Handler@71bb78,duration=<BR>&nbsp;&nbsp;javax.media.Time@2a37a6<BR>javax.media.RealizeCompleteEvent<BR>[source=com.sun.media.content.video.mpeg.Handler@71bb78,<BR>&nbsp;&nbsp;previous=Realizing,<BR>&nbsp;&nbsp;current=Realized,<BR>&nbsp;&nbsp;target=Started]<BR>Adding&nbsp;visual&nbsp;component<BR>Adding&nbsp;control&nbsp;panel<BR>javax.media.TransitionEvent<BR>&nbsp;&nbsp;[source=com.sun.media.content.video.mpeg.Handler@71bb78,<BR>&nbsp;&nbsp;previous=Realized,<BR>&nbsp;&nbsp;current=Prefetching,<BR>&nbsp;&nbsp;target=Started]<BR>javax.media.PrefetchCompleteEvent<BR>&nbsp;&nbsp;[source=com.sun.media.content.video.mpeg.Handler@71bb78,<BR>&nbsp;&nbsp;previous=Prefetching,<BR>&nbsp;&nbsp;current=Prefetched,target=Started]<BR>javax.media.StartEvent<BR>&nbsp;&nbsp;[source=com.sun.media.content.video.mpeg.Handler@71bb78,<BR>&nbsp;&nbsp;previous=Prefetched,<BR>&nbsp;&nbsp;current=Started,<BR>&nbsp;&nbsp;target=Started,<BR>&nbsp;&nbsp;mediaTime=javax.media.Time@56a05e,timeBaseTime=<BR>&nbsp;&nbsp;javax.media.Time@3a8602]<BR>javax.media.EndOfMediaEvent<BR>&nbsp;&nbsp;[source=com.sun.media.content.video.mpeg.Handler@71bb78,<BR>&nbsp;&nbsp;previous=Started,<BR>&nbsp;&nbsp;current=Prefetched,<BR>&nbsp;&nbsp;target=Prefetched,<BR>&nbsp;&nbsp;mediaTime=javax.media.Time@1d332b]<BR>&nbsp;<BR><BR><BR>前面提到,当调用start()方法的时候,Player会切换到Started状态。从上面列出的信息中可以看到Player对象的状态从Unrealized变成了Started。当EndOfMedia事件被激活时(这时Player对象完成了媒体文件的播放),状态从Started变成了Prefetched。图二显示了程序正在播放多媒体文件时的情况。&nbsp;<BR><BR><IMG 
alt="" 
src="利用JMF进行多媒体编程(3) - runner0592的专栏(what's up) - CSDNBlog.files/35637.jpg"><BR><BR><BR><BR><BR>图二&nbsp;程序正在播放媒体文件<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)+'&amp;u='+escape(d.location.href)+'&amp;c='+escape(t),'keyit','scrollbars=no,width=590,height=300,left=75,top=20,status=no,resizable=yes'));saveit.focus();">收藏到我的网摘</A>]&nbsp;&nbsp; 
[<A 
href="http://tb.blog.csdn.net/TrackBack.aspx?PostId=633063">发送Trackback]</A>&nbsp;&nbsp;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">上一篇:&nbsp;利用JMF进行多媒体编程(4)</A>&nbsp;|&nbsp;<A 
href="http://blog.csdn.net/runner0592/archive/2006/03/22/633055.aspx">下一篇:&nbsp;利用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>评论&nbsp; <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(&quot;PostComment.ascx:btnSubmit&quot;, &quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, false))" type=submit value=提交 name=PostComment.ascx:btnSubmit></SPAN>&nbsp;&nbsp;&nbsp; 
    </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 + -