亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rtpreceive.java

?? rtp接收端
?? JAVA
字號:
package	RTPReceive;
import java.awt.*;
import java.net.*;
import java.awt.event.*;
import java.util.Vector;
import javax.media.*;
import javax.media.rtp.*;
import javax.media.rtp.event.*;
import javax.media.protocol.DataSource;
import javax.media.control.BufferControl;

public class RTPReceive implements ReceiveStreamListener,SessionListener,ControlListener
{
	String session[] = null;
	
	RTPManager mgrs[] = null;
	
	Vector playerWindows = null;
	
	boolean dataReceived = false;
	
	Object dataSync = new Object();
	
	public RTPReceive(String session[])
	{
		this.sessions = sessions;	
	}
	
	
	protected boolean initialize()
	{
		try
		{
			playerWindows = new Vector();
			
			mgrs = new RTPManager[sessions.length];
			
			SessionLabel session;
			
			for(int i =0; i < sessions.length;i++)
			{
				try{session = new SessionLabel(sessions[i]);}
				catch(IllegalArgumentException e)
				{
					System.err.println("Failed to parse the session address given:" + session[i]);
					return false;	
				}
				
				
				System.err.println(" - open RTP session for: addr: " + session.addr + " port: " + session.port);
				
				mgrs[i] = (RTPManager)RTPManager.newInstance();
				
				mgrs[i].addSessionListenter(this);
				
				mgrs[i].addReceiveStreamListenter(this);
				
				InetAddress ipAddr = InetAddress.getByName(ipAddress);
				
				SessionAddress localAddr = null;
				
				SessionAddress destAddr = null;
				
				if(ipAddr.isMulticastAddress())
				{
					localAddr = new SessionAddress(ipAddr,session.port);
					destAddr = new SessionAddress(ipAddr,session.port);		
				}
				else
				{
					localAddr = new SessionAddress(InetAddress.getLocalHost(),session.port);
					destAddr = 	new SessionAddress(ipAddr,session.port);
				}
				
				mgrs[i].initialize(localAddr);
				
				BufferControl bc = (BufferControl)mgrs[i].getControl("javax.media.control.BufferControl");
				
				if(bc != null)
					bc.setBufferLength(350);
					
				mgrs[i].addTarget(destAddr);							
			}
		}
		catch(Exception e)
		{
			System.err.println("Cannot create the RTP Session:" + e.getMessage());
			return false;
		}
		
		
		long then = System.currentTimeMillis();
		
		long waitingPeriod = 60000;
		
		try
		{
			synchronized (dataSync)
			{
				while(!dataReceived&&System.currentTimeMillis() - then < waitingPeriod)	
				{
					if(!dataReceived)
						System.err.println(" - Waiting for RTP data to arrive ... ");
					
					dataSync.wait(1000);	
				}
			}
		}
		catch(Exception e){}
		
		if(!dataReceived)
		{
			System.err.println(" No RTP data was received. ");
			close();
			return false;	
		}
		
		return true;				
	}
	
	
	protected void close()
	{
		for(int i =0; i < playerWindows.seze();i++)
		{
			try
			{
				((playerWindows)playerWindows.elementAt(i)).close();		
			}
			catch(Exception e){}			
		}
		
		
		playerWindows.removeAllElements();
		
		for(int i =0; i < mgrs.length;i++)
		{
			if(mgrs[i] != null)
			{
				mgrs[i].removeTargets("Closing session from RTPReceive");
				mgrs[i].dispose();
				mgrs[i] = null;	
			}	
		}	
	}
	
	
	public boolean isDone()
	{
		return 	playerWindows.size() == 0;
	}
	
