private int newSendRequestAnnounce() throws IOException, InterruptedException { String body = mParameters.session.getSessionDescription(); String request = "ANNOUNCE rtsp://" + mParameters.host + ":" + mParameters.port + mParameters.path + " RTSP/1.0\r\n" + "CSeq: " + (++mCSeq) + "\r\n" + "Content-Length: " + body.length() + "\r\n" + "Content-Type: application/sdp \r\n\r\n" + body; log.info(request.substring(0, request.indexOf("\r\n"))); Response response = mRtpThread.requestWithResponse(request); if (response == null) { throw new IOException("response of announce is null!"); } return response.status; }
private int newSendRequestPlay() throws IOException, InterruptedException { String request = "PLAY rtsp://" + mParameters.host + ":" + mParameters.port + mParameters.path + " RTSP/1.0\r\n" + "Range: npt=0.000-\r\n" + addHeaders(); log.info(request.substring(0, request.indexOf("\r\n"))); Response response = mRtpThread.requestWithResponse(request); if (response == null) { throw new IOException("response of play is null!"); } return response.status; }
private void newSendRequestSetup() throws IOException, InterruptedException { int interleaved = 0; for (int i = 0; i < 2; i++) { Stream stream = mParameters.session.getTrack(i); if (stream != null) { String tcp_inter = "/TCP;unicast;mode=receive;interleaved=" + 2 * interleaved + "-" + (2 * interleaved + 1); String params = mParameters.transport == TRANSPORT_TCP ? tcp_inter : (";unicast;mode=record;client_port=" + (5000 + 2 * i) + "-" + (5000 + 2 * i + 1)); String request = "SETUP rtsp://" + mParameters.host + ":" + mParameters.port + mParameters.path + "/trackID=" + i + " RTSP/1.0\r\n" + "Transport: RTP/AVP" + params + "\r\n" + addHeaders(); log.info(request.substring(0, request.indexOf("\r\n"))); Response response = mRtpThread.requestWithResponse(request); if (response == null) { throw new IOException("response of setup is null!"); } try { Matcher m = Response.rexegSession.matcher(response.headers.get("session")); m.find(); mSessionID = m.group(1); } catch (Exception e) { // throw new // IOException("Invalid response from server. Session id: "+mSessionID); // mSessionID = "0"; e.printStackTrace(); } Matcher m; if (mParameters.transport == TRANSPORT_UDP) { try { m = Response.rexegTransport.matcher(response.headers.get("transport")); m.find(); stream.setDestinationPorts(Integer.parseInt(m.group(3)), Integer.parseInt(m.group(4))); // log.debug("Setting destination ports: " + Integer.parseInt(m.group(3)) + ", " + // Integer.parseInt(m.group(4))); } catch (Exception e) { e.printStackTrace(); int[] ports = stream.getDestinationPorts(); // log.debug("Server did not specify ports, using default ports: " + ports[0] + "-" + // ports[1]); } } else { stream.setConsumer(mRtpThread, (byte) (2 * interleaved)); } interleaved++; } } }