This is a problem connected to the code in the following java file. http://java.sun.com/products/java-media/jmf/2.1.1/samples/samples/RTPPlayerApplet.java Inspite of downloading the latest version of jmf and jdk , i am not able to compile the rtpapplet , reason being class ParticipantListWindow not found, can u just help me out in compilling the same --------------------------------------- CODE --------------------- <pre> import java.applet.Applet; import javax.media.rtp.*; import javax.media.rtp.rtcp.*; import javax.media.rtp.event.*; import com.sun.media.rtp.RTPSessionMgr; import java.io.*; import java.awt.*; import java.util.Vector; import java.net.*; import java.awt.event.*; import java.lang.String; import javax.media.*; import javax.media.protocol.*; import com.sun.media.*; import com.sun.media.ui.*; import java.io.IOException; import java.lang.SecurityException; import rtp.*; // This RTP applet will allow a user to playback streams for one audio // session and one video session. Video and Audio RTP monitors are // also available for displaying RTCP statistics of this // session.Methods // StartSessionManager() will take care of starting the session and // registering this applet as an RTP Session Listener. // Method RTPSessionUpdate() will process all the RTPEvents sent by // the SessionManager. public class RTPPlayerApplet extends Applet implements ControllerListener, ReceiveStreamListener, ActionListener{
public void init(){ setLayout( new BorderLayout() ); Panel buttonPanel = new Panel(); buttonPanel.setLayout( new FlowLayout() ); add("North", buttonPanel); media = getParameter("video"); if (media.equals("On")){ address = getParameter("videosession"); portstr = getParameter("videoport"); StartSessionManager(address, StrToInt(portstr), "video"); if (videomgr == null){ System.err.println("null video manager "); return; } // this is the GUI for displaying the RTCP // statistics. This will not be displayed until the user // clicks on the RTP Monitor window //videogui = new ParticipantListWindow(videomgr); // add a button for the video RTP monitor videobutton = new Button("Video RTP Monitor"); videobutton.addActionListener(this); buttonPanel.add(videobutton); } media = getParameter("audio"); if (media.equals("On")){ address = getParameter("audiosession"); portstr = getParameter("audioport"); StartSessionManager(address, StrToInt(portstr), "audio"); if (audiomgr == null){ System.err.println("null audio manager"); return; } //audiogui = new ParticipantListWindow(audiomgr); // add a button for the audio RTP monitor audiobutton = new Button("Audio RTP Monitor"); audiobutton.addActionListener(this); buttonPanel.add(audiobutton); } }// end of constructor public void start(){ // The applet only controls the first video player by adding // its visual and control component to the applet canvas. Thus // only this player needs to be controlled when this applet is // swiched in browser pages etc. if (videoplayer != null){ videoplayer.start(); } if (playerlist == null) return; for (int i =0; i < playerlist.size(); i++){ Player player = (Player)playerlist.elementAt(i); if (player != null) new PlayerWindow(player); } } // applet has been stopped, stop and deallocate all the RTP players. public void stop(){ if (videoplayer != null){ videoplayer.close(); } if (playerlist == null) return; for (int i =0; i < playerlist.size(); i++){ Player player = (Player)playerlist.elementAt(i); if (player != null){ player.close(); } } } // applet has been destroyed by the browser. Close the Session // Manager. public void destroy(){ // close the video and audio RTP SessionManagers String reason = "Shutdown RTP Player";
public void actionPerformed(ActionEvent event){ Button button = (Button)event.getSource(); if ((button == videobutton) && (videomgr != null)) videogui = new ParticipantListWindow(videomgr); //videogui.Show(); if ((button == audiobutton) && (audiomgr != null)) audiogui = new ParticipantListWindow(audiomgr); //audiogui.Show(); }
public String getAddress(){ return address; }
public int getPort(){ // the port has to be returned as an integer return StrToInt(portstr); }
public String getMedia(){ return media; }
private int StrToInt(String str){ if (str == null) return -1; Integer retint = new Integer(str); return retint.intValue(); } public synchronized void controllerUpdate(ControllerEvent event) { Player player = null; Controller controller = (Controller)event.getSource(); if (controller instanceof Player) player =(Player)event.getSource();
if (player == null) return;
if (event instanceof RealizeCompleteEvent) { // add the video player's visual component to the applet if (( visualComponent = player.getVisualComponent())!= null){ width = visualComponent.getPreferredSize().width; height += visualComponent.getPreferredSize().height; if (panel == null) { panel = new Panel(); repositionPanel(width, height); panel.setLayout(new BorderLayout()); } panel.add("Center", visualComponent); panel.validate(); } // add the player's control component to the applet if (( controlComponent = player.getControlPanelComponent()) != null){ height += controlComponent.getPreferredSize().height; if (panel == null) { panel = new Panel(); panel.setLayout(new BorderLayout()); } repositionPanel(width, height); panel.add("South", controlComponent); panel.validate(); }
if (panel != null){ add("Center", panel); invalidate(); } } if (event instanceof SizeChangeEvent) { if (panel != null){ SizeChangeEvent sce = (SizeChangeEvent) event; int nooWidth = sce.getWidth(); int nooHeight = sce.getHeight();
// Add the height of the default control component if (controlComponent != null) nooHeight += controlComponent.getPreferredSize().height;
// Set the new panel bounds and redraw repositionPanel(nooWidth, nooHeight); } } validate(); } /** * The video/control component panel needs to be repositioned to sit * in the middle of the applet window. */ void repositionPanel(int width, int height) { panel.setBounds(0, 0, width, height); panel.validate(); } public void update( ReceiveStreamEvent event){ SessionManager source =(SessionManager)event.getSource(); Player newplayer = null; // create a new player if a new recvstream is detected if (event instanceof NewReceiveStreamEvent){ try{ ReceiveStream stream = ((NewReceiveStreamEvent)event).getReceiveStream(); DataSource dsource = stream.getDataSource(); newplayer = Manager.createPlayer(dsource); }catch (Exception e){ System.err.println("RTPPlayerApplet Exception " + e.getMessage()); e.printStackTrace(); } if (newplayer == null){ return; } // if this is the first video player, we need to listen to // its events. Add me as a ControllerListener before // starting the player if (source == videomgr){ if (videoplayer == null){ videoplayer = newplayer; newplayer.addControllerListener(this); newplayer.start(); } else{// controller listener and start is taken care of // in playerWindiow if (playerlist != null) playerlist.addElement((Object)newplayer); new PlayerWindow(newplayer); } }// if (source == videomgr) if (source == audiomgr){ if (playerlist != null) playerlist.addElement((Object)newplayer); new PlayerWindow(newplayer); } }// if (event instanceof NewReceiveStreamEvent)
if (event instanceof RemotePayloadChangeEvent){ // we received a payload change event. If a player was not // created for this ReceiveStream, create a player. If the // player already exists, RTPSM and JMF have taken care of // switching the payloads and we dont do anything. // If this is the first video player add me as the // controllerlistener before starting the player, else // just create a new player window. }
}// end of RTPSessionUpdate
private SessionManager StartSessionManager(String destaddrstr, int port, String media){ // this method create a new RTPSessionMgr and adds this applet // as a SessionListener, before calling initSession() and startSession() SessionManager mymgr = new RTPSessionMgr(); if (media.equals("video")) videomgr = mymgr; if (media.equals("audio")) audiomgr = mymgr; if (mymgr == null) return null; mymgr.addReceiveStreamListener(this); //if (media.equals("audio")) // EncodingUtil.Init((SessionManager)mymgr);
// for initSession() we must generate a CNAME and fill in the // RTP Session address and port String cname = mymgr.generateCNAME(); String username = "jmf-user"; SessionAddress localaddr = new SessionAddress();
SourceDescription[] userdesclist = new SourceDescription[4]; int i; for(i=0; i< userdesclist.length;i++){ if (i == 0){ userdesclist[i] = new SourceDescription(SourceDescription.SOURCE_DESC_EMAIL, "jmf-user@sun.com", 1, false); continue; } if (i == 1){ userdesclist[i] = new SourceDescription(SourceDescription.SOURCE_DESC_NAME, username, 1, false); continue; } if ( i == 2){ userdesclist[i] = new SourceDescription(SourceDescription.SOURCE_DESC_CNAME, cname, 1, false); continue; } if (i == 3){ userdesclist[i] = new SourceDescription(SourceDescription.SOURCE_DESC_TOOL, "JMF RTP Player v2.0", 1, false); continue; } }// end of for
Does anyone have the code for rtpclient.html or the directions on how to run this applet? Will it listen to a stream from JMStudio so I can see myself in a web cam on a different computer?
Thanks,
Siegfried
Siegfried Heintze
Ranch Hand
Joined: Aug 11, 2000
Posts: 359
posted
0
OK, here is what I got so far (see below). It is giving me this error. Can someone guide me on signing this applet and setting up the appropriate policy file?
Thanks!
Siegfried
Here is my attempt to recreate rtpclient.html
I agree. Here's the link: http://ej-technologies/jprofiler - if it wasn't for jprofiler, we would need to
run our stuff on 16 servers instead of 3.