版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、RTSPRTP媒體傳輸和控制協(xié)議1 前言本文檔主要描述了NewStreamVision系統(tǒng)中前端視頻服務器(DVR,網(wǎng)絡攝像機),中心轉(zhuǎn)發(fā)服務器以及客戶端之間的多媒體通信以及控制協(xié)議.本協(xié)議主要基于標準的IETE的RTSP/RTP以及相關(guān)協(xié)議,并針對具體應用定義了部分擴展.本協(xié)議只是當前實現(xiàn)的總結(jié)和整理,具體的協(xié)議細節(jié)以實際實現(xiàn)為準2 定義RTSP實現(xiàn)流協(xié)議SDP會話描述協(xié)議RTP實時傳輸協(xié)議H.264H.264視頻編碼標準3 RTSP命令3.1 Request語法語法:RTSP的語法和HTTP的語法基本相同,具體如下。COMMANDrtsp_URLRTSP/1.0<CRLF&a
2、mp;gt;Headerfield1:val1<CRLF>Headerfield2:val2<CRLF><CRLF>BodyRTSP消息行之間用回車換行(CRLF)分隔.一個空行表示消息頭部分的結(jié)束。3.1.1 RTSP方法COMMAND表示RTSP命令名稱,是DESCRIBE,SETUP,OPTIONS,PLAY,PAUSE,TEARDOWN或SET_PARAMETER等的任意一個.3.1.2 RTSPURL完整語法如下:rtsp_URL=("rtsp:"|"rtspu:&quo
3、t;)"/"host":"portabs_pathhost=(AlegalInternethostdomainnameofIPaddress(indotteddecimalform),asdefinedbySection2.1ofRFC1123citerfc1123)port=*DIGIT如:rtsp:/<servername>/live.mp4?<param>=<value>&<param>=<value&
4、;gt;.<servername>表示產(chǎn)品的主機名稱或者IP地址.3.1.3 RTSP版本格式和HTTP協(xié)議類似,且RTSP版本總是為"RTSP/1.0"3.1.4 RTSP頭字段下面是所有命令都接受的頭字段類型,一些命令接受或者必須用到一些附加的特別的頭字段。頭字段描述Authorization客戶端的認證信息.CSeq請求序列號.Session會話ID(返回自服務端的SETUP應答).Content-Length內(nèi)容的長度.Content-Type內(nèi)容的媒體類型.User-Agent關(guān)于創(chuàng)建這個請求的客戶端的信息.Require查詢是否支持指
5、定的選項,不支持的選項會在Unsupported頭中列出.3.2Response語法語法:RTSP/1.0<StatusCode><ReasonPhrase><CRLF>Headerfield3:val3<CRLF>Headerfield4:val4<CRLF><CRLF>Body應答的第一行包含了表示請求是否成功或者失敗的狀態(tài)碼和原因短語.在RFC2326有對狀態(tài)碼的詳細描述標準的RTSP應答狀態(tài)碼和原因短語:”100”;Co
6、ntinue(all100range)“200”;OK”201”;Created”250”;LowonStorageSpace”300”;MultipleChoices”301”;MovedPermanently”302”;MovedTemporarily”303”;SeeOther”304”;NotModified”305”;UseProxy”350”;GoingAway”351”;LoadBalancing”400”;BadRequest”401”;Unauthorized”402”;PaymentRequired”403”;Forbidden”404”;NotFound405”;Meth
7、odNotAllowed406”;NotAcceptable407”;ProxyAuthenticationRequired408”;RequestTime-out410”;Gone411”;LengthRequired412”;PreconditionFailed413”;RequestEntityTooLarge414”;Reque-sUtRITooLarge415”;UnsupportedMediaType451”;ParameterNotUnderstood452”;reserved453”;NotEnoughBandwidth454”;SessionNotFound455”;Meth
8、odNotValidinThisState456”;HeaderFieldNotValidforResource457”;InvalidRange458”;ParameterIsRead-Only459”;Aggregateoperationnotallowed460”;Onlyaggergateoperationallowed461”;Unsupportedtransport462”;Destinationunreachable”500”;InternalServerError”501”;NotImplemented”502”;BadGateway”503”;ServiceUnavailab
9、le”504”;GatewayTime-out”505”;RTSPVersionnotsupported”551”;Optionnotsupported下面的頭字段可以在所有的RTSP應答消息中包含。頭字段描述CSeq應答序列號(和請求序列匹配).Session會話ID.WWW-Authenticate客戶端的認證信息.Date應答的日期和時間.Unsupported服務端不支持的特性和功能.3.3RTSPDESCRIBEDESCRIBE命令用于請求指定的媒體流的SDP描述信息。關(guān)于SDP(SessionDescriptionProtocol,會話描述協(xié)議)請參考RFC2327.DESCRIB
10、E請求消息接受如下附加的頭字段:頭字段描述Accept列出客戶支持的內(nèi)容類型(application/sdpistheonlysupportedtype).DESCRIBE命令的應答消息包含如下附加的頭字段:頭字段描述Content-Type內(nèi)容類型(application/sdp).Content-LengthSDP描述串的長度.Content-Base如果SDP描述串中使用了相對URL,這里是相關(guān)的基本URL.例如:請求DESCRIBErtsp:/myserver/live.mp4RTSP/1.0CSeq:0User-Agent:VisionMCAccept:application/sdp
11、Authorization:Basiccm9vdDpwYXNz應答RTSP/1.0200OKCSeq:0Content-Type:application/sdpContent-Base:rtsp:/myserver/live.mp4Date:Wed,16Jul200812:48:47GMTContent-Length:847v=0o=-12162125275548721216212527554872INIP4myservers=MediaPresentatione=NONEc=INIPb=AS:50064t=00a=control:rtsp:/myserver/live.mp4
12、&resolution=640x480a=range:npt=0.000000-m=video0RTP/AVP96b=AS:50000a=framerate:30.0a=control:rtsp:/myserver/live.mp4?trackID=1a=rtpmap:96H264/90000a=fmtp:96packetization-mode=1;profile-level-id=420029;sprop-parameter-sets=Z0IAKeKQFAe2AtwEBAaQeJEV,aM48gA=m=audio0RTP/AVP97b=AS:64a=control:rtsp
13、:/myserver/live.mp4?trackID=2a=rtpmap:97mpeg4-generic/16000/1a=fmtp:97profile-level-id=15;mode=AAC-hbr;config=1408;SizeLength=13;IndexLength=3;IndexDeltaLength=3;Profile=1;bitrate=64000;1.4 RTSPOPTIONSOPTIONS請求用于返回服務端支持的RTSP命令列表也可以定時發(fā)送這個請求來保活相關(guān)的RTSP會話。OPTIONS命令的應答消息包含如下附加的頭字段:頭字段描述Public指出支持的RTSP命令.
14、例如:列出支持的RTSP命令.請求OPTIONS*RTSP/1.0CSeq:1User-Agent:VisionMCSession:12345678Authorization:Basiccm9vdDpwYXNz應答RTSP/1.0200OKCSeq:1Session:12345678Public:DESCRIBE,GET_PARAMETER,PAUSE,PLAY,SETUP,SET_PARAMETER,TEARDOWNDate:Wed,16Jul200812:48:48GMT1.5 RTSPSETUPSETUP命令用于配置數(shù)據(jù)交付的方法。SETUP請求和應答需要一個同樣的附加的頭字段:頭字段描
15、述Transport指出如何傳輸數(shù)據(jù)流。分別支持RTP/AVP;unicast;client_port=port1-port2RTP/AVP;multicast;client_port=port1-port2RTP/AVP/TCP;unicast等不同的傳輸方式這個請求的應答返回一個必須在流控制命令(如PLAY,PAUSE,TEARMDOWN)中使用的會話ID。如果這個Session頭字段包含了timemout參數(shù),除非有保活,否則會話會在超時時間后被關(guān)閉。會話可以通過發(fā)送包含SessionID的RTSP請求(如OPTIONS,GET_PARAMETER)給服務端來?;?。或者使用RTCP消息。
16、不支持中間重新更改傳輸參數(shù)。例如:在第一個SETUP請求的應答中返回會話的ID。并且后續(xù)的請求中都包含這個會話ID。請求SETUPrtsp:/myserver/live.mp4?trackID=1RTSP/1.0CSeq:2User-Agent:VisionMCTransport:RTP/AVP;unicast;client_port=20000-20001Authorization:Basiccm9vdDpwYXNz應答RTSP/1.0200OKCSeq:2Session:12345678;timeout=60Transport:RTP/AVP;unicast;client_port=200
17、00-20001;server_port=50000-50001;ssrc=B0BA7855;mode="PLAY"Date:Wed,16Jul200812:48:47GMT例如:請求SETUPrtsp:/myserver/live.mp4trackID=2RTSP/1.0CSeq:3User-Agent:VisionMCTransport:RTP/AVP;unicast;client_port=20002-20003Session:12345678Authorization:Basiccm9vdDpwYXNz應答RTSP/1.0200OKCSeq:3Session:123
18、45678;timeout=60Transport:RTP/AVP;unicast;client_port=20002-20003;server_port=50002-50003;ssrc=D7EB59C0;mode="PLAY"Date:Wed,16Jul200812:48:48GMTTransport頭字段定義:Transport="Transport"":"1#transport-spectransport-spec=transport-protocol/profile/lower-transportparametertrans
19、port-protocol="RTP"profile="AVP"lower-transport="TCP"|"UDP"parameter=("unicast"|"multicast")address "-" channel port port 1#mode <">ttlportssrcchanneladdressmodeMethod|"""destination""=&
20、quot;|"""interleaved""="channel|"""append"|"""ttl""="ttl|"""layers""="1*DIGIT|"""port""="port"-"port|"""client_port""="p
21、ort"-"|"""server_port""="port"-"|"""ssrc""="ssrc|"""mode"=<">1*3(DIGIT)=1*5(DIGIT)=8*8(HEX)=1*3(DIGIT)=host=<">Method<">|Example:Transport:RTP/
22、AVP;multicast;ttl=127;mode="PLAY",RTP/AVP;unicast;client_port=3456-3457;mode="PLAY"1.6 RTSPPLAY這個PLAY用于啟動(當暫停時重啟)交付數(shù)據(jù)給客戶端PLAY命令的應答消息包含如下附加的頭字段:頭字段描述Range播放時間段.RTP-Info關(guān)于RTP流的信息。包含相關(guān)的流的第一個包的序列號。例如:請求PLAYrtsp:/myserver/live.mp4RTSP/1.0CSeq:4User-Agent:VisionMCSession:12345678Author
23、ization:Basiccm9vdDpwYXNz應答RTSP/1.0200OKCSeq:4Session:12345678Range:npt=0.645272-RTP-Info:url=rtsp:/myserver/live.mp4?trackID=1;seq=46932;rtptime=1027887748,url=rtsp:/myserver/live.mp4?trackID=2;seq=3322;rtptime=611053482Date:Wed,16Jul200812:48:48GMT例如:Playbacktherecording“myrecording”.請求PLAYrtsp:/m
24、yserver/live.mp4?recordingid=”myrecordingRTSP/1.0CSeq:4User-Agent:VisionMCSession:12345678Authorization:Basiccm9vdDpwYXNz1.7 RTSPPAUSEPAUSE請求用于臨時停止服務端的數(shù)據(jù)的交付。使用PLAY來重新啟動數(shù)據(jù)交付。例如:請求PAUSErtsp:/myserver/live.mp4RTSP/1.0CSeq:5User-Agent:VisionMCSession:12345678Authorization:Basiccm9vdDpwYXNz應答RTSP/1.0200O
25、KCSeq:5Session:12345678Date:Wed,16Jul200812:48:49GMT1.8 RTSPTEARDOWNTEARDOWN請求用于終止來自服務端的數(shù)據(jù)的傳輸。例如:請求TEARDOWNrtsp:/myserver/live.mp4RTSP/1.0CSeq:6User-Agent:VisionMCSession:12345678Authorization:Basiccm9vdDpwYXNz應答RTSP/1.0200OKCSeq:6Session:12345678Date:Wed,16Jul200812:49:01GMT1.9 RTSPSET_PARAMETERSET
26、_PARAMETER命令用于請求盡快生成一個I幀。例如當開始錄像的時候。必須包含X-Request-Key-Frame:1的頭字段。請求SET_PARAMETERrtsp:/myserver/live.mp4RTSP/1.0CSeq:7Session:12345678Authorization:Basiccm9vdDpwYXNzX-Request-Key-Frame:1Content-Type:text/parametersContent-Length:19Renew-Stream:yes應答RTSP/1.0200OKCSeq:8Session:12345678Date:Wed,16Jul20
27、0813:01:25GMT1.10 RTSPGET_PARAMETER標準協(xié)議中GET_PARAMETER可以用于查詢參數(shù)狀態(tài)目前設(shè)備主要通過GET命令來查詢設(shè)備參數(shù),所以GET_PARAMETER用處不大,目前主要用來用做會話?;钫埱?請求GET_PARAMETERrtsp:/myserver/live.mp4RTSP/1.0CSeq:7Session:12345678Authorization:Basiccm9vdDpwYXNz應答RTSP/1.0200OKCSeq:8Session:12345678Date:Wed,16Jul200813:01:25GMT1.11 RTSP代理服務器擴展
28、協(xié)議1.11.1 設(shè)備注冊前端設(shè)備通過向RTSP代理服務器發(fā)送OPTIONS命令進行注冊注冊的時候,必須包含如下的頭字段:X-Proxy-ID:前端設(shè)備的序列號.X-LocalAddress:前端設(shè)備的本地IP地址.3.11.2連接請求服務端通過向前端設(shè)備發(fā)送OPTIONS命令請求新的RTSP連接這個方法主要用于多通道的前端設(shè)備.請求的時候,必須包含如下的頭字段:X-Invite:要請求的通道的URL.3.11.2注冊通道連接前端設(shè)備收到服務端的連接請求時,將向服務端創(chuàng)建一個新的TCP連接,并通過發(fā)送OPTIONS命令進行注冊新的通道.注冊的時候,必須包含如下的頭字段:X-Proxy-ID:前
29、端設(shè)備的序列號.X-LocalAddress:前端設(shè)備的本地IP地址.例如:注冊:前端設(shè)備=>轉(zhuǎn)發(fā)服務器OPTIONS*RTSP/1.0X-Proxy-ID:0006F609CA03X-LocalAddress:92:2100CSeq:13User-Agent:Linux/2.6.14,M898v2/3.10.218,(MAC:0006F609CA03)請求建立通道連接,一般一個通道建立一個連接.OPTIONS/live/0006F609CA03RTSP/1.0X-Invite:/live/0006F609CA03/live2.mp4CSeq:0前端設(shè)備收到
30、上面的請求后,向轉(zhuǎn)發(fā)服務器創(chuàng)建一個新的連接,并發(fā)送如下的OPTIONS命令OPTIONS*RTSP/1.0X-Proxy-Channel:/live/0006F609CA03/live2.mp4X-LocalAddress:92:2757CSeq:1User-Agent:Linux/2.6.14,M898v2/3.10.218,(MAC:0006F609CA03)X-Proxy-Channel:用于指示當前連接綁定的通道,和上面的X-Invite頭字段的值必須完全相同.1.12 RTSP/RTP交錯傳輸方式.實現(xiàn)RTSP的系統(tǒng)必須支持通過TCP傳輸RTSP數(shù)據(jù)包,并支持U
31、DP。對UDP和TCP,RTSP服務器的缺省端口都是554。許多目的一致的RTSP包被打包成單個低層UDP或TCP流。RTSP數(shù)據(jù)可與RTP和RTCP包交錯傳輸,即可以通過TCP傳輸RTP包。不像HTTP,RTSP消息必須總是包含一個內(nèi)容長度頭(Content-Length),無論消息是否包含消息內(nèi)容。如果沒有指定消息內(nèi)容的長度則默認消息的內(nèi)容的長度為0。當RTP通過TCP和RTSP消息交錯傳輸時,必須在RTP包前加4個字節(jié)長度的頭,它的結(jié)構(gòu)如下:BYTE必須是“$”or0x24BYTEChannelid,在SETUP消息中Transport頭字段中interleaved參數(shù)指定.WORD數(shù)據(jù)
32、包的長度(從接下來的數(shù)據(jù)開始算起,不包括這4個字節(jié)的頭的長度)例如:C->S:SETUPrtsp:/CSeq:2Transport:RTP/AVP/TCP;interleaved=0-1S->C:RTSP/1.0200OKCSeq:2Date:05Jun199718:57:18GMTTransport:RTP/AVP/TCP;interleaved=0-1Session:12345678C->S:PLAYrtsp:/CSeq:3Session:12345678S->C:RTSP/1.0200OKCSeq:3Session:12345678
33、Date:05Jun199718:59:15GMTRTP-Info:url=rtsp:/seq=232433;rtptime=972948234S->C:$0002bytelength"length"bytesdata,w/RTPheaderS->C:$0002bytelength"length"bytesdata,w/RTPheaderS->C:$0012bytelength"length"bytesRTCPpacket4 SDP協(xié)議4.1 SDP協(xié)議簡介會話描述協(xié)議(SDP)為會話通知、會
34、話邀請和其它形式的多媒體會話初始化等目的提供了多媒體會話描述。會話目錄用于協(xié)助多媒體會議的通告,并為會話參與者傳送相關(guān)設(shè)置信息。SDP即用于將這種信息傳輸?shù)浇邮斩?。SDP完全是一種會話描述格式它不屬于傳輸協(xié)議它只使用不同的適當?shù)膫鬏攨f(xié)議,包括會話通知協(xié)議(SAP)、會話初始協(xié)議(SIP)、實時流協(xié)議(RTSP)、MIME擴展協(xié)議的電子郵件以及超文本傳輸協(xié)議(HTTP)。SDP的設(shè)計宗旨是通用性,它可以應用于大范圍的網(wǎng)絡環(huán)境和應用程序,而不僅僅局限于組播會話目錄,但SDP不支持會話內(nèi)容或媒體編碼的協(xié)商。SDP文本信息包括:會話名稱和意圖;會話持續(xù)時間;構(gòu)成會話的媒體;有關(guān)接收媒體的信息(地址等)
35、。Sessiondescriptionv=(protocolversion)o=(owner/creatorandsessionidentifier).s=(sessionname)i=*(sessioninformation)u=*(URIofdescription)e=*(emailaddress)p=*(phonenumber)c=*(connectioninformation-notrequiredifincludedinallmedia)b=*(bandwidthinformation)Oneormoretimedescriptions(seebelow)z=*(timezonead
36、justments)k=*(encryptionkey)a=*(zeroormoresessionattributelines)Zeroormoremediadescriptions(seebelow)Timedescriptiont=(timethesessionisactive)r=*(zeroormorerepeattimes)Mediadescriptionm=(medianameandtransportaddress)i=*(mediatitle)c=*(connectioninformation-optionalifincludedatsession-level)b=*(bandw
37、idthinformation)k=*(encryptionkey)a=*(zeroormoremediaattributelines)4.2 協(xié)議結(jié)構(gòu)SDP信息是文本信息,采用UTF-8編碼中的ISO10646字符集。SDP會話描述如下:(標注*符號的表示可選字段)* v=(協(xié)議版本)* o=(所有者/創(chuàng)建者和會話標識符)* s=(會話名稱)* i=*(會話信息)* u=*(URI描述)* e=*(Email地址)* p=*(電話號碼)* c=*(連接信息一如果包含在所有媒體中,則不需要該字段)* b=*(帶寬信息)一個或更多時間描述(如下所示)* z=*(時間區(qū)域調(diào)整)* k=*(加密密鑰
38、)* a=*(0個或多個會話屬性行)* 0個或多個媒體描述(如下所示)時間描述* t=(會話活動時間)* r=*(0或多次重復次數(shù))媒體描述* m=(媒體名稱和傳輸?shù)刂罚? i=*(媒體標題)* c=*(連接信息如果包含在會話層則該字段可選)* b=*(帶寬信息)* k=*(加密密鑰)* a=*(0個或多個會話屬性行5 H.264視頻RTP負載格式5.1 網(wǎng)絡抽象層單元類型(NALU)NALU頭由一個字節(jié)組成,它的語法如下+|0|1|2|3|4|5|6|7|+-+-+-+-+-+-+-+-+|F|NRI|Type|+F:1個比特.forbidden_zero_bit.在H.264規(guī)范中規(guī)定了這
39、一位必須為0.NRI:2個比特.nal_ref_idc.取0011,似乎指示這個NALU的重要性,如00的NALU解碼器可以丟棄它而不影響圖像的回放.不過一般情況下不太關(guān)心這個屬性.Type:5個比特.nal_unit_type.這個NALU單元. 簡述如下 :0 沒有定義1-23 NAL 單元24 STAP-A25 STAP-B26 MTAP1627 MTAP2428 FU-A29 FU-B30-31 沒有定義單個 NAL 單元包單一時間的組合包單一時間的組合包多個時間的組合包多個時間的組合包分片的單元分片的單元5.2. 打包模式RFC 3550RTP 頭的結(jié)構(gòu) .3012345678901
40、23456789012345678901+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|V=2|P|X|CC|M|PT|sequencenumber|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|timestamp|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|synchronizationsource(SSRC)identifier|+=+=+=+
41、=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+contributing source (CSRC)Iidentifiers|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+負載類型Payloadtype(PT):7bits序歹U號Sequencenumber(SN):16bits時間戳Timestamp:32bitsH.264Payload格式定義了三種不同的基本的負載(Payload)結(jié)構(gòu).接收端可能通過RTPPayload的第一個字節(jié)來識別它們
42、.這一個字節(jié)類似NALU頭的格式,而這個頭結(jié)構(gòu)的NAL單元類型字段則指由了代表的是哪一種結(jié)構(gòu),這個字節(jié)的結(jié)構(gòu)如下,可以看由它和H.264的NALU頭結(jié)構(gòu)是一樣的.+|0|1|2|3|4|5|6|7|+-+-+-+-+-+-+-+-+|F|NRI|Type|+字段Type:這個RTPpayload中NAL單元的類型.這個字段和H.264中類型字段的區(qū)別是,當type的值為2431表示這是一個特別格式的NAL單元,而H.264中,單一時間的組合包單一時間的組合包多個時間的組合包多個時間的組合包分片的單元分片的單元只取123是有效的值.24STAP-A25STAP-B26MTAP1627MTAP24
43、28FU-A29FU-B30-31沒有定義可能的結(jié)構(gòu)類型分別有:1.單一NAL單元模式即一個RTP包僅由一個完整的NALU組成.這種情況下RTPNAL頭類型字段和原始的H.264的NALU頭類型字段是一樣的.2.組合封包模式即可能是由多個NAL單元組成一個RTP包.分別有4種組合方式:STAP-A,STAP-B,MTAP16,MTAP24.那么這里的類型值分別是24,25,26以及27.3.分片封包模式用于把一個NALU單元封裝成多個RTP包.存在兩種類型FU-A和FU-B.類型值分別是28和29.2.1單一NAL單元模式對于NALU的長度小于MTU大小的包,一般采用單一NAL單元模式.對于一
44、個原始的H.264NALU單元常由StartCodeNALUHeaderNALUPayload三部分組成,其中StartCode用于標示這是一個NALU單元的開始,必須是"00000001"或"000001",NALU頭僅一個字節(jié),其后都是NALU單元內(nèi)容.打包時去除"000001"或"00000001"的開始碼,把其他數(shù)據(jù)封包的RTP包即可.012301234567890123456789012345678901+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
45、-+-+-+-+-+-+|F|NRI|type|+-+-+-+-+-+-+-+-+|Bytes2.nofaSingleNALunit|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|:.OPTIONALRTPpadding|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+如有一個H.264的NALU是這樣的:000000016742A01E23560E2F.這是一個序列參數(shù)集NAL單元.00000001是四個字節(jié)的開始碼,67是NALU頭,42開始的數(shù)據(jù)是NALU內(nèi)容.封裝成RTP包將如下:RTP
46、Header6742A01E23560E2F即只要去掉4個字節(jié)的開始碼就可以了.2.2組合封包模式其次,當NALU的長度特別小時,可以把幾個NALU單元封在一個RTP包中.012301234567890123456789012345678901+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|RTPHeaderI+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|STAP-ANALHDR|NALU1Size|NALU1HDR|+-+-+-+-
47、+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|NALU1Data|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|NALU2Size|NALU2HDR|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|NALU2Data|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|:.OPTIONALRTPpadding|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
48、+-+-+-+-+-+-+-+-+-+-+-+-+-+2.3FragmentationUnits(FUs).而當NALU的長度超過MTU時,就必須對NALU單元進行分片封包.也稱為FragmentationUnits(FUs).0123456789012345678901234567+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|FUindicator|FUheader|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+FUpayload+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
49、-+:OPTIONALRTPpadding+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-Figure14.RTPpayloadformatforFU-ATheFUindicatoroctethasthefollowingformat:+|0|1|2|3|4|5|6|7|+-+-+-+-+-+-+-+-+|F|NRI|Type|+TheFUheaderhasthefollowingformat:+|0|1|2|3|4|5|6|7|+-+-+-+-+-+-+-+-+|S|E|R|Type|+如有一個H.264的NALU是這樣的:00
50、0000016742A01E23560E2F.000000016742A01E23560E2F.這是一個序列參數(shù)集NAL單元.00000001是四個字節(jié)的開始碼,67是NALU頭,42開始的數(shù)據(jù)是NALU內(nèi)容.封裝成RTP包可能如下:RTPHeader78,STAP-ANALHDR,一個字節(jié)長度,兩個字節(jié)6742A01E23560E2F.長度,兩個字節(jié)6742A01E23560E2F.5.3.SDP參數(shù)下面描述了如何在SDP中表示一個H.264流:."m="行中的媒體名必須是"video"."a=rtpmap"行中的編碼名稱必須是&q
51、uot;H264"."a=rtpmap"行中的時鐘頻率必須是90000.其他參數(shù)都包括在"a=fmtp"行中.如:m=video49170RTP/AVP98a=rtpmap:98H264/90000a=fmtp:98profile-level-id=42A01E;sprop-parameter-sets=Z0IACpZTBYmI,aMljiA=下面介紹一些常用的參數(shù).1.1 packetization-mode:表示支持的封包模式.當packetization-mode的值為0時或不存在時,必須使用單一NALU單元模式.當packetizati
52、on-mode的值為1時必須使用非交錯(non-interleaved)封包模式.當packetization-mode的值為2時必須使用交錯(interleaved)封包模式.這個參數(shù)不可以取其他的值.1.2 sprop-parameter-sets:這個參數(shù)可以用于傳輸H.264的序列參數(shù)集和圖像參數(shù)NAL單元.這個參數(shù)的值采用Base64進行編碼.不同的參數(shù)集間用","號隔開.1.3 profile-level-id:這個參數(shù)用于指示H.264流的profile類型和級別.由Base16(十六進制)表示的3個字節(jié).第一個字節(jié)表示H.264的Profile類型,第三個字
53、節(jié)表示H.264的Profile級別.1.4 max-mbps:這個參數(shù)的值是一個整型,指出了每一秒最大的宏塊處理速度.6 示例設(shè)備注冊:WARN951616:36:29OPTIONS*RTSP/1.0X-Proxy-ID:0006F609CA03X-LocalAddress:92:4314User-Agent:Linux/2.6.14,M898v2/3.10.218,(MAC:0006F609CA03)客戶端請求第二個通道INFO951616:36:37NewConnection:1.WARN951616:36:37DESCRIBE/live/0006F609CA03/live2.mp4
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度出租車專用座套批量定制合同4篇
- 2025年度寵物救助與領(lǐng)養(yǎng)推廣合作協(xié)議4篇
- 2025年度農(nóng)業(yè)物聯(lián)網(wǎng)技術(shù)應用推廣合作框架協(xié)議4篇
- 2025年內(nèi)蒙古自治區(qū)農(nóng)牧廳農(nóng)業(yè)資源節(jié)約與循環(huán)利用合作協(xié)議2篇
- 2025年度文化藝術(shù)交流活動演員邀請合同樣本4篇
- 二零二五年度抹灰工程安全施工及售后維護合同3篇
- 2025年度高端彩色打印機設(shè)備批發(fā)買賣合同書4篇
- 全球化進程中的文化交流-深度研究
- 可持續(xù)咖啡品牌競爭力分析-深度研究
- 2025年度幕墻施工勞務分包合同范本5篇
- 電化學儲能電站安全規(guī)程
- 幼兒園學習使用人民幣教案教案
- 2023年浙江省紹興市中考科學真題(解析版)
- 語言學概論全套教學課件
- 大數(shù)據(jù)與人工智能概論
- 《史記》上冊注音版
- 2018年湖北省武漢市中考數(shù)學試卷含解析
- 測繪工程產(chǎn)品價格表匯編
- 《腎臟的結(jié)構(gòu)和功能》課件
- 裝飾圖案設(shè)計-裝飾圖案的形式課件
- 護理學基礎(chǔ)教案導尿術(shù)catheterization
評論
0/150
提交評論