搜档网

当前位置:搜档网 > HIKVISION RTSP IPMD V1.0

HIKVISION RTSP IPMD V1.0

Explanation to develop API of RTSP protocol

1. RTSP protocol explanation

(1)URL address format: rtsp:////ch/

/av_stream. Of these, ipaddress is the IP address of device, videotype is mpeg4 or h.264, number is numeric, streamtype is main or sub stream. It is not sensitive to the capital letter or lowercase letter.

For example: rtsp://192.0.1.100/mpeg4/ch1/main/av_stream/*the video type is MPEG4 and it comes from main stream of device’s channel 1 which IP address is 192.0.1.100*/

(2)the explanation of authentication

Support URL carry with user name and password.

Support authentication in Describe step.

(3)Grammar

Request grammar:

COMMAND URI RTSP/1.0

Headerfield1: val1

Headerfield2: val2

...

Feedback grammar:

RTSP/1.0 ResultCode ResultString

Headerfield3: val3

Headerfield4: val4

...

(4)device support the following command formats

Support the following header-field and omit other header-field

Header-field description

Authorization the certification information come

from client terminal(only support

certification information that

dragged-in in Describe period CSeq Request the serial NO

Session Session remark NO (return by

server in SETUP period Content-Length Length of content

Head information generated when RTSP server feedback

Header-field description

CSeq Serial NO feedback(matching with

the request serial NO) Session Session label symbol

(5)Take all of the RTSP commands that interacted between player and device for

example: C means rtsp client and S means rtsp server

HIKVISION RTSP IPMD V1.0

RTSP OPTIONS,C inquire S for the method that can be used and all methods that can be used are in S’s reply information.

C-S:OPTIONS rtsp://192.0.1.100/mpeg4/ch1/main/av_stream RTSP/1.0

CSeq:1// there is label in every message, normaly, the first packet is request message from option

User-Agent: Hikplayer

S-C:RTSP/1.0 200 OK

CSeq: 1

Public: DESCRIBE,PLAY,SETUP,TEARDOWN

RTSP DESCRIBE, return back the described information of SDP(RFC2327) appointed by URL. And DESCRIBEcommand accept the following header-field: Accept The content list type supported by client software(only support application/sdp)

DESCRIBE command generate the extra following information of header:

Content-Type Content type(application/sdp)

Content-Length The length of SDP that described

C-S:DESCRIBE rtsp://admin:12345@192.0.1.100/mpeg4/ch1/main/av_stream RTSP/1.0

CSeq: 2

Accept: application/sdp

User-Agent: Hikplayer

S-C:RTSP/1.0 200 OK

CSeq: 2

Content-type: application/sdp

Content-length: 692

v=0//SDP version information

o=- 1109162014219182 1109162014219192 IN IP4 x.y.z.w //owner/creator and

conversation label symbol

s=Media Presentation//conversation name e=NONE//Email address

c=IN IP4 0.0.0.0// connection information

t=0 0// conversation time

a=control:*

If the codec is mpeg4

m=video 0 RTP/A VP 96//media description

a=rtpmap:96 MP4V-ES/90000

a=fmtp:96 profile-level-id=8;config=000001B0F5000001B50900000100000001200886

C400670CA0116851;//Stream configuration information described by config, config is changing with video parameter setting.

a=range:ntp=now-

a=control:trackID=1//Video stream using track1

m=audio 0 RTP/A VP 0//media description

a=rtpmap:0 PCMU/8000

a=control:trackID=2//audio stream use track2

a=Media_header:MEDIAINFO=494D4B48010100000400010010710110401F000000FA0000000 00000000000000000000000000000;//HIK Header, 40 bytes.

a=appversion:1.0//sdp version

If the codec is H.264

m=video 0 RTP/A VP 96

a=rtpmap:96 H264/90000

a=control:trackID=1

a=fmtp:96

profile-level-id=4D0014;packetization-mode=0;sprop-parameter-sets=Z0LAH4iLUCgC3QgAAD hAAAr8gBA=,aM44gA==

m=audio 0 RTP/A VP 0

a=rtpmap:0 PCMU/8000

a=control:trackID=2

a=Media_header:MEDIAINFO=494D4B48010100000400010010710110401F000000FA0000000 00000000000000000000000000000;

a=appversion:1.0

a=range:ntp=now-

a=mpeg4-iod:"data:application/mpeg4-iod;base64,AoDUAE8BAf/1AQOAbwABQFBkYXRhOm FwcGxpY2F0aW9uL21wZWc0LW9kLWF1O2Jhc2U2NCxBUjBCR3dVZkF4Y0F5U1FBWlFRT klCRUVrK0FBZWhJQUFIb1NBQVlCQkE9PQQNAQUABAAAAAAAAAAAAAYJAQAAAA AAAAAAAzoAAkA2ZGF0YTphcHBsaWNhdGlvbi9tcGVnNC1iaWZzLWF1O2Jhc2U2NCx3Q kFTWVFTSVVFVUZQd0E9BBICDQAAAgAAAAAAAAAABQMAAEAGCQEAAAAAAAA AAA=="

m=video 0 RTP/A VP 96// media description

a=control:trackID=1// indicate that track1 is used for video stream

a=rtpmap:96 MP4V-ES/90000

a=fmtp:96 profile-level-id=245;config=000001B0F5000001B50900000100000001

200886C400670C58112051; //bit stream configured information is express by config,the information of config is vary along with the video parameters configuration.

a=mpeg4-esid:201

RTSP SETUP, this command is used for remind the server to establish conversation, configuration method of data transmission. It is required to generate the following header-filed.

Transport Prescribe the way of data stream transmission, support the

following format:

RTP/AVP;unicast;client_port=port1-port2

RTP/AVP;multicast;client_port=port1-port2

RTP/AVP/TCP;unicast;client_port=port1-port2

RTP/AVP/TCP;unicast

C-S:SETUP rtsp://192.0.1.100/mpeg4/ch1/main/av_stream/trackID=1 RTSP/1.0 CSeq: 3

Transport: RTP/AVP;unicast;client_port=1094-1095

User-Agent: Hikplayer

S-C:RTSP/1.0 200 OK

CSeq: 3

Session:1389957320//the conversation label symbol that responded from server.

Transport: RTP/AVP;unicast;client_port=1094-1095;server_port=12028-12029 RTSP PLAY, this command is for client to start the data transmit and it requires to generate the following header-field:

Range Prescribe the play range, for it only support real time stream, so

it only has beginning time but not ending time

RTP-Info About the information of RTP stream, including next RTP serial

No

C-S:PLAY rtsp://192.0.1.100/mpeg4/ch1/main/av_stream RTSP/1.0 CSeq: 4

Session: 1389957320

Range: npt=0.000- //set the range of playing time

User-Agent: Hikplayer

S-C:RTSP/1.0 200 OK

CSeq: 4

Session: 1389957320

Range: npt=now-

RTP-Info: url=trackID=1;seq=29626 //seq is information that in rtp packet

RTSP TEARDOWN, this command finishing the data transmission of server

C-S:TEARDOWN rtsp://192.0.1.100/mpeg4/ch1/main/av_stream RTSP/1.0 CSeq: 5

Session: 1389957320

User-Agent: Hikplayer

S-C:RTSP/1.0 200 OK

CSeq: 5

Session: 1389957320

The above methods is usually used in the process of interaction, there are also lots of important methods that we do not supported, such as: get/set_parameter,pause,redirect, etc.

2. RTP OVER TCP

(1)the specialness when get bit stream:

When in the period of setup, user send a setup command that trackID=1 and take over the ports

User use the port to connect to the device

User send the playing command

Device send the video/audio to user

(2)some examples for different periods in the process of SETUP:

C-S:SETUP rtsp://192.0.1.100/mpeg4/ch1/main/av_stream/trackID=1 RTSP/1.0 CSeq: 3

Transport: RTP/AVP/TCP;unicast;client_port=13000-13001

User-Agent: Hikplayer

S-C:RTSP/1.0 200 OK

CSeq: 3

Session:1389957320

Transport:

RTP/AVP/TCP;unicast;client_port=13000-13001;server_port=8200-8201

(3)We use the TPKT protocol to guarantee the transmission and get the whole RTP packet, and distinguish the video from audio via RTP load, the value of video is 96 and audio is 0.

The first 4 bytes is TPKT protocol.

The first byte is version of TPKT

The second byte is pre-reserve field of TPKT protocol

The third byte is TPKT header and 4th is length of RTP packet

From the 5th byte to 16th bytes are the header of RTP

The first two bits of 5th byte are the version No of RTP packet

The third bit of 5th byte is the padding bit of RTP packet

The 4th bit of 5th byte is the extend bit of RTP packet.

The 5th, 6th, 7th, 8th bytes are CSRC of RTP packet

The 9th, 10th, 11th, 12th bytes are timestamp of RTP packet

The 13th 14th 15th 16th bytes are SSRC of RTP packet(fixed value:0x55667788)

HIKVISION RTSP IPMD V1.0

(3)Port configuration, TCP(data port) of server terminal is gotten through calculate, the formula is: 8000+200+(chan-1)

3. RTP OVER UDP

(1)User send a SETUP command in the SETUP period, when trackID1=1 means it can only got video.

(2)User send a SETUP command in the SETUP period, when trackID1=2 means it can only got audio.

(3)User send a SETUP command in the SETUP period, when trackID1=1 and trackID1=2 means it can got video and audio.

(4) The range of ports configured, UDP(data port) of server terminal is gotten through calculate, the formula is: 8000+200+(chan-1)*6 - 8000+200+(chan-1)*6+9

(5) Some examples for different periods in the process of SETUP:

C-S:SETUP rtsp://192.0.1.100/mpeg4/ch1/main/av_stream/trackID=1 RTSP/1.0 CSeq: 3

Transport: RTP/AVP;unicast;client_port=13000-13001

User-Agent: Hikplayer

S-C:RTSP/1.0 200 OK

CSeq: 3

Session:1389957320

Transport: RTP/AVP;unicast;client_port=13000-13001;server_port=8200-8201; ssrc=3FBF041A

C-S:SETUP rtsp://192.0.1.100/mpeg4/ch1/main/av_stream/trackID=2 RTSP/1.0 CSeq: 3

Transport: RTP/AVP;unicast;client_port=13002-13003

User-Agent: Hikplayer

S-C:RTSP/1.0 200 OK

CSeq: 3

Session:1389957320

Transport: RTP/AVP;unicast;client_port=13002-13003;server_port=8200-8201; ssrc=3FBF041A

4. Multicast RTP

(1)If there are not multicast address and port in user’s address, it will use the default existed multicast address and port.

(2)If there are multicast address and port in user’s protocol, it will use them to send data (3)About the multicast ports configuration, the multicast ports will be set to can be configured in the future

Main channel port, 8000+600+4+(chan-1)*6

Sub channel port, 8000+600+2+(chan-1)*6

Audio port, 8000+600+(chan-1)*6

(4)SSRC,it is used for distinguishing the device which sent the multicast data according to the last 4 bits MAC address.

(5) Some examples for different periods in the process of SETUP:

C-S:SETUP rtsp://192.0.1.100/mpeg4/ch1/main/av_stream/trackID=1 RTSP/1.0 CSeq: 3

Transport: RTP/AVP;mcast

User-Agent: Hikplayer

S-C:RTSP/1.0 200 OK

CSeq: 3

Session:1389957320

Transport:

RTP/AVP;mcast;destination=224.0.1.2;port=8602-8603;ssrc=3FBF041A C-S:SETUP rtsp://192.0.1.100/mpeg4/ch1/main/av_stream/trackID=2 RTSP/1.0 CSeq: 3

Transport: RTP/AVP;mcast

User-Agent: Hikplayer

S-C:RTSP/1.0 200 OK

CSeq: 3

Session:1389957320

Transport:

RTP/AVP;mcast;destination=224.0.1.2;port=8602-8603;ssrc=3FBF041A

5. RTP OVER RTSP

(1)RTSP protocol, all RTP data stream is transmit in 554 port

(2)Binary data embedded into the bit stream

The first byte is symbol $, and it is expressed as 0x24 in hex

The second byte is the number of video/audio channel

The third and fourth bytes are about the length of RTP packet.

(3) Some examples for different periods in the process of SETUP:

C-S:SETUP rtsp://192.0.1.100/mpeg4/ch1/main/av_stream/trackID=1 RTSP/1.0 CSeq: 3

Transport: RTP/AVP/TCP;unicast

User-Agent: Hikplayer

S-C:RTSP/1.0 200 OK

CSeq: 3

Session: 1389957320

Transport: RTP/AVP/TCP;unicast;interleaved=0-1

C-S:SETUP rtsp://192.0.1.100/mpeg4/ch1/main/av_stream/trackID=2 RTSP/1.0 CSeq: 4

Transport: RTP/AVP/TCP;unicast

User-Agent: Hikplayer

S-C:RTSP/1.0 200 OK

CSeq: 4

Session: 1389957320

Transport: RTP/AVP/TCP;unicast;interleaved=2-3

6. Support the previous SDK

The previous SDK can get the bit stream, but the user need to analyze by himself, for there is not header information in the bit stream.

Reference protocols:

(1)RFC2327 SDP(Session Description Protocol) protocol

(2)RFC2326 RTSP protocol

(3)RFC3551 TPKT protocol

(4)RFC3984 RTP Payload Format for H.264 Video

(5)RFC3016 RTP Payload Format for MPEG-4 Audio/Visual Streams