프로토콜은 무엇입니까?
수신 된 데이터가 다른 사람에 의해 정해진 송신 포장 후 캡슐화 고정 방식에 의해 다른 필요한 데이터를 얻을 수있다. 여기에 방법이 포함 된 포장을 고정 풀기는 계약의 일종이다.
계약은 규칙 바인딩 당신이 이해할 수 있도록 기존의 요구 사항을 기반으로합니다 또는 연속 반복 업그레이드를 요구하는 계약의 지속적인 실제로입니다. 한 프로토콜로, 당신은 계약의 지원 환경을 추가 할 수 있습니다, 아무리.
RTSP
실시간 스트리밍 프로토콜 (실시간 스트리밍 프로토콜, RTSP)는 스트리밍 미디어 서버를 제어하는 엔터테인먼트 및 통신 시스템에 사용하도록 설계된 네트워크 응용 프로그램 프로토콜입니다. 이 프로토콜은 생성 단자 간의 미디어 세션을 제어하기 위해 사용된다. 같은 서버 (음성 녹음)에 대한 클라이언트 (주문형 비디오)로 서버에서 실시간 미디어 스트림을 제어하기 위해 재생, 기록 및 일시 정지 등 또는 클라이언트에서 클라이언트 미디어 서버 게시 VCR 명령입니다.
방법 정의
설명 : 방향 (C S 클라이언트 서버) 오브젝트 (P S는 미디어 스트림을 나타낸다)
방법 | 방향 | 사물 | 주장 |
---|---|---|---|
옵션 | C-> S, S-> C | 추신 | 필수 (S-> C : 선택 사항) |
DESCRIBE | C-> S | 추신 | 추천 |
알리다 | C-> S, S-> C | 추신 | 옵션 |
GET_PARAMETER | C-> S, S-> C | 추신 | 옵션 |
중지 | C-> S | 추신 | 추천 |
놀이 | C-> S | 추신 | 필수 |
기록 | C-> S | 추신 | 옵션 |
REDIRECT | S-> C | 추신 | 옵션 |
설정 | C-> S | 에스 | 필수 |
SET_PARAMETER | C-> S, S-> C | 추신 | 옵션 |
TEARDOWN | C-> S | 추신 | 필수 |
1 개 옵션의
옵션 요청을 서버에 다시 요청 유형을 받아C->S: OPTIONS * RTSP/1.0 CSeq: 1 Require: implicit-play Proxy-Require: gzipped-messages S->C: RTSP/1.0 200 OK CSeq: 1 Public: DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE
2 DESCRIBE
기재된 방법 서버로부터 요청 된 URL에 의해 식별되는 프리젠 테이션 설명이나 미디어 객체를 검색한다. 그것은 클라이언트가 지원하는 형식의 설명을 지정 수락 헤더를 사용할 수 있습니다. 요청 된 리소스에 응답하여 설명 서버입니다. 회신을 DESCRIBE - 응답은 RTSP의 미디어 초기화 단계를 구성한다.미디어 초기화는 RTSP 기반의 시스템 요구 사항이지만, RTSP 사양은 DESCRIBE 방법을 수행 할 필요가 없습니다.
세 가지 방법 RTSP 클라이언트 초기화 정보가 있습니다- 으로 RTSP DESCRIBE 메소드;
- 다른 프로토콜 (HTTP, 이메일 첨부 파일 등)를 통해;
- 명령 행 또는 표준 입력을 통해 (따라서 보조 응용 프로그램 브라우저 작품으로 초기화 포맷을 시작합니다 SDP 파일 또는 다른 미디어를 사용).
실제적인 상호 운용성을 위해 강력하게 달성하는 것이 좋습니다.
C->S: DESCRIBE rtsp://server.example.com/fizzle/foo RTSP/1.0 CSeq: 312 Accept: application/sdp, application/rtsl, application/mheg S->C: RTSP/1.0 200 OK CSeq: 312 Date: 23 Jan 1997 15:35:06 GMT Content-Type: application/sdp Content-Length: 376 v=0 o=mhandley 2890844526 2890842807 IN IP4 126.16.64.4 s=SDP Seminar i=A Seminar on the session description protocol u=http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps [email protected] (Mark Handley) c=IN IP4 224.2.17.12/127 t=2873397496 2873404696 a=recvonly m=audio 3456 RTP/AVP 0 m=video 2232 RTP/AVP 31 m=whiteboard 32416 UDP WB a=orient:portrait
- 3 ANNOUNCE
분리 방법은 두 가지 목적을 갖는다 :- 클라이언트에서 서버로 전송하면, URL에 의해 식별되는 프리젠 테이션 설명 또는 미디어 객체가 서버에 게시 요청을 발표합니다. 서버에서 클라이언트로 전송하면, 실시간으로 세션 설명 업데이트를 발표합니다.
- 새로운 미디어 스트림이 구성 요소의 프리젠 테이션에 추가되어있는 경우 구성 요소를 제거 할 수 있도록 (예를 들어, 실시간 데모), 당신은 당신의 전체 프레젠테이션을 다시 방금 추가하지 설명 보내야합니다.
C->S: ANNOUNCE rtsp://server.example.com/fizzle/foo RTSP/1.0 CSeq: 312 Date: 23 Jan 1997 15:35:06 GMT Session: 47112344 Content-Type: application/sdp Content-Length: 332 v=0 o=mhandley 2890844526 2890845468 IN IP4 126.16.64.4 s=SDP Seminar i=A Seminar on the session description protocol u=http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps [email protected] (Mark Handley) c=IN IP4 224.2.17.12/127 t=2873397496 2873404696 a=recvonly m=audio 3456 RTP/AVP 0 m=video 2232 RTP/AVP 31 S->C: RTSP/1.0 200 OK CSeq: 312
4 설정
설정 요청은 단일 미디어 스트림을 전송하는 방법을 지정합니다. 이것은 PLAY 요청을 보내기 전에 수행해야합니다. 요청 미디어 스트림의 URL 및 전송 지정이 포함되어 있습니다. 지정자 RTCP는 일반적으로 데이터를위한 RTP 로컬 데이터 (오디오 또는 비디오)를 수신하기위한 포트와 다른 (메타 정보)를 포함한다. 서버는 일반적으로 선택된 매개 변수를 확인하고 그러한 선택의 포트 서버로, 누락 된 부분을 채우 응답합니다. 요청을 재생해야 중합을 보내는 설정을 사용하기 전에 각 미디어 스트림을 구성합니다.C->S: SETUP rtsp://example.com/foo/bar/baz.rm RTSP/1.0 CSeq: 302 Transport: RTP/AVP;unicast;client_port=4588-4589 S->C: RTSP/1.0 200 OK CSeq: 302 Date: 23 Jan 1997 15:35:06 GMT Session: 47112344 Transport: RTP/AVP;unicast; client_port=4588-4589;server_port=6256-6257
5 재생
재생 요청은 플레이어 또는 모든 미디어 스트림에 발생합니다. 당신은 스택 연주 요청의 복수를 전송하여 요청을 할 수있다. URL은 중합 된 URL (모든 미디어 스트림을 재생할 수), 또는 하나의 미디어 스트림 URL (해당 스트림을 재생) 할 수 있습니다. 당신은 범위를 지정할 수 있습니다. 당신이 범위를 지정하지 않을 경우, 스트림은 처음부터 재생을 시작하며 끝까지 재생하거나 스트림 일시 정지하는 경우, 다음 재생 일시 정지 지점을 다시 시작됩니다.C->S: PLAY rtsp://audio.example.com/twister.en RTSP/1.0 CSeq: 833 Session: 12345678 Range: smpte=0:10:20-;time=19970123T153600Z S->C: RTSP/1.0 200 OK CSeq: 833 Date: 23 Jan 1997 15:35:06 GMT Range: smpte=0:10:22-;time=19970123T153600Z
6 일시 정지
일시 정지 요청을 나중에 요청에 의해 재생을 재개 할 수 있도록 일시적으로, 하나 개 또는 모든 미디어 스트림을 중지합니다. 고분자 또는 URL을 포함하는 미디어 스트림을 요청합니다. 범위 파라미터는 일시 멈춤 요청을 지정하는 경우. 범위 파라미터가 생략 된 경우 즉시 정지 무기한 일어난다.C->S: PAUSE rtsp://example.com/fizzle/foo RTSP/1.0 CSeq: 834 Session: 12345678 S->C: RTSP/1.0 200 OK CSeq: 834 Date: 23 Jan 1997 15:35:06 GMT
TEARDOWN 7은
플로우 요청을 발행을 중지 하여 세션을 종료. 그것은 모든 미디어 스트림을 중지하고 서버의 세션 데이터에 대한 모든 관련을 놓습니다.C->S: TEARDOWN rtsp://example.com/fizzle/foo RTSP/1.0 CSeq: 892 Session: 12345678 S->C: RTSP/1.0 200 OK CSeq: 892
8 GET_PARAMETER
취득 요구 파라미터 하고 URI 지정된 검색하거나 프레젠테이션 스트림 파라미터 값. 회신 및 응답 구현하기 위해 떠났다.
```
-S-> C : RTSP GET_PARAMETER 다음 RTSP //example.com/fizzle/foo / 1.0
CSEQ : (431)
내용 - 유형 : 텍스트 / 매개 변수
세션 : 12345678
콘텐츠 - 길이 : 15
packets_received
지터C-> S : RTSP / 1.0 200 OK
CSEQ : 431
콘텐츠 길이 : 46
컨텐츠 유형 : 텍스트 / 파라미터
packets_received 10
지터 : 0.3838
``9 SET_PARAMETER
설정 파라미터 요청 파라미터 값 또는 URI로 지정된 프레젠테이션 스트림이 제공된다.
``
C-> S : RTSP setParameter를 다음 RTSP / 1.0 //example.com/fizzle/foo
CSEQ : 421
콘텐츠 길이 : 20 인
콘텐츠 타입 : 문자 / 파라미터
barparam : barstuffS-> C : RTSP / 1.0 451 잘못된 매개 변수
CSEQ : 421
내용 길이 : 10
콘텐츠 유형 : 텍스트 / 매개 변수
barparam
```10 REDIRECT는
요청 리디렉션 가 다른 서버 위치에 연결해야합니다 클라이언트에 통지 할 수 있습니다. 그것은 필수 헤더 파일 위치를 포함하는 클라이언트 요청의 URL을 발행해야 나타냅니다. 이 때 리디렉션 효과를 나타내는 매개 변수 범위를 포함 할 수있다. 클라이언트가 보내거나이 URI에 대한 미디어가 계속하고자하는 경우, 클라이언트는 새로운 세션과 지정된 호스트에 TEARDOWN 설정에 대한 현재의 세션을 요청해야합니다.S->C: REDIRECT rtsp://example.com/fizzle/foo RTSP/1.0 CSeq: 732 Location: rtsp://bigserver.com:8001 Range: clock=19960213T143205Z-
RECORD 11의
기록 요청은 상기 미디어 프리젠 테이션의 설명에 따라 일련의 데이터를 기록하기 시작한다. 타임 스탬프는 시작과 끝 시간 (UTC)를 반영한다. 어떤 주어진 시간이없는 경우, 설명 또는 종료 시간에 제공되는 시작 프리젠 테이션을 사용합니다. 세션이 시작된 경우, 즉시 녹화를 시작하십시오. 요청 URI 또는 기타 기록에 URI는 서버 데이터 저장 여부를 확인합니다. 서버가 URI 요청을 사용하지 않는 경우, 응답 (201), 및 요청의 상태를하고 설명은 엔티티와 위치 헤더 새로운 자료를 참조 포함한다.C->S: RECORD rtsp://example.com/meeting/audio.en RTSP/1.0 CSeq: 954 Session: 12345678 Conference: 128.16.64.19/32492374
12 임베디드 (인터리브) 이진 데이터
임베디드 (비월) 이진 데이터는 어떤 방화벽 설계 및 다른 상황은 RTSP 방법 및 스트림 데이터 교차하도록 서버를 강제 할 수있다. 이 필요한 경우를 제외하고는 클라이언트와 서버 운영 복잡을 추가 오버 헤드를 추가하기 때문에, 일반적으로,이 문제를 피하기 위해 시차를해야한다. CROSS 이진 데이터는 단지 TCP 전송 RTSP 사용할 수 있습니다. 이러한 네트워크 이진 이진 바이트 캡슐화 된 데이터 워드의 길이 다음에, 채널 식별자 바이트 다음 ASCII 코드 심볼 (24 진수) 패키지의 등의 RTP 데이터 패킷 스트림 데이터 섹션 순서. 데이터 스트림 뒤에 더 CRLF하지만, 상위 계층 프로토콜 헤더를 포함 없다. 각 블록은 이러한 RTP 패킷으로 만 $ 상층 프로토콜 데이터 유닛을 포함한다.C->S: SETUP rtsp://foo.com/bar.file RTSP/1.0 CSeq: 2 Transport: RTP/AVP/TCP;interleaved=0-1 S->C: RTSP/1.0 200 OK CSeq: 2 Date: 05 Jun 1997 18:57:18 GMT Transport: RTP/AVP/TCP;interleaved=0-1 Session: 12345678 C->S: PLAY rtsp://foo.com/bar.file RTSP/1.0 CSeq: 3 Session: 12345678 S->C: RTSP/1.0 200 OK CSeq: 3 Session: 12345678 Date: 05 Jun 1997 18:59:15 GMT RTP-Info: url=rtsp://foo.com/bar.file; seq=232433;rtptime=972948234 S->C: $\000{2 byte length}{"length" bytes data, w/RTP header} S->C: $\000{2 byte length}{"length" bytes data, w/RTP header} S->C: $\001{2 byte length}{"length" bytes RTCP packet}
상태 코드 정의
1XX : - 정보 계속 처리 요청을받을
가 2xx을 작업이 성공적으로 이해 받고, 받아 들여졌다 : - 성공을
하는 3xx : - 재 추가 조치를 요청 완료하기 위해 수행해야
4XX을 요청이 잘못된 구문을 포함하거나 완료 할 수 없습니다 - 클라이언트 오류 :
5XX : 서버 오류 - 서버는 유효한 요청을 완료하지 못했습니다
상태 코드 | 정의 |
---|---|
(100) | 계속 |
(200) | 성공 |
201 | 만들기 |
(250) | 저장 공간의 부족 |
(300) | 다양한 옵션 |
(301) | 영구적으로 이전 |
(302) | 임시 이전 |
(303) | 다른보기 |
(304) | 수정되지 않음 |
(305) | 프록시 서버 사용 |
(400) | 잘못된 요청 |
(401) | 권한이없는 |
(402) | 지불 필요 |
(403) | 금지 |
(404) | 찾을 수 없음 |
(405) | 방법 허용되지 않음 |
(406) | 수없는 |
(407) | 프록시 인증 필요 |
(408) | 요청 시간 초과 |
(410) | 밖으로 |
(411) | 길이 요구 사항 |
(412) | 전제 조건 실패 |
(413) | 엔티티가 너무 큼 요청 |
(414) | URI가 너무 커서 요청 |
(415) | 지원되지 않는 미디어 유형 |
451 | 매개 변수는 이해되지 |
(452) | 회의를 찾을 수 없음 |
453 | 충분한 대역폭이 없습니다 |
(454) | 세션을 찾을 수 없습니다 |
(455) | 이 상태가 작동하지 않습니다에 |
456 | 자원의 잘못된 헤더 필드 |
457 | 잘못된 범위 |
458 | 매개 변수는 읽기 전용입니다 |
459 | 중합 작업은 허용되지 않습니다 |
(460) | 중합 작업에만 |
(461) | 전송을 지원하지 않습니다 |
(462) | 액세스 대상 |
(500) | 내부 서버 오류 |
501 | 未实现 |
502 | 错误的网关 |
503 | 暂停服务 |
504 | 网关超时 |
505 | 不支持RTSP版本 |
551 | 选项不受支持 |
WEB:www.liveqing.com