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

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

?? rtspprotocolhandler.java

?? 一個j2me編寫的手機播放 rtsp協議傳輸流媒體文件的例子
?? JAVA
字號:
import java.util.Vector;
import java.io.InputStream;
import java.io.IOException;
import java.io.OutputStream;

public class RTSPProtocolHandler {

	// the address of the media file as an rtsp://... String
	private String address;

	// the inputstream to receive response from the server
	private InputStream is;

	// the outputstream to write to the server
	private OutputStream os;

	// the incrementing sequence number for each request
	// sent by the client
	private static int CSeq = 1;

	// the session id sent by the server after an initial setup
	private String sessionId;

	// the number of tracks in a media file
	private Vector tracks = new Vector(2);

	// flags to indicate the status of a session
	private boolean described, setup, playing;
	private boolean stopped = true;

	// constants
	private static final String CRLF = "\r\n";
	private static final String VERSION = "rtsp/1.0";
	private static final String TRACK_LINE = "a=control:trackID=";
	private static final String TRANSPORT_DATA =
	  "TRANSPORT: UDP;unicast;client_port=8080-8081";
	private static final String RTSP_OK = "RTSP/1.0 200 OK";

	// base constructor, takes the media address, input and output streams	public RTSPProtocolHandler(		String address, InputStream is, OutputStream os) {		this.address = address;
		this.is = is;
		this.os = os;
	}

	// creates, sends and parses a DESCRIBE client request
	public void doDescribe() throws IOException {

		// if already described, return
		if(described) return;

		// create the base command
		String baseCommand = getBaseCommand("DESCRIBE " + address);

		// execute it and read the response
		String response = doCommand(baseCommand);

		// the response will contain track information, amongst other things
		parseTrackInformation(response);

		// set flag
		described = true;
	}

	// creates, sends and parses a SETUP client request
	public void doSetup() throws IOException {

		// if not described
		if(!described) throw new IOException("Not Described!");

		// create the base command for the first SETUP track
		String baseCommand =
		  getBaseCommand(
				"SETUP " + address + "/trackID=" + tracks.elementAt(0));

		// add the static transport data
		baseCommand += CRLF + TRANSPORT_DATA;

		// read response
		String response = doCommand(baseCommand);

		// parse it for session information
		parseSessionInfo(response);

		// if session information cannot be parsed, it is an error
		if(sessionId == null)
		  throw new IOException("Could not find session info");

		// now, send SETUP commands for each of the tracks
		int cntOfTracks = tracks.size();
		for(int i = 1; i < cntOfTracks; i++) {
			baseCommand =
				getBaseCommand(
					"SETUP " + address + "/trackID=" + tracks.elementAt(i));
			baseCommand += CRLF + "Session: " + sessionId + CRLF + TRANSPORT_DATA;
			doCommand(baseCommand);
		}

		// this is now setup
		setup = true;
	}

	// issues a PLAY command
	public void doPlay() throws IOException {

		// must be first setup
		if(!setup) throw new IOException("Not Setup!");

		// create base command
		String baseCommand = getBaseCommand("PLAY " + address);

		// add session information
		baseCommand += CRLF + "Session: " + sessionId;

		// execute it
		doCommand(baseCommand);

		// set flags
		playing = true;
		stopped = false;
	}

	// issues a PAUSE command
	public void doPause() throws IOException {

		// if it is not playing, do nothing
		if(!playing) return;

		// create base command
		String baseCommand = getBaseCommand("PAUSE " + address);

		// add session information
		baseCommand += CRLF + "Session: " + sessionId;

		// execute it
		doCommand(baseCommand);

		// set flags
		stopped = true;
		playing = false;
	}

	// issues a TEARDOWN command
	public void doTeardown() throws IOException {

		// if not setup, nothing to teardown
		if(!setup) return;

		// create base command
		String baseCommand = getBaseCommand("TEARDOWN " + address);

		// add session information
		baseCommand += CRLF + "Session: " + sessionId;

		// execute it
		doCommand(baseCommand);

		// set flags
		described = setup = playing = false;
		stopped = true;
	}

	// this method is a convenince method to put a RTSP command together
	private String getBaseCommand(String command) {

		return(
			command +
			" " +
			VERSION + // version
			CRLF +
			"CSeq: " + (CSeq++) // incrementing sequence
		);
	}

	// executes a command and receives response from server
	private String doCommand(String fullCommand) throws IOException {

		// to read the response from the server
		byte[] buffer = new byte[2048];

		// debug
		System.err.println(" ====== CLIENT REQUEST ====== ");
		System.err.println(fullCommand + CRLF + CRLF);
		System.err.println(" ============================ ");

		// send a command
		os.write((fullCommand + CRLF + CRLF).getBytes());

		// read response
		int length = is.read(buffer);

		String response = new String(buffer, 0, length);

		// empty the buffer
		buffer = null;

		// if the response doesn't start with an all clear
		if(!response.startsWith(RTSP_OK))
		  throw new IOException("Server returned invalid code: " + response);

		// debug
		System.err.println(" ====== SERVER RESPONSE ====== ");
		System.err.println(response.trim());
		System.err.println(" =============================");

		return response;
	}

	// convenience method to parse a server response to DESCRIBE command
	// for track information
	private void parseTrackInformation(String response) {

		String localRef = response;
		String trackId = "";
		int index = localRef.indexOf(TRACK_LINE);

		// iterate through the response to find all instances of the
		// TRACK_LINE, which indicates all the tracks. Add all the
		// track id's to the tracks vector
		while(index != -1) {
			int baseIdx = index + TRACK_LINE.length();
			trackId = localRef.substring(baseIdx, baseIdx + 1);
			localRef = localRef.substring(baseIdx + 1, localRef.length());
			index = localRef.indexOf(TRACK_LINE);
			tracks.addElement(trackId);
		}

	}

	// find out the session information from the first SETUP command
	private void parseSessionInfo(String response) {

		sessionId =
		  response.substring(
				response.indexOf("Session: ") + "Session: ".length(),
				response.indexOf("Date:")).trim();

	}


}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
又紧又大又爽精品一区二区| 中文字幕av不卡| 欧美中文字幕一区| 色又黄又爽网站www久久| 91美女在线观看| 在线区一区二视频| 欧美色视频在线观看| 欧美丝袜丝交足nylons图片| 欧美美女网站色| 欧美丰满嫩嫩电影| 欧美r级电影在线观看| 精品国产一区二区三区四区四 | 色婷婷av一区二区三区gif| www.综合网.com| 色婷婷精品大视频在线蜜桃视频| 日本道色综合久久| 欧美二区三区的天堂| 91精品国产美女浴室洗澡无遮挡| 欧美日韩一区不卡| 久久日一线二线三线suv| 欧美激情综合网| 亚洲大片一区二区三区| 麻豆成人91精品二区三区| 国产在线国偷精品产拍免费yy| 国产高清精品网站| 欧美日韩一区三区| 日韩精品一区二区三区在线| 亚洲国产高清在线| 亚洲一区二区精品久久av| 精品无人码麻豆乱码1区2区 | 亚洲免费观看高清| 爽好久久久欧美精品| 国模冰冰炮一区二区| 色婷婷一区二区| 久久久精品影视| 亚洲福利一区二区三区| 国产一区不卡精品| 欧美日韩精品欧美日韩精品| 久久免费视频一区| 性做久久久久久久久| 成人一级片在线观看| 欧美日本在线观看| 欧美国产精品专区| 蜜桃91丨九色丨蝌蚪91桃色| jizz一区二区| 久久久久久免费毛片精品| 亚洲成av人片一区二区梦乃| 丁香五精品蜜臀久久久久99网站 | 精品成人私密视频| 亚洲国产精品人人做人人爽| 成人一道本在线| 日韩一级片网站| 亚洲国产日韩精品| 99在线精品视频| 日本一区二区三区久久久久久久久不| 亚洲国产视频直播| 91免费看片在线观看| 国产午夜精品一区二区| 蜜桃视频一区二区三区在线观看| 欧美网站一区二区| 亚洲黄色尤物视频| 色综合久久天天| 亚洲人一二三区| 97se亚洲国产综合在线| 国产精品久久久久久久久快鸭 | 蜜桃视频免费观看一区| 69久久夜色精品国产69蝌蚪网| 亚洲视频电影在线| 91在线精品一区二区| 亚洲国产成人私人影院tom| 国产麻豆视频一区| 久久蜜桃av一区二区天堂| 国产又粗又猛又爽又黄91精品| 日韩欧美激情一区| 九色|91porny| 精品国产网站在线观看| 精品一区二区三区在线观看国产| 日韩一区二区麻豆国产| 精品在线观看免费| 久久久蜜桃精品| 不卡电影一区二区三区| 1区2区3区欧美| 一本大道av伊人久久综合| 一区二区三区免费在线观看| 欧美影院精品一区| 美女一区二区三区在线观看| 精品欧美黑人一区二区三区| 国产精品一二三在| 中文字幕视频一区| 欧美午夜精品电影| 奇米精品一区二区三区在线观看| 欧美成人伊人久久综合网| 国产原创一区二区三区| 亚洲欧洲日产国码二区| 欧美日韩国产片| 狠狠狠色丁香婷婷综合激情| 国产精品视频在线看| 色偷偷久久一区二区三区| 蜜桃视频免费观看一区| 1000部国产精品成人观看| 欧美体内she精视频| 国产一区二区三区国产| 亚洲欧美激情小说另类| 欧美一卡2卡三卡4卡5免费| 国产精品 欧美精品| 亚洲一级片在线观看| 欧美v亚洲v综合ⅴ国产v| 不卡视频一二三| 久久精品国产免费| 亚洲精品乱码久久久久久黑人| 欧美一区二区三区四区视频| 丁香六月久久综合狠狠色| 亚洲成人自拍一区| 国产精品沙发午睡系列990531| 欧美日韩你懂的| 国产成人免费视频一区| 日韩高清不卡一区二区| 亚洲三级小视频| 久久久亚洲午夜电影| 欧美蜜桃一区二区三区| www.亚洲精品| 麻豆精品视频在线观看视频| 一区二区三区丝袜| 欧美国产日本韩| 久久综合色8888| 91精品国产欧美一区二区成人| 91麻豆蜜桃一区二区三区| 国产剧情一区二区三区| 蜜臀久久久久久久| 亚洲一区二区影院| 18欧美乱大交hd1984| 国产精品免费视频观看| 久久久一区二区| 精品久久一区二区| 欧美另类变人与禽xxxxx| 91在线porny国产在线看| 国产在线精品一区二区三区不卡| 视频在线观看国产精品| 亚洲成av人片| 亚洲午夜精品一区二区三区他趣| 国产精品久久网站| 日本一区二区电影| 国产三级三级三级精品8ⅰ区| 欧美xxxxx牲另类人与| 日韩欧美国产三级电影视频| 日韩视频免费直播| 欧美一级国产精品| 欧美精品自拍偷拍动漫精品| 欧美色综合天天久久综合精品| 色婷婷久久久久swag精品| 91丨九色丨蝌蚪富婆spa| 91在线视频官网| 色综合视频在线观看| 波多野结衣亚洲| 99re这里只有精品视频首页| 91美女视频网站| 欧美日韩国产综合一区二区| 欧美日韩在线播放一区| 91麻豆精品国产自产在线观看一区| 在线视频欧美精品| 91精品国产黑色紧身裤美女| 欧美一区二区免费视频| 精品成人一区二区三区四区| 国产日产精品一区| 亚洲精品中文字幕在线观看| 樱桃视频在线观看一区| 日韩福利电影在线观看| 国产麻豆精品久久一二三| 成人免费视频视频在线观看免费| 99久久亚洲一区二区三区青草| 色香蕉成人二区免费| 欧美一区二区三区爱爱| 国产日韩欧美综合一区| 亚洲精品一卡二卡| 日韩av一级电影| 成人国产电影网| 欧美丝袜自拍制服另类| 精品国免费一区二区三区| 国产精品视频免费看| 亚洲福利一二三区| 国产精品资源网| 在线观看亚洲精品| 欧美精品一区二区三| 成人欧美一区二区三区小说| 亚洲一区二区三区四区在线| 久久精品国产77777蜜臀| www.亚洲精品| 精品粉嫩超白一线天av| 亚洲精品少妇30p| 精彩视频一区二区| 在线视频观看一区| 亚洲国产电影在线观看| 丝袜脚交一区二区| 91理论电影在线观看| 久久久美女毛片| 日韩精品五月天| 一本色道久久综合亚洲91| 精品美女在线播放| 天天做天天摸天天爽国产一区| 高清视频一区二区|