	PlayerWindow find(Player p)
	{
		for(int i =0; i < playerWindows.seze();i++)
		{
			PlayerWindow pw = (PlayerWindow)playerWindows.elementAt(i);
			if(pw.player == p) return pw;	
		}
		
		return null;	
	}
	
	
	PlayerWindow find(ReceiveStream strm)
	{
		for(int i =0; i < playerWindows.seze();i++)
		{
			PlayerWindow pw = (PlayerWindow)playerWindows.elementAt(i);
			if(pw.stream == strm) return pw;	
		}
		
		return null;	
	}
	
	
/*-------------------下面的方法實現了ReceiveStreamListener監聽接口--------------*/
	public synchronized void update(ReceiveStreamEvent evt)
	{
		RTPManager mgr = (RTPManager)evt.getSource();
		
		Participant participant = evt.getParticipant();
		
		ReceiveStream stream = evt.getReceiveStream();
		
		if(evt instanceof NewReceiveStreamEvent)
		{
			try
			{
				stream = ((newReceiveStreamEvent)evt).getReceiveStream();
				
				DataSource ds = stream.getDataSource();
				
				RTPControl ctl = (RTPControl)ds.getControl("javax.media.rtp.RTPControl");
				
				if(ctl != null)
					System.err.println(" - Received new RTP stream: " + ctl.getFormat());
				else
					System.err.println(" - Received new RTP stream");
					
				if(participant == null)
					System.err.println(" The sender of this stream had yet to be identified.");
				else
					System.err.println(" The stream comes from: " + participant.getCNAEM());
					
				Player p = javax.media.Manager.createPlayer(ds);
				
				if(p == null) return;
				
				p.addControllerListener(this);
				
				p.realize();
				
				PlayerWindow pw = new PlayerWindow(p,stream);
				
				playerWindows.addElement(pw);
				
				synchronized (dataSync)
				{
					dataReceived = true;
					
					dataSync.notifyAll();	
				}					
			}	
			catch(Exception e)
			{
				System.err.println(" NewReceiveStreamEvent exception " + e.getMessage());
				return;
			}	
		}
		else if(evt instanceof StreamMappedEvent)
		{
			if(	stream != null && stream.getDataSource() != null)
			{
				DataSource ds = stream.getDataSource();
				
				RTPControl ctl = (RTPControl)ds.getControl("javax.media.rtp.RTPControl");
				
				System.err.println(" - The previously unidentified stream ");
				
				if(ctl != null)
					System.err.println("  " + ctl.getFormat());
				
				System.err.println(" had now been identified as sent by: " + participant.getCNAEM());	
			}
		}
		else if(evt instanceof ByeEvent)
		{
			System.err.println(" - Got \"bye\" from: " + participant.getCNAEM());
			
			PlayerWindow pw = find(stream);
			
			if(pw != null)
			{
				pw.close();
				
				playerWindows.removeElement(pw);	
			}	
		}			
	}
	
	
/*-------------------下面的方法實現了SessionListener監聽接口--------------*/
	public synchronized void update(SessionEvent evt)
	{
		if(evt instanceof NewParitcipantEvent)
		{
			Paritcipant p = ((NewParitcipantEvent)evt).getParitcipant();
			
			System.err.println(" -A new paritcipant had just joined: " + p.getCNAEM());				
		}	
	}
	

/*-------------------下面的方法實現了ControllerListener監聽接口--------------*/	
	public synchronized void controllerupdate(ControllerEvent ce)
	{
		Player p = (Player)ce.getSourceController();
		
		if(p == null) return;
		
		if(ce instanceof RealizeCompleteEvent)
		{
			PlayerWindow pw = find(p);
			
			if(pw == null)
			{
				System.err.println(" Internal error! ");
				
				return;	
			}
			
			pw.initialize();
			
			pw.setVisible(true);
			
			p.start();
		}
		
		if(ce instanceof  ControllerErrorEvent)
		{
			p.removeControllerListener(this);
			
			PlayWindow pw = find(p);
			
			if(pw != null)
			{
				pw.close();
				
				playerWindows.removeElement(pw);	
			}
			
			System.err.println(" RTPReceive internal error: " + ce);	
		}	
	}
	
	
/*-------------------下面為內部類:解析回話地址--------------*/

	class SessionLabel
	{
		public String addr = null;
		
		public int port;
		
		SessionLabel(String session) throws IllegalArgumentException
		{
			int off;
			
			String portStr = null;
			
			if(session != null && session.length() > 0)
			{
				while (session.length() > 1 && session.charAt(0) == '/')
					session = session.substring(1);
					
				off = session.indexOf('/');
				
				if(off == -1)
				{
					if (!session.equals(""))
						addr = session;	
				}
				else
				{
					addr = 	session.substring(0,off);
					
					session = session.substring(off+1);
					
					off = session.indexOf('/');
					
					if(off == -1)
					{
						if (!session.equals(""))
							portStr = session;	
					}
					
				}
					
			}
			
			if(addr == null)
				throw new IllegalArgumentException();
				
			if (portStr != null)
			{
				try
				{
					Integer iinteger = Integer.valueOf(portStr);
					
					if(iinteger != null) port = iinteger.intValue();
				}
				catch(Throwable t)
				{
					throw new IllegalArgumentException();
				}					
			}
			else
				throw new IllegalArgumentException();			
		}	
	}	
	
/*-------------------下面為內部類:播放窗口類--------------*/	
	class PlayerWindow extends Frame
	{
		Player player;
		
