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

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

?? rtptransmit.java

?? rtp發送端
?? JAVA
字號:
package	RTPTransmit;
import java.io.*;
import java.awt.Dimention;
import java.net.InetAddress;
import javax.media.*;
import javax.media.protocol.*;
import javax.media.protocol.DataSource;
import javax.media.format.*;
import javax.media.control.TrackControl;
import javax.media.rtp.*;
public class RTPTransmit
{
	private MediaLocator locator;
	private String	ipAddress;
	private int portBase;
	
	private Processor processor = null;
	private RTPManager rtpMgrs[];
	private DataSource DataOutput = null;
	
	public RTPTransmit(MediaLocator locator,String	ipAddress,String pb,Format iformat)
	{
		this.locator = locator;
		this.ipAddress = ipAddress;
		Integer integer =  Integer.valueOf(pb);
		if(integer!=null)
			this.portBase = integer.intValue();
			
	}
	
	public synchronized String start()
	{
		String result;
		result = createProcessor();
		
		if(result != null)
			return result;
			
		result = createTransmitter();
		
		if(result != null)
		{
			processor.close();
			processor = null;
			return result;	
		}
		
		processor.start();
		
		return null;	
	}
	
	public String createProcessor()
	{
		if(locator == null)
			return	"locator is null";
			
		DataSource	ds;
		
		try
		{
			ds = javax.media.Manager.createDataSource(locator);	
		}
		catch (Exception e)
		{	
			return "Couldn't create DataSource";
		}
		
		try
		{
			processor = javax.media.Manager.createProcessor(ds);	
		}
		catch (NoPrecessorException npe)
		{	
			return "Couldn't create processor";
		}
		catch (IOException ioe)
		{
			return "IOException creating processor";	
		}
		
		boolean result = waitForState(processor,Processor.Configured);
		
		if(result == false)
			return "Couldn't configure processor";
			
		TrackControl [] tracks = processor.getTrackControls();
		
		if(tracks == null ||tracks.length<1)
			return "Couldn't find tracks in processor";
			
		ContentDescriptor cd = new ContentDescriptor(ContentDescriptor.RAW_RTP);
		
		processor.setContentDescriptor(cd);
		
		Format supported[];
		
		Format chosen = null;
		
		boolean atLeastOneTrack = false;
		
		for(int i=0;i<tracks.length;i++)
		{
			Format iformat = tracks[i].getFormat();
			if(tracks[i].isEnable())
			{
				supported = tracks[i].getSupportedFormats();
				
				if(supported.length>0)
				{
					if(supported[0] instanceof VideoFormat)
					{
						chosen = checkForVideoSizes(tracks[i].getFormat(),supported[0]);	
					}
					else
						chosen = supported[0];
						
					tracks[i].setFormat(chosen);
					System.err.println("Track "+i+" is set to transmit as:");
					System.err.println(""+chosen);
					
					atLeastOneTrack = true;					
				}
				else
					tracks[i].setEnabled(false);					
			}
			else
				tracks[i].setEnabled(false);
		
		}
		
		if(!atLeastOneTrack)
			return "Couldn't set any of the tracks to a valid RTP format";
		
		
		result = waitForState(processor,Controller.Realized);
		
		if(result == false)
			return "Couldn't realize processor";
			
		DataOutput = precessor.getDataOutput();
		
		return null;
	}
	
	
	private String createTransmitter()
	{
		PushBufferDataSource pbds = (PushBufferDataSource)DataOutput;
		PushBufferStream pbss[] = pbds.getStreams();
		
		rtpMgrs = new RTPManager[pbss.length];
		
		for(int i=0;i<pbss.length;i++)
		{
			try
			{
				rtpMgrs[i] = RTPManager.newInstance();
				int port = portBase +2*i;
				
				InetAddress ipAddr = InetAddress.getByName(ipAddress);
				
				SessionAddress localAddr = new 	SessionAddress(InetAddress.getLocalHost(),port);
				
				SessionAddress destAddr = new 	SessionAddress(ipAddr,port);
				
				rtpMgrs[i].initialize(localAddr);
				
				rtpMgrs[i].addTarget(destAddr);
				
				System.err.println("Created RTP session:"+ipAddress+""+port);
				
				SendStream sendStream = rtpMgrs[i].createSendStream(DataOutput,i);
				
				sendStream.start();
				
			}
			catch(Exception e)
			{
				return e.getMessage();
			}	
		}
		
		return null;
	}
	
	
	Format checkForVideoSizes(Format original,Format supported)
	{
		int width,height;
		Dimension size = ((VideoFormat)original).getSize();
		
		Format jpegFmt = new Format(VideoFormat.JPEG_RTP);
		Format H263Fmt = new Format(VideoFormat.H263_RTP);
		
		if(supported.matches(jpegFmt))
		{
			width = size.width % 8 == 0?size.width:((int)(size.width/8)*8);
			height = size.height % 8 == 0?size.height:((int)(size.height/8)*8);	
		}
		else if(supported.matches(h263Fmt))
		{
			if(size.width<=128){width = 128;height = 96;}
			else if(size.width<=176){width = 176;height = 144;}
			else{width = 352;height = 288;}		
		}
		else
		{
			return supported;	
		}
		
		return (new VideoFormat(null,new Dimension(width,height),Format.NOT_SPECIFIED,null,Format.NOT_SPECIFIED)).intersects(supported);		
	}
	
	
	public void stop()
	{
		synchronized(this)
		{
			if(precessor != null)
			{
				precessor.stop();
				precessor.close();
				
				precessor = null;
				
				for(int i=0;i<rtpMgrs.length;i++)
				{
					rtpMgrs[i].removeTargets("Session ended.")
					rtpMgrs[i].dispose();	
				}	
			}	
		}	
	}
	
/*-------------------以下兩個變量為對處理器狀態改變的處理服務--------------*/

	private Integer stateLock = new  Integer(0);
	
	private boolean failed = false;
	
	Integer getstateLock()
	{
		return 	stateLock;
	}


	void setFailed()
	{
		failed = true;	
	}
	
	private synchronized boolean waitForState(Processor p,int state)
	{
		p.addControllerListener(new StateListener());
		
		failed = false;
		
		if(state == Processor.Configured)
		{
			p.configure();	
		}
		else if(state == Processor.Realized)
		{
			p.realized();	
		}
		
		while(p.getState() < state&&!failed)
		{
			synchronized (getstateLock())
			{
				try
				{
					getstateLock().wait();	
				}
				catch (InterruptedException ie)
				{	
					return false;
				}	
			}	
		}
		
		if(failed)
			return false;
		else
			return true;			
	}
	
/*-------------------內部監聽類:處理器的狀態監聽器--------------*/

	class StateListener implements ControllerListener
	{
		public void ControllerUpdate(ControllerEvent ce)
		{
			if(ce instanceof ControllerClosedEvent)
				setFailed();
				
			if(ce instanceof ControllerEvent)
			{
				synchronized (getStateLock())
				{
					getStateLock().notifyAll();	
				}					
			}	
		}	
	}			
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产福利一区二区三区视频| 欧美午夜理伦三级在线观看| 国产精品国产精品国产专区不蜜| 欧美精品一级二级| 春色校园综合激情亚洲| 丝袜诱惑亚洲看片| 一区二区三区在线播| 欧美大片在线观看| 欧美日韩和欧美的一区二区| 91在线国产福利| 国产1区2区3区精品美女| 青娱乐精品在线视频| 99久久精品国产精品久久| 麻豆专区一区二区三区四区五区| 欧美日韩国产大片| 国产亚洲欧美激情| 欧美年轻男男videosbes| av一区二区久久| 国产成人在线色| 亚洲成人动漫在线观看| 亚洲黄色在线视频| 国产精品高潮呻吟| 亚洲欧洲日韩在线| 国产精品久久久久aaaa| 国产欧美精品一区二区三区四区| 精品国产一区久久| 久久女同精品一区二区| 精品少妇一区二区三区在线视频| 日韩一区二区三区在线| 亚洲福利视频一区| 国产一区二区三区观看| av激情成人网| www.欧美日韩| 精品蜜桃在线看| 91精品国产综合久久福利| 欧美视频在线观看一区| 欧美一级一区二区| 欧美成人精品高清在线播放| 久久综合丝袜日本网| 精品日产卡一卡二卡麻豆| 久久久久久毛片| 欧美国产日韩亚洲一区| 亚洲黄色小视频| 肉色丝袜一区二区| 国产福利不卡视频| 国产精品1区2区3区在线观看| 国产99久久久国产精品潘金网站| 久久精品国产亚洲高清剧情介绍 | 乱一区二区av| 久久超碰97人人做人人爱| 成人免费视频国产在线观看| 日本欧美在线观看| 国产成人欧美日韩在线电影| 国产成人av福利| 欧美性色aⅴ视频一区日韩精品| 欧美日韩性生活| 国产午夜精品一区二区| 亚洲精品综合在线| 久久国产剧场电影| 成人黄页毛片网站| 欧美性一区二区| 久久蜜桃香蕉精品一区二区三区| 中文字幕制服丝袜成人av| 亚洲一区电影777| 精品嫩草影院久久| 日韩美女在线视频| 中文字幕一区二区三区四区不卡| 夜夜夜精品看看| 精品一区二区三区视频| 欧美三级在线看| 国产欧美一区二区在线| 亚洲高清视频在线| 99久久久精品| 日韩欧美在线不卡| 亚洲主播在线观看| 国产白丝精品91爽爽久久| 欧美三级欧美一级| 2024国产精品视频| 天天射综合影视| 欧美在线免费视屏| 国产精品国产三级国产三级人妇| 日本欧美一区二区在线观看| 91麻豆精品在线观看| 国产偷v国产偷v亚洲高清| 青青草97国产精品免费观看无弹窗版| 91最新地址在线播放| 日韩精品一区二区三区蜜臀| 三级在线观看一区二区| 欧美一区二区大片| 国产乱码精品一区二区三| 国产清纯美女被跳蛋高潮一区二区久久w| 麻豆国产一区二区| 亚洲国产高清在线| 日本久久电影网| 日韩成人免费电影| 亚洲精品国产无天堂网2021| 91美女在线观看| 天堂一区二区在线| 久久综合狠狠综合| 99视频精品在线| 亚洲妇女屁股眼交7| 日韩精品影音先锋| 97久久精品人人爽人人爽蜜臀| 亚洲精选视频免费看| 欧美一区二区免费观在线| 国产精品99久久久久久久vr| 亚洲视频在线一区观看| 欧美日韩国产综合一区二区| 激情成人综合网| 亚洲精选视频在线| 精品国产91久久久久久久妲己 | 国产精品久久久久婷婷| 欧美性猛交xxxx乱大交退制版 | 亚洲欧美一区二区在线观看| 在线综合亚洲欧美在线视频| 亚洲精品国产一区二区精华液| 欧美日本在线视频| 成人深夜在线观看| 天天亚洲美女在线视频| 国产精品色哟哟| 69精品人人人人| 99精品国产热久久91蜜凸| 蜜桃久久久久久| 一区二区在线观看免费视频播放| 精品理论电影在线观看 | 亚洲国产va精品久久久不卡综合| 日韩精品最新网址| 欧美影片第一页| 风间由美一区二区av101| 日韩成人免费电影| 亚洲欧美精品午睡沙发| 久久久久久9999| 欧美三级午夜理伦三级中视频| 国产精品影视在线| 日韩av一级片| 亚洲在线成人精品| 国产精品国产a| 国产日韩欧美激情| 欧美精品一区二区高清在线观看| 欧美影院一区二区三区| 色哦色哦哦色天天综合| 成人黄色网址在线观看| 国产乱码精品一区二区三区av| 日本伊人午夜精品| 午夜久久久久久久久久一区二区| 18欧美亚洲精品| 成人免费在线播放视频| 欧美激情一区二区三区蜜桃视频| 久久婷婷国产综合精品青草| 91麻豆精品国产91久久久久| 欧美视频一区二区在线观看| 在线观看日韩毛片| 欧美亚洲一区二区在线| 色综合久久久久综合体桃花网| av成人免费在线| 97久久精品人人爽人人爽蜜臀| 99热99精品| 色视频成人在线观看免| 色综合久久久久网| 欧美午夜精品电影| 欧美日韩你懂得| 欧美一级二级三级乱码| 日韩一区二区电影网| 国产精品理论在线观看| 久久日韩精品一区二区五区| 日韩免费高清电影| 色综合久久99| av亚洲精华国产精华| 91视频精品在这里| 色哟哟亚洲精品| 欧美日韩一区 二区 三区 久久精品| 欧洲精品视频在线观看| 欧美日本高清视频在线观看| 欧美一区二区三区播放老司机 | 一区二区三区中文字幕| 亚洲成人免费在线观看| 轻轻草成人在线| 国产激情视频一区二区三区欧美| 粉嫩一区二区三区性色av| 一本一本大道香蕉久在线精品 | 69堂亚洲精品首页| 欧美不卡一区二区三区四区| 国产精品色婷婷| 亚洲福利视频一区二区| 蜜臀av国产精品久久久久| 精品在线播放免费| 欧美电影免费提供在线观看| 国产在线国偷精品免费看| 久久国产麻豆精品| 成人爽a毛片一区二区免费| 欧美午夜精品一区二区三区| 欧美一区二区视频在线观看2022| 久久奇米777| 亚洲在线观看免费视频| 国产一区在线精品| 欧美偷拍一区二区| 久久蜜桃av一区精品变态类天堂| 亚洲与欧洲av电影| 国产馆精品极品| 日韩一区国产二区欧美三区|