📄 rtpplayerapplet.java
字号:
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(); try{ destaddr = InetAddress.getByName(destaddrstr); }catch (UnknownHostException e){ System.err.println("inetaddress " + e.getMessage()); e.printStackTrace(); } SessionAddress sessaddr = new SessionAddress(destaddr, port, destaddr, port+1); 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 // call initSession() and startSession() of the RTPsessionManager try{ mymgr.initSession(localaddr, mymgr.generateSSRC(), userdesclist, 0.05, 0.25); mymgr.startSession(sessaddr,1,null); }catch (SessionManagerException e){ System.err.println("RTPPlayerApplet: RTPSM Exception " + e.getMessage()); e.printStackTrace(); return null; }catch (IOException e){ System.err.println("RTPPlayerApplet: IO Exception " + e.getMessage()); e.printStackTrace(); return null; } return mymgr; } }// end of class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -