亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
精品一区二区三区香蕉蜜桃| 日韩欧美中文字幕精品| 精品一区在线看| 午夜精品久久久久久久久| 18成人在线视频| 日韩理论片一区二区| 亚洲欧洲国产专区| 国产精品久久久久久久久动漫 | 在线观看亚洲成人| 95精品视频在线| 9i看片成人免费高清| 91麻豆精品一区二区三区| 一本色道久久综合精品竹菊| 91国产丝袜在线播放| 日本韩国欧美一区二区三区| 欧美日韩小视频| 欧美二区三区的天堂| 日韩一区二区中文字幕| 精品电影一区二区| 国产日韩欧美精品一区| 亚洲国产高清在线| 艳妇臀荡乳欲伦亚洲一区| 亚洲伊人色欲综合网| 亚洲综合久久av| 美国十次了思思久久精品导航| 美女一区二区视频| 成人黄色av电影| 91搞黄在线观看| 欧美日韩国产欧美日美国产精品| 欧美不卡一区二区三区| 中文字幕第一区| 亚洲.国产.中文慕字在线| 国产尤物一区二区| 99国产精品久久久久| 日韩欧美一区二区久久婷婷| 欧美激情在线观看视频免费| 一区二区不卡在线视频 午夜欧美不卡在| 亚洲国产精品欧美一二99 | 精品国产一区二区三区四区四| 国产欧美一区视频| 亚洲国产va精品久久久不卡综合| 日本不卡视频一二三区| 国产女人18水真多18精品一级做| 亚洲欧美激情插| 蜜臀国产一区二区三区在线播放| 国产91丝袜在线观看| 精品视频免费看| 国产欧美一区二区三区网站| 日本成人在线一区| 色菇凉天天综合网| 国产精品乱码一区二区三区软件| 无吗不卡中文字幕| 日本韩国欧美国产| 国产三级欧美三级日产三级99| 午夜婷婷国产麻豆精品| 一本在线高清不卡dvd| 国产亚洲欧美一级| 麻豆视频观看网址久久| 欧美日韩亚州综合| 亚洲综合色在线| 不卡的av电影在线观看| 久久综合久色欧美综合狠狠| 日本不卡一二三| 91精品在线一区二区| 一区二区三区成人在线视频 | 中文字幕在线一区| 国产福利91精品一区二区三区| 91精品国产麻豆国产自产在线| 亚洲另类中文字| 91小视频免费观看| 亚洲日本电影在线| 97久久精品人人澡人人爽| 久久青草欧美一区二区三区| 久久国产精品露脸对白| 欧美大肚乱孕交hd孕妇| 蜜桃一区二区三区在线| 日韩欧美视频在线 | 久久成人av少妇免费| 欧美午夜电影一区| 亚洲精品免费在线播放| 99视频精品全部免费在线| 成人午夜碰碰视频| 国产精品初高中害羞小美女文| 国产·精品毛片| 国产精品夫妻自拍| 99国产精品久久久久| 亚洲在线一区二区三区| 欧美日韩亚州综合| 久久99精品久久久| 国产免费观看久久| 一本色道久久综合亚洲aⅴ蜜桃 | 欧美中文字幕一区二区三区亚洲| 亚洲精品老司机| 欧美性色综合网| 日本aⅴ免费视频一区二区三区| 日韩精品一区国产麻豆| 国产精品一二三四| 国产精品情趣视频| 色综合一个色综合| 亚洲成人av资源| 日韩丝袜美女视频| 国产成都精品91一区二区三| 亚洲色图制服丝袜| 欧美日韩精品一区二区天天拍小说| 天天影视涩香欲综合网| 久久一区二区视频| 91蝌蚪porny| 日韩一区精品视频| 久久久精品2019中文字幕之3| 99视频精品免费视频| 亚洲18女电影在线观看| 欧美国产丝袜视频| 欧美撒尿777hd撒尿| 国产伦精品一区二区三区在线观看| 中文字幕亚洲成人| 精品美女在线观看| 在线精品视频一区二区三四| 国产成人鲁色资源国产91色综| 亚洲欧美偷拍卡通变态| 日韩精品一区在线| 欧美午夜精品一区二区三区| 久久99精品一区二区三区 | 韩国欧美国产1区| 欧美www视频| 99re免费视频精品全部| 老司机精品视频线观看86| 亚洲欧美经典视频| 久久久久久毛片| 欧美日本一区二区| 91麻豆自制传媒国产之光| 国产成人精品影视| 蜜臀av性久久久久蜜臀aⅴ流畅| 亚洲日本丝袜连裤袜办公室| 久久网这里都是精品| 在线不卡一区二区| 欧美亚洲一区三区| 一本色道**综合亚洲精品蜜桃冫| 激情综合色综合久久综合| 性做久久久久久| 亚洲男人电影天堂| 国产精品黄色在线观看| 久久久久国产精品麻豆ai换脸| 91久久奴性调教| 91在线国产福利| 国产乱人伦偷精品视频不卡 | 91精品国产色综合久久久蜜香臀| 成人av资源站| 高清成人在线观看| 国产综合久久久久久鬼色| 蜜臀va亚洲va欧美va天堂| 日韩av一区二区在线影视| 视频一区二区不卡| 午夜伦理一区二区| 午夜精品福利在线| 天天亚洲美女在线视频| 视频一区视频二区中文| 日韩高清在线一区| 日韩福利电影在线| 美女性感视频久久| 极品尤物av久久免费看| 国产在线视频一区二区三区| 久久精品av麻豆的观看方式| 日韩不卡一二三区| 久久成人免费网| 久久精品99国产精品| 久草中文综合在线| 国产精品1区二区.| www.av亚洲| 色呦呦国产精品| 欧美日本精品一区二区三区| 欧美丝袜第三区| 91精品国产麻豆国产自产在线| 日韩欧美在线综合网| 久久久不卡影院| 最新不卡av在线| 石原莉奈在线亚洲二区| 精品一区二区三区视频| 国产成都精品91一区二区三| 色哟哟国产精品| 8v天堂国产在线一区二区| 欧美精品一区二区三区高清aⅴ| 国产欧美日韩久久| 色偷偷久久人人79超碰人人澡| 色999日韩国产欧美一区二区| 欧美日韩五月天| 2021中文字幕一区亚洲| 国产精品传媒入口麻豆| 日本成人在线看| 成人aaaa免费全部观看| 欧美日韩高清在线播放| 国产亚洲精品免费| 亚洲综合偷拍欧美一区色| 精品一区二区免费| 91麻豆文化传媒在线观看| 91精品国产aⅴ一区二区| 一色屋精品亚洲香蕉网站| 日韩制服丝袜av| 91免费版在线看| 久久久噜噜噜久久人人看| 日韩av中文字幕一区二区三区|