		ReceiveStream stream;
		
		PlayerWindow(Player p,ReceiveStream strm)
		{
			player = p;	stream = strm;
		}
		
		public void initialize()
		{
			add(new PlayPanel(player));	
		}
		
		public void addNotify()
		{
			super.addNotify();
			pack();	
		}
		
		public void close()
		{
			player.close();setVisible(false);dispose();	
		}	
	}
	
	
/*-------------------下面為內部類:播放器組件類--------------*/	
	class PlayPanel extends Panel
	{
		Componet vc,cc;
		
		PlayPanel(Player P)
		{
			SETLayout(new BorderLayout());
			
			if((vc = p.getVisualComponet())	!= null)
				add("Center",vc);
				
			if((cc = p.getControlPanelComponet()) != null)
				add("South",cc);				
		}
			
	}
	
	public static void main(String argv[])
	{
		if(argv.length == 0)
			prUsage();
			
		RTPReceive rtpReceive = new RTPReceive(argv);
		
		if(!rtpReceive.initialize())
		{
			System.err.println(" Fialed to initialize the session.");
			
			System.exit(-1);	
		}
		
		try
		{
			while (!rtpReceive.isDone())
				Thread.sleep(1000);			
		}
		catch(Exception e){}
		
		System.err.println("Exiting RTPReceive.");		
	}
	
	
	static void prUsage()
	{
		System.err.println("Usage: RTPReceive <session> <session> ... ");
		
		System.err.println("   <session>: <address>/<port>");
		
		System.exit(0);	
	}		
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人性色生活片| 日韩免费高清电影| 成人晚上爱看视频| 美女免费视频一区| 毛片av一区二区| 久久精品99国产精品| 日本特黄久久久高潮| 日本欧洲一区二区| 久久精品国产一区二区三区免费看| 日韩高清中文字幕一区| 日韩电影网1区2区| 另类小说视频一区二区| 精品系列免费在线观看| 国产精品影视在线观看| 成人午夜又粗又硬又大| 成人精品亚洲人成在线| 91伊人久久大香线蕉| 一本久久a久久精品亚洲| 在线观看成人免费视频| 欧美人妇做爰xxxⅹ性高电影| 欧美麻豆精品久久久久久| 7777精品伊人久久久大香线蕉 | 日本丰满少妇一区二区三区| 99精品视频在线观看免费| 91在线精品一区二区| 91国偷自产一区二区开放时间 | 久久综合久久99| 亚洲激情在线播放| 午夜不卡av在线| 免费视频一区二区| 日韩国产欧美在线播放| 久国产精品韩国三级视频| 国产成人午夜精品影院观看视频 | 91精品国产高清一区二区三区蜜臀 | 欧美体内she精高潮| 日韩三级视频在线观看| 久久精品视频一区| 一区二区三区中文在线观看| 天堂va蜜桃一区二区三区漫画版| 久久99精品久久久| 97精品视频在线观看自产线路二| 欧美日韩一区精品| 久久久久久黄色| 亚洲欧美日韩国产一区二区三区| 五月激情丁香一区二区三区| 国产一区二区导航在线播放| 91视频免费播放| 精品伦理精品一区| 成人免费的视频| 欧美精品三级日韩久久| 久久亚洲一区二区三区四区| 日韩一区欧美一区| 奇米影视在线99精品| 成人高清免费在线播放| 91精品国产91热久久久做人人| 国产欧美日韩不卡| 日韩国产欧美一区二区三区| 成人涩涩免费视频| 日韩一区二区三区电影| 成人免费一区二区三区视频| 老司机精品视频导航| 91年精品国产| 久久久精品tv| 日韩av一区二区三区四区| aaa亚洲精品一二三区| 日韩精品专区在线影院重磅| 中文字幕中文乱码欧美一区二区| 蜜桃视频一区二区| 欧美曰成人黄网| 国产欧美日韩麻豆91| 日本不卡1234视频| 欧美综合色免费| 中文字幕国产精品一区二区| 美国十次综合导航| 欧美午夜视频网站| 国产精品久久99| 国产在线观看一区二区| 欧美电影在哪看比较好| 亚洲视频一区二区在线| 国产精品白丝jk白祙喷水网站| 欧美精品久久久久久久多人混战| 亚洲美腿欧美偷拍| 成人aaaa免费全部观看| 国产喂奶挤奶一区二区三区| 美女视频一区在线观看| 91麻豆精品国产自产在线观看一区 | 精品国产露脸精彩对白| 午夜影院久久久| 欧洲亚洲国产日韩| 亚洲欧美一区二区久久| 国产黄色精品网站| 精品电影一区二区| 麻豆91在线观看| 91精品国产高清一区二区三区蜜臀| 亚洲精品视频在线观看网站| www.久久精品| 中文字幕中文在线不卡住| 成人一区二区三区| 中文字幕第一区综合| 福利一区二区在线观看| 中文字幕第一区| 粉嫩av一区二区三区在线播放 | 欧美性欧美巨大黑白大战| 亚洲四区在线观看| 91美女片黄在线观看| 亚洲人被黑人高潮完整版| 97精品国产97久久久久久久久久久久| 国产精品久久久久久亚洲伦| 成人精品鲁一区一区二区| 国产精品网站导航| 91亚洲永久精品| 国产在线不卡视频| 久久精品人人做人人综合 | 日韩美女视频在线| 极品少妇一区二区三区精品视频| 欧美一区二区女人| 久久99久久久久| 久久久精品tv| 99re在线精品| 久久精品水蜜桃av综合天堂| 日韩无一区二区| 91美女视频网站| 99久久婷婷国产精品综合| 91亚洲精品一区二区乱码| 91久久精品国产91性色tv| 欧美日本精品一区二区三区| 免费精品视频在线| 日韩理论在线观看| 中文字幕一区二区视频| 国产日韩av一区| 亚洲欧洲韩国日本视频| 亚洲免费在线视频一区 二区| 亚洲国产精品99久久久久久久久 | 中文字幕免费观看一区| 欧美经典三级视频一区二区三区| 久久久久久电影| 亚洲伦理在线免费看| 首页国产丝袜综合| 蜜桃传媒麻豆第一区在线观看| 国产最新精品免费| 色老头久久综合| 91精品国产综合久久久久| 日韩网站在线看片你懂的| 精品视频1区2区3区| 91香蕉视频mp4| 亚洲精品美国一| 在线电影一区二区三区| 国产在线不卡一卡二卡三卡四卡| 最新高清无码专区| 91精品国产综合久久久久| 成人激情综合网站| 午夜影院在线观看欧美| 国产网红主播福利一区二区| 欧美吞精做爰啪啪高潮| 韩国精品主播一区二区在线观看| 亚洲色欲色欲www| 91精品国产综合久久小美女| 国产福利91精品| 午夜国产不卡在线观看视频| 国产欧美一区二区三区网站| 欧美日韩成人激情| 成人免费av网站| 美洲天堂一区二卡三卡四卡视频| 日本一区二区三区国色天香| 337p亚洲精品色噜噜| 9l国产精品久久久久麻豆| 久久草av在线| 亚洲一区在线观看免费 | 不卡的av电影在线观看| 视频一区欧美日韩| 国产精品成人免费| 26uuu精品一区二区三区四区在线| 91官网在线免费观看| 极品美女销魂一区二区三区免费| 亚洲精品中文在线| 久久精品网站免费观看| 日韩一区二区三区四区| 色偷偷久久人人79超碰人人澡| 国产尤物一区二区| 日本三级亚洲精品| 亚洲一区二区欧美日韩| 中文字幕在线播放不卡一区| 精品91自产拍在线观看一区| 欧美日韩国产一级片| 色欧美乱欧美15图片| 国产91精品久久久久久久网曝门 | 欧美三级电影在线观看| 99精品久久免费看蜜臀剧情介绍| 黄色精品一二区| 免费在线一区观看| 天天综合色天天综合色h| 亚洲影院免费观看| 中文字幕亚洲在| 中文字幕成人在线观看| 久久久久国产成人精品亚洲午夜| 欧美一卡2卡3卡4卡| 69堂精品视频| 在线电影一区二区三区| 欧美日本乱大交xxxxx| 精品视频在线看|