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

📄 jmfapp-rtputil.html

📁 jmf指导文件参考资料
💻 HTML
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta name="GENERATOR" content="Quadralay WebWorks Publisher 5.0.2">
<meta name="TEMPLATEBASE" content="Portable HTML">
<meta name="LASTUPDATED" content="11/23/99 11:48:17">
<title>RTPUtil  </title>
</head>

<body link="#3366CC" vlink="#9999CC" text="#000000" alink="#0000CC" bgcolor="#FFFFFF"
background="images/backgrnd.gif">


<table width="100%" border="0" align="left" cellpadding="0" cellspacing="0">
  <tr>
    <td><a href="JMFTOC.html">CONTENTS</a> | 
    <a href="JMFApp-Controller.html">PREV </a> |
    <a href="JMFGlossary.html">NEXT</a> |
    <a href="JMFIX.html">INDEX</a></td>
    <td align="right"><em>JMF 2.0 API Guide</em>
  </tr>
</table>

<p><br clear="all">
</p>

<hr align="left">

<blockquote>
<div align="right">
<a name="90170"> </a><font  size="3" face="Palatino, Times New Roman, Times, serif">F <br></font>
</div>
<div align="right">
<h2>
  <a name="90599"> </a><font color="#003366" face="Palatino, Times New Roman, Times, serif">RTPUtil</font>
</h2>
</div>

<p>
  <a name="91395"> </a><font face="Palatino, Times New Roman, Times, serif"><code>RTPUtil</code> demonstrates how to  create separate RTP players for each stream in a session so that you can play the streams. To do this, you need to listen for <code>NewRecvStreamEvents</code> and retrieve the <code>DataSource</code> from each new stream. (See <a href="RTPPresenting.html#107661">Creating an RTP Player for Each New Receive Stream</a> for more information about this example.)</font>
</p>


<a name="46909"> </a><font  size="1" face="Palatino, Times New Roman, Times, serif"><strong>

<table border="1" bordercolorlight="#FFFFFF" bordercolordark="#000000"
       cellpadding="5" cellspacing="0">
  <caption><b><i><font face="Palatino, Times New Roman, Times, serif"><a name="91401"> </a>Example F-1:   RTPUtil  (1 of 5)</font></i></b></caption>
  <tr>
    <td><font face="Palatino, Times New Roman, Times, serif"><pre>
<a name="91664"> </a><code>import javax.media.rtp.*;
</code><a name="91665"> </a><code>import javax.media.rtp.rtcp.*;
</code><a name="91666"> </a><code>import javax.media.rtp.event.*;
</code><a name="91667"> </a><code>import javax.media.*;
</code><a name="91668"> </a><code>import javax.media.protocol.*;
</code><a name="91669"> </a><code>import java.net.InetAddress;
</code><a name="91670"> </a><code>import javax.media.format.AudioFormat;
</code><a name="91671"> </a><code>// for PlayerWindow
</code><a name="91672"> </a><code>import java.awt.*;
</code><a name="91673"> </a><code>import com.sun.media.ui.*;
</code><a name="91674"> </a>
<a name="91675"> </a><code>import java.util.Vector;
</code><a name="91676"> </a>
<a name="91677"> </a><code>public class RTPUtil implements ReceiveStreamListener, 
</code><a name="91678"> </a><code>                                ControllerListener
</code><a name="91679"> </a><code>{
</code><a name="91680"> </a><code>    
</code><a name="91681"> </a><code>    Vector playerlist = new Vector();
</code><a name="91682"> </a><code>    SessionManager mgr = null;
</code><a name="91683"> </a><code>    boolean terminatedbyClose = false;
</code><a name="91704"> </a><code>    
</code><a name="91705"> </a><code>    public SessionManager createManager(String address,
</code><a name="91706"> </a><code>                                        String sport,
</code><a name="91707"> </a><code>                                        String sttl,
</code><a name="91708"> </a><code>                                        boolean listener,
</code><a name="91709"> </a><code>                                        boolean sendlistener)
</code><a name="91710"> </a><code>    {
</code></pre>
</font></td>
  </tr>
  <tr>
    <td><font face="Palatino, Times New Roman, Times, serif"><pre>
<a name="91465"> </a><code>        return createManager(address,
</code><a name="91466"> </a><code>                             new Integer(sport).intValue(),
</code><a name="91467"> </a><code>                             new Integer(sttl).intValue(),
</code><a name="91468"> </a><code>                             listener,
</code><a name="91469"> </a><code>                             sendlistener);
</code><a name="91470"> </a><code>    }
</code><a name="91471"> </a><code>    public SessionManager createManager(String address,
</code><a name="91472"> </a><code>                                        int port,
</code><a name="91473"> </a><code>                                        int ttl,
</code><a name="91474"> </a><code>                                        boolean listener,
</code><a name="91475"> </a><code>                                        boolean sendlistener)
</code><a name="91476"> </a><code>    {
</code><a name="91477"> </a><code>        mgr = (SessionManager)new com.sun.media.rtp.RTPSessionMgr();
</code><a name="91478"> </a><code>        
</code><a name="91479"> </a><code>        if (mgr == null) return null;
</code><a name="91480"> </a>
<a name="91481"> </a><code>        mgr.addFormat(new AudioFormat(AudioFormat.DVI_RTP,
</code><a name="91482"> </a><code>                                      44100,
</code><a name="91483"> </a><code>                                      4,
</code><a name="91484"> </a><code>                                      1),
</code><a name="91485"> </a><code>                      18);
</code><a name="91755"> </a><code>        if (listener) mgr.addReceiveStreamListener(this);
</code><a name="91756"> </a><code>        if (sendlistener) new RTPSendStreamWindow(mgr);
</code><a name="91757"> </a><code>        
</code><a name="91758"> </a><code>        // ask RTPSM to generate the local participants CNAME
</code><a name="91759"> </a><code>        String cname = mgr.generateCNAME();
</code><a name="91760"> </a><code>        String username = null;
</code><a name="91761"> </a>
<a name="91762"> </a><code>        try {
</code><a name="91763"> </a><code>            username = System.getProperty("user.name");
</code><a name="91764"> </a><code>        } catch (SecurityException e){
</code><a name="91765"> </a><code>            username = "jmf-user";
</code><a name="91766"> </a><code>        }
</code><a name="91767"> </a><code>        
</code><a name="91768"> </a><code>        // create our local Session Address
</code><a name="91769"> </a><code>        SessionAddress localaddr = new SessionAddress();
</code><a name="91770"> </a><code>        
</code><a name="91771"> </a><code>        try{
</code><a name="91772"> </a><code>            InetAddress destaddr = InetAddress.getByName(address);
</code><a name="91773"> </a>
<a name="91774"> </a><code>            SessionAddress sessaddr = new SessionAddress(destaddr,
</code><a name="91775"> </a><code>                                                         port,
</code><a name="91776"> </a><code>                                                         destaddr,
</code><a name="91777"> </a><code>                                                         port + 1);
</code><a name="91778"> </a><code>            
</code><a name="91779"> </a><code>            SourceDescription[] userdesclist= new SourceDescription[]
</code><a name="91780"> </a><code>            {
</code><a name="91781"> </a><code>                new SourceDescription(SourceDescription
</code><a name="91782"> </a><code>                                      .SOURCE_DESC_EMAIL,
</code><a name="91783"> </a><code>                                      "jmf-user@sun.com",
</code><a name="91784"> </a><code>                                      1,
</code><a name="91785"> </a><code>                                      false),
</code></pre>
</font></td>
  </tr>
  <tr>
    <td><font face="Palatino, Times New Roman, Times, serif"><pre>
<a name="91519"> </a><code>                new SourceDescription(SourceDescription
</code><a name="91520"> </a><code>                                      .SOURCE_DESC_CNAME,
</code><a name="91521"> </a><code>                                      cname,
</code><a name="91522"> </a><code>                                      1,
</code><a name="91523"> </a><code>                                      false),
</code><a name="91524"> </a>
<a name="91525"> </a><code>                new SourceDescription(SourceDescription
</code><a name="91526"> </a><code>                                      .SOURCE_DESC_TOOL,
</code><a name="91527"> </a><code>                                      "JMF RTP Player v2.0",
</code><a name="91528"> </a><code>                                      1,
</code><a name="91529"> </a><code>                                      false)
</code><a name="91530"> </a><code>            };
</code><a name="91531"> </a>
<a name="91532"> </a><code>            mgr.initSession(localaddr,
</code><a name="91533"> </a><code>                            userdesclist,
</code><a name="91534"> </a><code>                            0.05,
</code><a name="91535"> </a><code>                            0.25);
</code><a name="91536"> </a><code>            
</code><a name="91537"> </a><code>            mgr.startSession(sessaddr,ttl,null);
</code><a name="91796"> </a><code>        } catch (Exception e) {
</code><a name="91797"> </a><code>            System.err.println(e.getMessage());
</code><a name="91798"> </a><code>            return null;
</code><a name="91799"> </a><code>        }
</code><a name="91800"> </a><code>        
</code><a name="91801"> </a><code>        return mgr;
</code><a name="91802"> </a><code>    }
</code><a name="91803"> </a>    public void update( ReceiveStreamEvent event)
<a name="91804"> </a>    {
<a name="91805"> </a>        Player newplayer = null;
<a name="91806"> </a>        RTPPlayerWindow playerWindow = null;
<a name="91807"> </a>
<a name="91808"> </a>        // find the sourceRTPSM for this event
<a name="91809"> </a>        SessionManager source = (SessionManager)event.getSource();
<a name="91810"> </a>
<a name="91811"> </a>        // create a new player if a new recvstream is detected
<a name="91812"> </a>        if (event instanceof NewReceiveStreamEvent)
<a name="91813"> </a>        {
<a name="91814"> </a>            String cname = "Java Media Player";
<a name="91815"> </a>            ReceiveStream stream = null;
<a name="91816"> </a>            
<a name="91817"> </a>            try
<a name="91818"> </a>            {
<a name="91819"> </a>                // get a handle over the ReceiveStream
<a name="91820"> </a>                stream =((NewReceiveStreamEvent)event)
<a name="91821"> </a>                        .getReceiveStream();
<a name="91827"> </a>
<a name="91828"> </a>                Participant part = stream.getParticipant();
<a name="91829"> </a>
<a name="91830"> </a>                if (part != null) cname = part.getCNAME();
<a name="91831"> </a>
<a name="91832"> </a>                // get a handle over the ReceiveStream datasource
<a name="91833"> </a>                DataSource dsource = stream.getDataSource();
</pre>
</font></td>
  </tr>
  <tr>
    <td><font face="Palatino, Times New Roman, Times, serif"><pre>
<a name="91846"> </a>                // create a player by passing datasource to the 
<a name="91847"> </a>                // Media Manager
<a name="91575"> </a>                newplayer = Manager.createPlayer(dsource);
<a name="91576"> </a>                System.out.println("created player " + newplayer);
<a name="91577"> </a>            } catch (Exception e) {
<a name="91578"> </a>                System.err.println("NewReceiveStreamEvent exception " 
<a name="91579"> </a>                                   + e.getMessage());
<a name="91580"> </a>                return;
<a name="91581"> </a>            }
<a name="91582"> </a>
<a name="91583"> </a>            if (newplayer == null) return;
<a name="91584"> </a>
<a name="91585"> </a>            playerlist.addElement(newplayer);
<a name="91586"> </a>            newplayer.addControllerListener(this);
<a name="91587"> </a>           
<a name="91588"> </a>            // send this player to player GUI
<a name="91589"> </a>            playerWindow = new RTPPlayerWindow( newplayer, cname);
<a name="91590"> </a>        }
<a name="91591"> </a>    }
<a name="91858"> </a>    public void controllerUpdate( ControllerEvent evt)
<a name="91859"> </a>    {
<a name="91860"> </a>        // get a handle over controller, remove it from the player
<a name="91861"> </a>        // list.
<a name="91862"> </a>        // if player list is empty, close the sesssion manager.
<a name="91863"> </a>        
<a name="91864"> </a>        if ((evt instanceof ControllerClosedEvent) ||
<a name="91865"> </a>            (evt instanceof ControllerErrorEvent) ||
<a name="91866"> </a>            (evt instanceof DeallocateEvent)){
<a name="91867"> </a>            Player p = (Player)evt.getSourceController();
<a name="91868"> </a>
<a name="91869"> </a>            if (!terminatedbyClose){
<a name="91870"> </a>                if (playerlist.contains(p))
<a name="91871"> </a>                    playerlist.removeElement(p);
<a name="91872"> </a>                if ((playerlist.size() == 0) &amp;&amp; (mgr != null))
<a name="91873"> </a>                    mgr.closeSession("All players are closed");
<a name="91874"> </a>            }
<a name="91875"> </a>        }
<a name="91876"> </a>    }
<a name="91877"> </a>    
<a name="91878"> </a>    public void closeManager()
<a name="91879"> </a>    {
<a name="91880"> </a>        terminatedbyClose = true;
<a name="91881"> </a>    
<a name="91882"> </a>        // first close all the players
<a name="91883"> </a>        for (int i = 0; i &lt; playerlist.size(); i++) {
<a name="91884"> </a>            ((Player)playerlist.elementAt(i)).close();
<a name="91885"> </a>        }
<a name="91886"> </a>        if (mgr != null) {
<a name="91887"> </a>            mgr.closeSession("RTP Session Terminated");
<a name="91888"> </a>            mgr = null;
<a name="91889"> </a>        }
<a name="91890"> </a>    }
</pre>
</font></td>
  </tr>
  <tr>
    <td><font face="Palatino, Times New Roman, Times, serif"><pre>
<a name="91898"> </a>    class RTPPlayerWindow extends PlayerWindow 
<a name="91899"> </a>    {
<a name="91629"> </a>        public RTPPlayerWindow( Player player, String title) 
<a name="91630"> </a>        {
<a name="91631"> </a>            super(player);
<a name="91632"> </a>            setTitle(title);
<a name="91633"> </a>        }
<a name="91634"> </a>        public void Name(String title){
<a name="91635"> </a>            setTitle(title);
<a name="91636"> </a>        }
<a name="91637"> </a>    }
<a name="91638"> </a>}
</pre>
</font></td>
  </tr>
</table>



</strong><br></font>
</blockquote>
<br clear="all">
<hr>
<a href="JMFTOC.html">CONTENTS</a> | 
<a href="JMFApp-Controller.html">PREV </a> |
<a href="JMFGlossary.html">NEXT</a> |
<a href="JMFIX.html">INDEX</a></td>
<br>
<hr>
<em>
<a href="copyright.html">Copyright</a> &copy;
1998-1999 Sun Microsystems, Inc. All Rights Reserved.
</em>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -