九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

嵌入式LINUX應(yīng)用編程-視頻服務(wù)器

上傳人:fgh****35 文檔編號(hào):247454466 上傳時(shí)間:2024-10-18 格式:PPT 頁(yè)數(shù):65 大小:1.14MB
收藏 版權(quán)申訴 舉報(bào) 下載
嵌入式LINUX應(yīng)用編程-視頻服務(wù)器_第1頁(yè)
第1頁(yè) / 共65頁(yè)
嵌入式LINUX應(yīng)用編程-視頻服務(wù)器_第2頁(yè)
第2頁(yè) / 共65頁(yè)
嵌入式LINUX應(yīng)用編程-視頻服務(wù)器_第3頁(yè)
第3頁(yè) / 共65頁(yè)

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《嵌入式LINUX應(yīng)用編程-視頻服務(wù)器》由會(huì)員分享,可在線閱讀,更多相關(guān)《嵌入式LINUX應(yīng)用編程-視頻服務(wù)器(65頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,Click to edit Master title style,嵌入式,LINUX,應(yīng)用編程,視頻服務(wù)器篇,方勇軍,2009,年,11,月,10,日,2,嵌入式,LINUX,編程,-,視頻服務(wù)器,V4L2,編程,RTSP,協(xié)議,RTP,協(xié)議,視頻服務(wù)器案例,3,V4l2,編程,-,關(guān)于視頻的基本概念,1.,視頻分辨率,常用的數(shù)字圖像分辨率格式有:,QCIF(176144),、,CIF(352288),、,1/2D1(352

2、576),、,2/3D1(480576),、,D1(720576),、,QQVGA(160120),、,QVGA(320240),、,VGA(640480),2.,一些壓縮標(biāo)準(zhǔn),MJPEG Motion JPEG 2000 MPEG-1 MPEG-2 MPEG-4 ASP MPEG-4/AVC H.120 H.261 H.262 H.263 H.264AMV AVS Bink Dirac Indeo Pixlet RealVideo RTVideo SheerVideo Smacker Snow Theora VC-1 VP6 VP7 VP8 WMV,3.,一些音頻壓縮標(biāo)準(zhǔn),MPEG-1 La

3、yer III (MP3) MPEG-1 Layer II MPEG-1 Layer I AAC HE-AAC,G.711 G.718 G.719 G.722 G.722.1 G.722.2 G.723 G.723.1 G.726 G.728 G.729 G.729.1 G.729a AC3 AMR Apple Lossless ATRAC FLAC iLBC Monkeys Audio -law Musepack Nellymoser OptimFROG RealAudio RTAudio SHN Siren Speex Vorbis WavPack WMA TAK,4.,一些視頻編碼格式,

4、文件格式,3GP ASF AVI Bink DMF DPX FLV Matroska MP4 MXF NUT Ogg Ogg Media QuickTime RealMedia Smacker RIFF VOB,4,V4L2,編程,1.,打開(kāi)設(shè)備,打開(kāi)視頻設(shè)備,在,V4L2,中,視頻設(shè)備被看做一個(gè)文件。使用,open,函數(shù)打開(kāi)這個(gè)設(shè)備:,/,用非阻塞模式打開(kāi)攝像頭設(shè)備,int cameraFd;,cameraFd = open(/dev/video0, O_RDWR | O_NONBLOCK, 0);,/,如果用阻塞模式打開(kāi)攝像頭設(shè)備,上述代碼變?yōu)椋?cameraFd = open(/dev/

5、video0, O_RDWR, 0);,應(yīng)用程序能夠使用阻塞模式或非阻塞模式打開(kāi)視頻設(shè)備,如果使用非阻塞模式調(diào)用視頻設(shè)備,即使尚未捕獲到信息,驅(qū)動(dòng)依舊會(huì)把緩存(,DQBUFF,)里的東西返回給應(yīng)用程序。,5,V4L2,編程,2.,設(shè)定屬性及采集方式,設(shè)定屬性及采集方式,打開(kāi)視頻設(shè)備后,可以設(shè)置該視頻設(shè)備的屬性,例如裁剪、縮放等。這一步是可選的。在,Linux,編程中,一般使用,ioctl,函數(shù)來(lái)對(duì)設(shè)備的,I/O,通道進(jìn)行管理:,int,ioctl (,int,fd,unsigned long int,request, ./*args*/);,在進(jìn)行,V4L2,開(kāi)發(fā)中,常用的命令如下:,VIDI

6、OC_REQBUFS,:分配內(nèi)存,VIDIOC_QUERYBUF,:把,VIDIOC_REQBUFS,中分配的數(shù)據(jù)緩存轉(zhuǎn)換成物理地址,VIDIOC_QUERYCAP,:查詢驅(qū)動(dòng)功能,VIDIOC_ENUM_FMT,:獲取當(dāng)前驅(qū)動(dòng)支持的視頻格式,VIDIOC_S_FMT,:設(shè)置當(dāng)前驅(qū)動(dòng)的頻捕獲格式,VIDIOC_G_FMT,:讀取當(dāng)前驅(qū)動(dòng)的頻捕獲格式,VIDIOC_TRY_FMT,:驗(yàn)證當(dāng)前驅(qū)動(dòng)的顯示格式,VIDIOC_CROPCAP,:查詢驅(qū)動(dòng)的修剪能力,VIDIOC_S_CROP,:設(shè)置視頻信號(hào)的邊框,VIDIOC_G_CROP,:讀取視頻信號(hào)的邊框,VIDIOC_QBUF,: 把內(nèi)存加入緩

7、存隊(duì)列,VIDIOC_DQBUF,:從緩存隊(duì)列讀取數(shù)據(jù),VIDIOC_STREAMON,:開(kāi)始視頻顯示函數(shù),VIDIOC_STREAMOFF,:結(jié)束視頻顯示函數(shù),VIDIOC_QUERYSTD,:檢查當(dāng)前視頻設(shè)備支持的標(biāo)準(zhǔn),例如,PAL,或,NTSC,。,6,V4L2,編程,設(shè)定屬性及采集方式,檢查當(dāng)前視頻設(shè)備支持的標(biāo)準(zhǔn),在亞洲,一般使用,PAL,(,720X576,)制式的攝像頭,而歐洲一般使用,NTSC,(,720X480,),使用,VIDIOC_QUERYSTD,來(lái)檢測(cè):,v4l2_std_id std;,do ,ret = ioctl(fd, VIDIOC_QUERYSTD, , wh

8、ile (ret = -1 ,switch (std) ,case V4L2_STD_NTSC:,case V4L2_STD_PAL:,設(shè)置視頻捕獲格式,當(dāng)檢測(cè)完視頻設(shè)備支持的標(biāo)準(zhǔn)后,還需要設(shè)定視頻捕獲格式,結(jié)構(gòu)如下:,struct v4l2_format fmt;,memset ( ,fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;,fmt.fmt.pix.width = 720;,fmt.fmt.pix.height = 576;,fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_YUYV;,fmt.fmt.pix.field =

9、V4L2_FIELD_INTERLACED;,if (ioctl(fd, VIDIOC_S_FMT, &fmt) = -1),return -1;,7,V4L2,編程,設(shè)定屬性及采集方式,v4l2_format,結(jié)構(gòu)如下:,struct v4l2_format,enum v4l2_buf_type type;,/,數(shù)據(jù)流類型,V4L2_BUF_TYPE_VIDEO_CAPTURE,union ,struct v4l2_pix_format pix;,struct v4l2_window win;,struct v4l2_vbi_format vbi;,_u8 raw_data200;, fmt

10、;,;,struct v4l2_pix_format,_u32 width;,/,寬,必須是,16,的倍數(shù),_u32 height;,/,高,必須是,16,的倍數(shù),_u32 pixelformat;,/,視頻數(shù)據(jù)存儲(chǔ)類型,例如是,YUV4,:,2,:,2,還是,RGB,enum v4l2_field field;,_u32 bytesperline;,_u32 sizeimage;,enum v4l2_colorspace colorspace;,_u32 priv;,;,8,V4L2,編程,視頻采集方式,內(nèi)核空間和用戶空間,操作系統(tǒng)一般把系統(tǒng)使用的內(nèi)存劃分成用戶空間和內(nèi)核空間,分別由應(yīng)用程序

11、管理和操作系統(tǒng)管理。應(yīng)用程序可以直接訪問(wèn)內(nèi)存的地址,而內(nèi)核空間存放的是供內(nèi)核訪問(wèn)的代碼和數(shù)據(jù),用戶不能直接訪問(wèn)。,v4l2,捕獲的數(shù)據(jù),最初是存放在內(nèi)核空間的,這意味著用戶不能直接訪問(wèn)該段內(nèi)存,必須通過(guò)某些手段來(lái)轉(zhuǎn)換地址。,一共有三種視頻采集方式:,使用,read,、,write,方式:,在用戶空間和內(nèi)核空間不斷拷貝數(shù)據(jù),占用了大量用戶內(nèi)存空間,效率不高。,內(nèi)存映射方式:,把設(shè)備里的內(nèi)存映射到應(yīng)用程序中的內(nèi)存控件,直接處理設(shè)備內(nèi)存,這是一種有效的方式。,用戶指針模式:,與前種類似,區(qū)別在于內(nèi)存片段由應(yīng)用程序自己分配。這點(diǎn)需要在,v4l2_requestbuffers,里將,memory,字段設(shè)

12、置成,V4L2_MEMORY_USERPTR,。,9,V4L2,編程,內(nèi)存映射方式采集視頻,分配設(shè)備緩沖:,struct v4l2_requestbuffers reqbuf;,memset (,reqbuf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;,reqbuf.memory = V4L2_MEMORY_MMAP;,reqbuf.count = 20;,if (-1 = ioctl (fd, VIDIOC_REQBUFS, &reqbuf) ,if (errno = EINVAL),printf (Video capturing or mmap-streamin

13、g is not supportedn);,else,perror (VIDIOC_REQBUFS); exit (EXIT_FAILURE); exit(-1);,V4L2,編程,內(nèi)存映射方式采集視頻,v4l2_requestbuffers,結(jié)構(gòu)如下:,struct v4l2_requestbuffers,_u32 count;,/,緩存數(shù)量,也就是說(shuō)在緩存隊(duì)列里保持多少?gòu)堈掌?enum v4l2_buf_type type;,/,數(shù)據(jù)流類型,enum v4l2_memory memory;,/ V4L2_MEMORY_MMAP,或,/V4L2_MEMORY_USERPTR,_u32 res

14、erved2;,;,10,11,V4L2,編程,內(nèi)存映射方式采集視頻,獲取并記錄緩存的物理空間,使用,VIDIOC_REQBUFS,,我們獲取了,req.count,個(gè)緩存,下一步通過(guò)調(diào)用,VIDIOC_QUERYBUF,命令來(lái)獲取這些緩存的地址,然后使用,mmap,函數(shù)轉(zhuǎn)換成應(yīng)用程序中的絕對(duì)地址,最后把這段緩存放入緩存隊(duì)列:,typedef struct VideoBuffer ,void *start;,size_t length;, VideoBuffer;,12,V4L2,編程,內(nèi)存映射方式采集視頻,VideoBuffer* buffers = calloc( req.count, s

15、izeof(*buffers) );,struct v4l2_buffer buf;,for (numBufs = 0; numBufs req.count; numBufs+) ,memset( ,buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;,buf.memory = V4L2_MEMORY_MMAP;,buf.index = numBufs;,/,讀取緩存地址,if (ioctl(fd, VIDIOC_QUERYBUF, ,buffersnumBufs.length = buf.length;,/,轉(zhuǎn)換成相對(duì)地址,buffersnumBufs.start

16、= mmap(NULL, buf.length, PROT_READ | PROT_WRITE, MAP_SHARED,fd, buf.m.offset);,if (buffersnumBufs.start = MAP_FAILED) return -1; ,/,放入緩存隊(duì)列,if (ioctl(fd, VIDIOC_QBUF, ,/,放入緩存隊(duì)列,enum v4l2_buf_type type = V4L2_BUF_TYPE_VIDEO_CAPTURE;,if (-1 = ioctl (fd, VIDIOC_STREAMON, &type),exit (VIDIOC_STREAMON);,1

17、3,V4L2,編程,內(nèi)存映射方式采集視頻,采集一幀視頻數(shù)據(jù),數(shù)據(jù)緩存采用,FIFO(,先進(jìn)先出,),的方式,當(dāng)應(yīng)用程序調(diào)用緩存數(shù)據(jù)時(shí),緩存隊(duì)列將最先采集到的視頻數(shù)據(jù)緩存送出,并重新采集一張視頻數(shù)據(jù)。這個(gè)過(guò)程需要用到兩個(gè),ioctl,命令,VIDIOC_DQBUF,和,VIDIOC_QBUF,:,struct v4l2_buffer buf;,memset(,buf.type=V4L2_BUF_TYPE_VIDEO_CAPTURE;,buf.memory=V4L2_MEMORY_MMAP;,buf.index=0;,/,讀取緩存,,若在緩沖隊(duì)列中無(wú)視頻數(shù)據(jù),則此操作會(huì)阻塞,if (ioctl(c

18、ameraFd, VIDIOC_DQBUF, &buf) = -1),return -1;,/TODO :,已讀取一幀數(shù)據(jù),在此加入代碼進(jìn)行處理,/process_image(buf);,/,重新放入緩存隊(duì)列,if (ioctl(cameraFd, VIDIOC_QBUF, &buf) = -1) ,return -1;,14,V4L2,編程,關(guān)閉視頻設(shè)備,若使用內(nèi)存映射或用戶自定義內(nèi)存映射的方式捕捉視頻,則在結(jié)束一個(gè)視頻流前,應(yīng)先使用,VIDIOC_STREAMOFF,停止視頻流顯示:,enum v4l2_buf_type = V4L2_BUF_TYPE_VIDEO_CAPTURE;,if

19、(-1 = xioctl (fd, VIDIOC_STREAMOFF, &type) ,perror (VIDIOC_STREAMOFF);,還需要使用,munmap,方法取消映射,for (i = 0; i n_buffers; +i) ,if (-1 = munmap (buffersi.start, buffersi.length),perror(munmap);,使用,close,函數(shù)關(guān)閉一個(gè)視頻設(shè)備,close(cameraFd),詳細(xì)參考,Video for Linux Two API Specification,15,RTSP,協(xié)議,RTSP,簡(jiǎn)介,什么是,RTSP,協(xié)議,Rea

20、l Time Streaming Protocol,或者,RTSP,(實(shí)時(shí)流媒體協(xié)議),,是,在,IP,網(wǎng)絡(luò)上傳輸流媒體數(shù)據(jù)的,應(yīng)用層協(xié)議,控制實(shí)時(shí)數(shù)據(jù)的傳送。,RTSP提供了一個(gè)可擴(kuò)展框架,使實(shí)時(shí)數(shù)據(jù),如音頻與視頻的受控、點(diǎn)播成為可能。數(shù)據(jù)源包括現(xiàn)場(chǎng)數(shù)據(jù)與存儲(chǔ)在剪輯中數(shù)據(jù)。,該協(xié)議目的在于控制多個(gè)數(shù)據(jù)發(fā)送連接,為選擇發(fā)送通道,如UDP、組播UDP與TCP,提供途徑,并為選擇基于RTP(RFC1889)上傳送機(jī)制提供方法。,(RTSP,協(xié)議詳細(xì)參考,RFC2326),什么是,RFC,Request For Comments (RFC),,是一系列以編號(hào)排定的文件。文件收集了有關(guān)因特網(wǎng)相關(guān)資訊,

21、以及,UNIX,和因特網(wǎng)社群的軟件文件。目前,RFC,文件是由,Internet Society,(,ISOC,)所贊助發(fā)行。,16,RTSP,協(xié)議,RTSP,與,HTTP,在,RTSP,里我們沒(méi)有,連接的概念,而由RTSP會(huì)話(session)代替(每次服務(wù)由服務(wù)器端保持一個(gè)帶標(biāo)簽的會(huì)話)。RTSP會(huì)話沒(méi)有綁定到傳輸層連接(如TCP連接)。因?yàn)殡m然在RTSP會(huì)話期間,RTSP客戶端可打開(kāi)或關(guān)閉多個(gè)對(duì)服務(wù)器端的可靠傳輸連接以發(fā)出RTSP 請(qǐng)求。但此外,也可能使用無(wú)連接傳輸協(xié)議,比如用UDP發(fā)送RTSP請(qǐng)求。,RTSP控制的流可能用到RTP,但RTSP操作并不依賴用于攜帶連續(xù)媒體的傳輸機(jī)制。實(shí)時(shí)

22、流協(xié)議在語(yǔ)法和操作上與HTTP/1.1類似,因此HTTP的擴(kuò)展機(jī)制大都可加入RTSP。,RTSP在很多方面還是和HTTP有很大的不同:,RTSP引入了很多新方法并且有不同的協(xié)議標(biāo)識(shí)符。,RTSP服務(wù)器在大多數(shù)默認(rèn)情況下需要維持一個(gè)狀態(tài),但HTTP是無(wú)狀態(tài)協(xié)議。,RTSP客戶機(jī)和服務(wù)器都可以發(fā)出請(qǐng)求。,數(shù)據(jù)由另一個(gè)協(xié)議傳送(有一特例除外)。,RTSP使用ISO 10646(UTF-8) 而不是ISO 8859-1,以配合當(dāng)前HTML的國(guó)際化。,RTSP使用URI請(qǐng)求時(shí)包含絕對(duì)URI。而由于歷史原因造成的向后兼容性問(wèn)題,HTTP/1.1只在請(qǐng)求中包含絕對(duì)路徑,把主機(jī)名放入單獨(dú)的標(biāo)題域中。,這使得“

23、虛擬主機(jī)”實(shí)現(xiàn)更為簡(jiǎn)便,一個(gè)單獨(dú)IP地址的主機(jī)可虛擬為幾個(gè)文件樹(shù)主機(jī)。,17,RTSP,協(xié)議,支持的操作,從媒體服務(wù)器上檢索媒體:,用戶可通過(guò)HTTP或其它方法請(qǐng)求一個(gè)表示描述。如表示是組播,表示描述就包含用于連續(xù)媒體的的組播地址和端口。如表示僅通過(guò)單播發(fā)送給用戶,用戶為了安全應(yīng)提供目的地址。,媒體服務(wù)器邀請(qǐng)進(jìn)入會(huì)議:,媒體服務(wù)器可被邀請(qǐng)參加正進(jìn)行的會(huì)議,或回放媒體,或記錄其中一部分,或全部。這種模式在分布式教育應(yīng)用上很有用,會(huì)議中幾方可輪流按遠(yuǎn)程控制按鈕。,將媒體加到現(xiàn)成講座中:,如服務(wù)器告訴用戶可獲得附加媒體內(nèi)容,對(duì)現(xiàn)場(chǎng)講座顯得尤其有用。,18,RTSP,協(xié)議,RTSP,狀態(tài),RTSP控制

24、,的流可,通過(guò)單獨(dú)協(xié)議發(fā)送,與控制通道無(wú)關(guān)。,例如,RTSP控制可通過(guò)TCP連接,而數(shù)據(jù)流通過(guò)UDP。因此,即使媒體服務(wù)器沒(méi)有收到請(qǐng)求,數(shù)據(jù)也會(huì)繼續(xù)發(fā)送。在會(huì)話生命期,單個(gè)媒體流可通過(guò)不同TCP連接順序發(fā)出請(qǐng)求來(lái)控制。所以,服務(wù)器需要維持能聯(lián)系流與RTSP請(qǐng)求的會(huì)話狀態(tài)。,RTSP中很多方法與狀態(tài)無(wú)關(guān),但下列方法在定義服務(wù)器流資源的分配與應(yīng)用上起著重要的作用:,SETUP:,讓服務(wù)器給流分配資源,啟動(dòng)RTSP會(huì)話。,PLAY與RECORD:,開(kāi)始由,SETUP 分配,的,流的數(shù)據(jù)傳輸。,PAUSE:,臨時(shí)停止流,而不釋放服務(wù)器資源。,TEARDOWN:,釋放流的資源,RTSP會(huì)話停止。,標(biāo)識(shí)狀

25、態(tài)的RTSP方法使用會(huì)話(session)標(biāo)題域識(shí)別RTSP會(huì)話,為回應(yīng)SETUP請(qǐng)求,服務(wù)器生成會(huì)話標(biāo)識(shí),。,19,RTSP,協(xié)議,RTSP,消息,RTSP是基于文本的協(xié)議,采用ISO 10646 字符集,使用UTF-8編碼方案。,行以CRLF中斷,但接收者本身可將CR和LF解釋成行終止符?;谖谋镜膮f(xié)議使以自描述方式增加可選參數(shù)更容易。,10646字符集避免敏感字符集切換,但對(duì)應(yīng)用來(lái)說(shuō)不可見(jiàn)。RTCP也采用這種編碼方案。帶有重要意義位的ISO 8859-1字符表示如100001x 10xxxxxx.。RTSP信息可通過(guò)任何低層傳輸協(xié)議攜帶。,請(qǐng)求包括方法、方法作用于其上的對(duì)象和進(jìn)一步描述方

26、法的參數(shù)。方法也可設(shè)計(jì)為在服務(wù)器端只需要少量或不需要狀態(tài)維護(hù)。當(dāng)信息體包含在信息中,信息體長(zhǎng)度有如下因素決定:,不管實(shí)體標(biāo)題域是否出現(xiàn)在信息中,不包括信息體的回應(yīng)信息總以標(biāo)題域后第一和空行結(jié)束。,如出現(xiàn)內(nèi)容長(zhǎng)度標(biāo)題域,其值以字節(jié)計(jì),表示信息體長(zhǎng)度。如未出現(xiàn)標(biāo)題域,其值為零。,20,RTSP,協(xié)議,消息類型,RTSP消息由客戶端到服務(wù)器的請(qǐng)求和由服務(wù)器到客戶端的回應(yīng)組成。,RTSP -message = Request | Response ; RTSP /1.0 messages,請(qǐng)求(Request)和回應(yīng)(Response)消息都使用RFC822中實(shí)體傳輸部分規(guī)定(作為消息中的有效載荷)的

27、消息格式。兩者的消息都可能包括一起始行,一個(gè)或多個(gè)標(biāo)題域(headers)、一行表示標(biāo)題域結(jié)束的空行(即CRLF前沒(méi)有內(nèi)容的行),和一個(gè)消息主體(message-body,可選)。,generic-message = start-line,*message-header,CRLF, message-body ,start-line = Request-Line | Status-Line,為了健壯性考慮,服務(wù)器應(yīng)該忽略任何在期望收到請(qǐng)求行時(shí)收到的空行。換句話說(shuō),如果服務(wù)器正在讀協(xié)議流,在一個(gè)消息開(kāi)始時(shí)如果首先收到了CRLF,這個(gè)CRLF符應(yīng)被忽略。,21,RTSP,協(xié)議,消息標(biāo)題,RTSP標(biāo)題

28、域,包括主標(biāo)題(General-Header,4.3節(jié))、請(qǐng)求標(biāo)題、回應(yīng)標(biāo)題(及實(shí)體標(biāo)題,都遵照RFC822-3.1,節(jié)7給出的通用格式定義。每個(gè)標(biāo)題域由后緊跟冒號(hào)的名字,單空格(SP),字符及域值組成。域名是大小寫(xiě)敏感的。雖然不提倡,標(biāo)題域還是可以擴(kuò)展成多行使用,只要這些行以一個(gè)以上的SP或HT開(kāi)頭就行。,RTSP-header = field-name : field-value CRLF,field-name = token,field-value = *( field-content | LWS ),field-content = ,標(biāo)題域接收的順序并不重要,但良好的習(xí)慣是,先發(fā)送主標(biāo)

29、題,然后是請(qǐng)求標(biāo)題或回應(yīng)標(biāo)題,最后是實(shí)體標(biāo)題。,當(dāng)且僅當(dāng)標(biāo)題域的全部域值都用逗號(hào)分隔的列表示時(shí)(即,#(值),多個(gè)有相同域名的RTSP標(biāo)題域才可以表示在一個(gè)消息里。而且必須能在不改變消息語(yǔ)法的前提下,將并發(fā)的域值加到第一個(gè)值后面,之間用逗號(hào)分隔,最終能將多個(gè)標(biāo)題域結(jié)合成“域名:域值”對(duì)。,22,RTSP,協(xié)議,消息主體和長(zhǎng)度,RTSP消息的消息主體(如果有)用來(lái)攜帶請(qǐng)求或回應(yīng)的主體。僅在使用傳輸編碼(Transfer-Encoding)時(shí)消息主體和實(shí)體主體才有所不同,這種情況在傳輸編碼標(biāo)題域中有詳細(xì)說(shuō)明。,message-body = entity-body,| ,傳輸編碼必須能解釋所有保證傳

30、輸安全和正確的應(yīng)用程序的傳輸編碼。傳輸編碼是消息而不是實(shí)體的一個(gè)屬性,因此可以由任一應(yīng)用程序隨著請(qǐng)求/回應(yīng)鏈添加或者刪除。,什么時(shí)候允許消息帶消息體的規(guī)則在請(qǐng)求和回應(yīng)兩種情況下有所不同。,在請(qǐng)求中有無(wú)消息主體的標(biāo)志是是否包含內(nèi)容長(zhǎng)度或請(qǐng)求消息標(biāo)題域中的傳輸編碼標(biāo)題域。只有當(dāng)請(qǐng)求方法允許有實(shí)體主體的時(shí)候才能在請(qǐng)求中包含消息主體。,而對(duì)于回應(yīng)消息來(lái)說(shuō),無(wú)論消息中是否存在消息主體都與請(qǐng)求方法和回應(yīng)狀態(tài)編碼無(wú)關(guān)。所有回應(yīng)標(biāo)題請(qǐng)求方法的消息都不能包含消息主體,盡管有時(shí)會(huì)因?yàn)榇嬖趯?shí)體標(biāo)題域而使人產(chǎn)生誤解。所有1(信息),204(無(wú)內(nèi)容),304(未修改)回應(yīng)都不包含消息主體。而其他回應(yīng)則都包含主體,盡管其

31、長(zhǎng)度有可能長(zhǎng)度為零。,23,消息主體和長(zhǎng)度,4.4 消息長(zhǎng)度,當(dāng)消息包含消息主體時(shí),消息主體的長(zhǎng)度由以下規(guī)則來(lái)決定(按優(yōu)先級(jí)高低順序排列):,1. 任何回應(yīng)消息都不包含消息主體(如1,204和304回應(yīng)),并且不管消息中是否存在實(shí)體標(biāo)題域都以消息標(biāo)題域后的第一行空行表示結(jié)束。,2. 如果內(nèi)容長(zhǎng)度標(biāo)題域存在,它在字節(jié)中的值就是消息主體的長(zhǎng)度。如果內(nèi)容標(biāo)題域不存在,則假設(shè)值為零。,3. 服務(wù)器關(guān)閉連接時(shí)。(關(guān)閉連接沒(méi)有用來(lái)表明請(qǐng)求主體結(jié)束,否則可能導(dǎo)致服務(wù)器不能回應(yīng)。,注意,RTSP不支持(至少現(xiàn)在)HTTP/1.1的塊傳輸編碼(詳見(jiàn)H3.6)并且要求有內(nèi)容長(zhǎng)度標(biāo)題域。,盡管表示描述長(zhǎng)度動(dòng)態(tài)產(chǎn)生,

32、但由于可獲得了表示描述返回長(zhǎng)度,使得服務(wù)器總是能決定表示描述長(zhǎng)度而不需使用塊傳輸編碼方式。只要有實(shí)體主體就必須有內(nèi)容長(zhǎng)度項(xiàng),這些規(guī)則保證了即使沒(méi)有給出明確長(zhǎng)度也能做出合理的操作。,24,RTSP,協(xié)議,應(yīng)答,狀態(tài)行:完整回應(yīng)消息的第一行就是狀態(tài)行,它依次由協(xié)議版本、數(shù)字形式的狀態(tài)代碼、及相應(yīng)的詞語(yǔ)文本組成,各元素間以空格(,SP,)分隔,除了結(jié)尾的,CRLF,外,不允許出現(xiàn)單獨(dú)的,CR,或,LF,符。,Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF,狀態(tài)代碼和原因分析:狀態(tài)代碼(,Status-Code,)由,3,

33、位數(shù)字組成,表示請(qǐng)求是否被理解或被滿足。原因分析是用簡(jiǎn)短的文字來(lái)描述狀態(tài)代碼產(chǎn)生的原因。狀態(tài)代碼用來(lái)支持自動(dòng)操作,原因分析是為人類用戶準(zhǔn)備的??蛻舳瞬恍枰獧z查或顯示原因分析。狀態(tài)代碼的第一位數(shù)字定義了回應(yīng)的類別,后面兩位數(shù)字沒(méi)有具體分類。首位數(shù)字有,5,種取值可能:,o 1xx:,:保留,將來(lái)使用。,o 2xx,:成功 操作被接收、理解、接受(,received, understood, accepted,)。,o 3xx,:重定向(,Redirection,) 要完成請(qǐng)求必須進(jìn)行進(jìn)一步操作。,o 4xx,:客戶端出錯(cuò) 請(qǐng)求有語(yǔ)法錯(cuò)誤或無(wú)法實(shí)現(xiàn)。,o 5xx,:服務(wù)器端出錯(cuò) 服務(wù)器無(wú)法實(shí)現(xiàn)合法

34、的請(qǐng)求。,25,RTSP,協(xié)議,回應(yīng)標(biāo)題域,回應(yīng)標(biāo)題域中包括不能放在狀態(tài)行中的附加回應(yīng)信息。該域還可以存放與服務(wù)器相關(guān)的信息,以及在對(duì)請(qǐng)求,URI,所指定資源進(jìn)行訪問(wèn)的下一步信息。,response-header = Location ; | Proxy-Authenticate ;,| Public ;,| Retry-After ; | Server ; | Vary ; | WWW-Authenticate ;,回應(yīng)標(biāo)題域名只有在與協(xié)議版本的變化結(jié)合起來(lái)后,才能進(jìn)行可靠的擴(kuò)展。實(shí)際上,新的或?qū)嶒?yàn)中的標(biāo)題域只要能被通訊各方識(shí)別,其語(yǔ)法就可使用,而無(wú)法識(shí)別的標(biāo)題域都將被視為實(shí)體域。,26,R

35、TSP,協(xié)議,連接,RTSP,請(qǐng)求可以幾種不同方式傳送:,1,、持久傳輸連接,用于多個(gè)請(qǐng)求,/,回應(yīng)傳輸。,2,、每個(gè)請(qǐng)求,/,回應(yīng)傳輸一個(gè)連接。,3,、無(wú)連接模式。 傳輸連接類型由,RTSP URI,來(lái)定義。對(duì),“rtsp”,開(kāi)頭的,URI,請(qǐng)求,需要持續(xù)連接;而,“rtspu”,開(kāi)頭的,URI,請(qǐng)求,調(diào)用,RTSP,請(qǐng)求發(fā)送,而不用建立連接。 不象,HTTP,,,RTSP,允許媒體服務(wù)器給媒體用戶發(fā)送請(qǐng)求。然而,這僅在持久連接時(shí)才支持,否則媒體服務(wù)器沒(méi)有可靠途徑到達(dá)用戶,這也是請(qǐng)求通過(guò)防火墻從媒體服務(wù)器傳到用戶的唯一途徑。 流水線操作: 支持持久連接或無(wú)連接的客戶端可能給其請(qǐng)求排隊(duì)。服務(wù)器

36、必須以收到請(qǐng)求的同樣順序發(fā)出回應(yīng)。,27,RTSP,協(xié)議,傳輸?shù)目煽啃约按_認(rèn),可靠性及確認(rèn):如果請(qǐng)求不是發(fā)送給組播組,接收者就確認(rèn)請(qǐng)求,如沒(méi)有確認(rèn)信息,發(fā)送者可在超過(guò)一個(gè)來(lái)回時(shí)間(,RTT,)后重發(fā)同一信息。,RTT,在,TCP,中估計(jì),初始值為,500 ms,。應(yīng)用緩存最后所測(cè)量的,RTT,,作為將來(lái)連接的初始值。如使用一個(gè)可靠傳輸協(xié)議傳輸,RTSP,,請(qǐng)求不允許重發(fā),,RTSP,應(yīng)用反過(guò)來(lái)依賴低層傳輸提供可靠性。如兩個(gè)底層可靠傳輸(如,TCP,和,RTSP,)應(yīng)用重發(fā)請(qǐng)求,有可能每個(gè)包損失導(dǎo)致兩次重傳。由于傳輸棧在第一次嘗試到達(dá)接收著者前不會(huì)發(fā)送應(yīng)用層重傳,接收者也不能充分利用應(yīng)用層重傳。

37、如包損失由阻塞引起,不同層的重發(fā)將使阻塞進(jìn)一步惡化。時(shí)序標(biāo)頭用來(lái)避免重發(fā)模糊性問(wèn)題,避免對(duì)圓錐算法的依賴。每個(gè)請(qǐng)求在,CSeq,頭中攜帶一個(gè)系列號(hào),每發(fā)送一個(gè)不同請(qǐng)求,它就加一。如由于沒(méi)有確認(rèn)而重發(fā)請(qǐng)求,請(qǐng)求必須攜帶初始系列號(hào)。 實(shí)現(xiàn),RTSP,的系統(tǒng)必須支持通過(guò),TCP,傳輸,RTSP,,并支持,UDP,。對(duì),UDP,和,TCP,,,RTSP,服務(wù)器的缺省端口都是,554,。許多目的一致的,RTSP,包被打包成單個(gè)低層,PDU,或,TCP,流。,RTSP,數(shù)據(jù)可與,RTP,和,RTCP,包交叉。不象,HTTP,,,RTSP,信息必須包含一個(gè)內(nèi)容長(zhǎng)度頭,無(wú)論信息何時(shí)包含負(fù)載。否則,,RTSP,

38、包以空行結(jié)束,后跟最后一個(gè)信息頭。,28,RTSP,協(xié)議,方法定義,方法定義,表示了對(duì)請(qǐng)求統(tǒng)一資源標(biāo)志符(,Request-URI,)識(shí)別的資源所執(zhí)行的操作。方法名區(qū)分大小寫(xiě)。將來(lái)可能定義新的方法。方法名可能不以美元符,(十進(jìn)制數(shù),24,)開(kāi)頭,但必須具有表征意義。,下表是對(duì)方法的一個(gè)小結(jié):,方法 方向 目標(biāo) 是否必需,DESCRIBE C - S P,S recommended,ANNOUNCE C - S,S -C P,S optional,GET PARAMETER C - S,S -C P,S optional,OPTIONS C - S,S -C P,S required(S ! C

39、: optional),PAUSE C - S P,S recommended,PLAY C - S P,S required,RECORD C - S P,S optional,REDIRECT S -C P,S optional,SETUP C - S S required,SET PARAMETER C - S,S -C P,S optional,TEARDOWN C - S P,S required,對(duì),RTSP,方法,和其操作方向及所操作對(duì)象(,P:,表示, S:,媒體流)的一個(gè)概覽,注意:,PAUSE,方法是推薦的,但在構(gòu)建一個(gè)全功能的服務(wù)器時(shí)可能不支持此方法,這時(shí)就不需要它,比如

40、對(duì)于,live feeds,。如果服務(wù)器不支持某個(gè)特殊方法,它必將返回,501 Not Implemented,,并且客戶端應(yīng)該不再向該服務(wù)器請(qǐng)求該方法。,29,RTSP,協(xié)議,OPTIONS,方法,OPTIONS,請(qǐng)求可能在任何時(shí)候發(fā)出,例如客戶端將要發(fā)出一個(gè)非標(biāo)準(zhǔn)的請(qǐng)求時(shí)。它不影響服務(wù)器狀態(tài)。,示例:,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, TEARD

41、OWN, PLAY, PAUSE,注意:這些都是必要的構(gòu)造特征(,necessarily fictional features,)。,30,RTSP,協(xié)議,DESCRIBE,方法,DESCRIBE,方法從服務(wù)器檢索表示的描述或媒體對(duì)象,這些資源通過(guò)請(qǐng)求統(tǒng)一資源定位符(,the request URL,)識(shí)別。此方法可能結(jié)合使用,Accept,首部域來(lái)指定客戶端理解的描述格式。服務(wù)器端用被請(qǐng)求資源的描述對(duì)客戶端作出響應(yīng)。,DESCRIBE,的答復(fù),-,響應(yīng)對(duì)(,reply-response pair,)組成了,RTSP,的媒體初始化階段。,示例:,C-S:,DESCRIBE rtsp:/ RTS

42、P/1.0,CSeq: 2,Accept: application/sdp, application/rtsl, application/mheg,S-C: RTSP/1.0 200 OK,CSeq: 2,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 protoco

43、l,31,RTSP,協(xié)議,DESCRIBE,方法,u=http:/www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps,e=mjhisi.edu (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,DESCRIBE,響應(yīng)必須包含它所描述資源的所有媒體初始化信息。如果媒體客戶端從一個(gè)數(shù)據(jù)源

44、獲得表示描述,而非通過(guò),DESCRIBE,,并且該描述包含了一個(gè)媒體初始化參數(shù)的全集,那么客戶端就應(yīng)該使用這些參數(shù),而不是再通過(guò),RTSP,請(qǐng)求相同媒體的描述。,再有,服務(wù)器不應(yīng)該(,SHOULD NOT,)使用,DESCRIBE,響應(yīng)作為,media indirection,的方法。,32,RTSP,協(xié)議,DESCRIBE,方法,需要建立基本的規(guī)則,使得客戶端有明確的方法了解何時(shí)通過(guò),DESCRIBE,請(qǐng)求媒體初始化信息,何時(shí)不請(qǐng)求。強(qiáng)制,DESCRIBE,響應(yīng)包含它所描述媒體流集合的所有初始化信息,不鼓勵(lì)將,DESCRIBE,用作,media indirection,的方法,通過(guò)這兩點(diǎn)避免

45、了使用其他方法可能會(huì)引起的循環(huán)問(wèn)題(,looping problems,),媒體初始化是任何基于,RTSP,系統(tǒng)的必要條件,但,RTSP,規(guī)范并沒(méi)有規(guī)定它必須通過(guò),DESCRIBE,方法完成。,RTSP,客戶端可以通過(guò),3,種方法來(lái)接收媒體初始化信息:,. DESCRIBE,方法;,.,其它一些協(xié)議(,HTTP,,,email,附件,等);,.,命令行或標(biāo)準(zhǔn)輸入(同一個(gè),SDP,或其它媒體初始化格式的文件一起啟動(dòng),工作方式類似于瀏覽器的幫助程序)。,為了實(shí)際協(xié)同工作,強(qiáng)烈建議最精簡(jiǎn)的服務(wù)器也支持,DESCRIBE,方法,最精簡(jiǎn)的客戶端也支持從標(biāo)準(zhǔn)輸入,命令行和,/,或其它對(duì)于客戶端操作環(huán)境合適

46、的方法來(lái)接收媒體初始化文件的能力。,33,RTSP,協(xié)議,ANNOUNCE,方法,ANNOUNCE,方法有兩個(gè)用途:當(dāng)客戶端向服務(wù)器發(fā)送時(shí),,ANNOUNCE,將通過(guò)請(qǐng)求,URL,識(shí)別的表示描述或者媒體對(duì)象提交給服務(wù)器;當(dāng)服務(wù)器向客戶端發(fā)送時(shí),,ANNOUNCE,實(shí)時(shí)更新會(huì)話描述。 如果有新的媒體流加到表示中(比如在一個(gè)現(xiàn)場(chǎng)表示中),整個(gè)表示描述應(yīng)該重發(fā);而不只是增加組件,如果這樣做的話,組件也可以被刪除了。,C-S: ANNOUNCE rtsp:/ RTSP/1.0,CSeq: 312,Date: 23 Jan 1997 15:35:06 GMT,Session: 47112344,Cont

47、ent-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,e=mjhisi.edu (Mark Handley),c=IN IP4 224.2.17.12/127,t=2873397496 2873404696,a=recvon

48、ly,m=audio 3456 RTP/AVP 0,m=video 2232 RTP/AVP 31,S-C: RTSP/1.0 200 OK,CSeq: 312,34,RTSP,協(xié)議,SETUP,方法,SETUP,請(qǐng)求為,URI,指定流式媒體的傳輸機(jī)制??蛻舳四軌虬l(fā)出一個(gè),SETUP,請(qǐng)求為正在播放的媒體流改變傳輸參數(shù),服務(wù)器可能同意這些參數(shù)的改變。若是不同意,它必須響應(yīng)錯(cuò)誤,455 Method Not Valid In This State,。 為了盡量繞開(kāi)防火墻干涉,即使它不會(huì)影響參數(shù),客戶端也必須指出傳輸參數(shù),例如,指出服務(wù)器向外發(fā)布的固定的廣播地址。,由于,SETUP,包括了所有傳輸

49、初始化信息,防火墻和其他中間的網(wǎng)絡(luò)設(shè)備(它們需要這些信息)分讓了解析,DESCRIBE,響應(yīng)的繁瑣任務(wù),這些任務(wù)留給了媒體初始化。,Transport,首部域指定了客戶端數(shù)據(jù)傳輸時(shí)可接受的傳輸參數(shù);響應(yīng)包含了由服務(wù)器選出的傳輸參數(shù)。,C-S: SETUP rtsp:/ 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/AV

50、P;unicast; client_port=4588-4589;server_port=6256-6257,作為對(duì),SETUP,請(qǐng)求的響應(yīng),服務(wù)器產(chǎn)生了會(huì)話標(biāo)志符。如果對(duì)服務(wù)器的請(qǐng)求中包含了會(huì)話標(biāo)志符,服務(wù)器必須將此,setup,請(qǐng)求捆綁到一個(gè)存在的會(huì)話,或者返回,459 Aggregate Operation Not Allowed,。,35,RTSP,協(xié)議,PLAY,方法,PLAY,方法告知服務(wù)器通過(guò),SETUP,中指定的機(jī)制開(kāi)始發(fā)送數(shù)據(jù) 。在尚未收到,SETUP,請(qǐng)求的成功應(yīng)答之前,客戶端不可以發(fā)出,PLAY,請(qǐng)求。,PLAY,請(qǐng)求將正常播放時(shí)間(,normal play time,)

51、定位到指定范圍的起始處,并且傳輸數(shù)據(jù)流直到播放范圍結(jié)束。,PLAY,請(qǐng)求可能被管道化(,pipelined,),即放入隊(duì)列中(,queued,);服務(wù)器必須將,PLAY,請(qǐng)求放到隊(duì)列中有序執(zhí)行。也就是說(shuō),后一個(gè),PLAY,請(qǐng)求需要等待前一個(gè),PLAY,請(qǐng)求完成才能得到執(zhí)行。,比如,在下例中,不管到達(dá)的兩個(gè),PLAY,請(qǐng)求之間有多緊湊,服務(wù)器首先,play,第,10,到,15,秒,然后立即第,20,到,25,秒,最后是第,30,秒直到結(jié)束。,C-S: PLAY rtsp:/ RTSP/1.0,CSeq: 835,Session: 12345678,Range: npt=10-15,C-S: PL

52、AY rtsp:/ RTSP/1.0,CSeq: 836,Session: 12345678,Range: npt=20-25,C-S: PLAY rtsp:/ RTSP/1.0,CSeq: 837,Session: 12345678,Range: npt=30-,36,RTSP,協(xié)議,PLAY,方法,結(jié)合,PAUSE,請(qǐng)求的描述,看更深一層的示例。不含,Range,首部域的,PLAY,請(qǐng)求也是合法的。它從媒體流開(kāi)頭開(kāi)始播放,直到媒體流被暫停。如果媒體流通過(guò),PAUSE,暫停,媒體流傳輸將在暫停點(diǎn)(,the pause point,)重新開(kāi)始。,如果媒體流正在播放,那么這樣一個(gè),PLAY,請(qǐng)求

53、將不起更多的作用,只是客戶端可以用此來(lái)測(cè)試服務(wù)器是否存活。,Range,首部域可能包含一個(gè)時(shí)間參數(shù)。該參數(shù)以,UTC,格式指定了播放(,palayback,)開(kāi)始的時(shí)間。如果在這個(gè)指定時(shí)間后收到消息,那么播放立即開(kāi)始。時(shí)間參數(shù)可能用來(lái)幫助同步從不同數(shù)據(jù)源獲取的數(shù)據(jù)流。,對(duì)于一個(gè)點(diǎn)播(,On-demand,)媒體流,服務(wù)器用播放(,play back,)的實(shí)際范圍答復(fù)請(qǐng)求。如果在請(qǐng)求中沒(méi)有指定范圍,當(dāng)前位置將在答復(fù)中返回。答復(fù)中播放范圍的單位與請(qǐng)求中相同。在播放完被要求的范圍后,表示將自動(dòng)暫停,就好像發(fā)出了一個(gè),PAUSE,請(qǐng)求。,37,RTSP,協(xié)議,PLAY,方法,下面的示例在,play,整

54、個(gè)表示時(shí)從,SMPTE,時(shí)間,0:10:20,直到剪輯(,clip,)結(jié)束。播放開(kāi)始于,1997,年,1,月,23,號(hào),,15,點(diǎn),36,分,C-S: PLAY rtsp:/ 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,For playing back a record

55、ing of a live presentation, it may be desirable to use clock,units:,C-S: PLAY rtsp:/ RTSP/1.0,CSeq: 835,Session: 12345678,Range: clock=19961108T142300Z-19961108T143520Z,S-C: RTSP/1.0 200 OK,CSeq: 835,Date: 23 Jan 1997 15:35:06 GMT,只有播放的媒體服務(wù)器必須支持,npt,時(shí)間格式,可能支持,clock,和,smpte,格式。,38,RTSP,協(xié)議,PAUSE,方法,PA

56、USE,請(qǐng)求引起媒體流傳輸?shù)臅簳r(shí)中斷。如果請(qǐng)求,URL,中指定了具體的媒體流,那么只有該媒體流的播放和記錄被暫停(,halt,)。比如,指定暫停音頻,播放將會(huì)無(wú)聲。如果請(qǐng)求,URL,指定了一個(gè)表示或者媒體流已成組,那么在該表示或組中的所有當(dāng)前活動(dòng)流的傳輸將被暫停。在重啟播放或記錄后,必須維護(hù)不同媒體軌跡(,track,)的同步。盡管服務(wù)器可能在暫停后,在,timeout,的時(shí)間內(nèi)關(guān)閉會(huì)話,釋放資源,但是任何資源都必須保存,其中,timeout,參數(shù)位于,SETUP,消息的會(huì)話頭中。,示例:,C-S: PAUSE rtsp:/ RTSP/1.0,CSeq: 834,Session: 123456

57、78,S-C: RTSP/1.0 200 OK,CSeq: 834,Date: 23 Jan 1997 15:35:06 GMT,PAUSE,請(qǐng)求中可能包含一個(gè),Range,首部域用來(lái)指定何時(shí)媒體流或表示暫停,我們稱這個(gè)時(shí)刻為暫停點(diǎn)(,pause point,)。該首部域必須包含一個(gè)精確的值,而不是一個(gè)時(shí)間范圍。媒體流的正常播放時(shí)間設(shè)置成暫停點(diǎn)。當(dāng)服務(wù)器遇到在任何當(dāng)前掛起(,pending,)的,PLAY,請(qǐng)求中指定的時(shí)間點(diǎn)后,暫停請(qǐng)求生效。如果,Range,首部域指定了一個(gè)時(shí)間超出了任何一個(gè)當(dāng)前掛起的,PLAY,請(qǐng)求,將返回錯(cuò)誤,457 Invalid Range,。如果一個(gè)媒體單元(比如一

58、個(gè)音頻或視頻禎)正好在一個(gè)暫停點(diǎn)開(kāi)始,那么表示將不會(huì)被播放或記錄。如果,Range,首部域缺失,那么在收到暫停消息后媒體流傳輸立即中斷,并且暫停點(diǎn)設(shè)置成當(dāng)前正常播放時(shí)間。,39,RTSP,協(xié)議,PAUSE,方法,利用,PAUSE,請(qǐng)求可忽視所有排隊(duì)的,PLAY,請(qǐng)求,但必須維護(hù)媒體流中的暫停點(diǎn)。不帶,Range,首部域的后繼,PLAY,請(qǐng)求從暫停點(diǎn)重啟播放。,比如,如果服務(wù)器有兩個(gè)掛起的播放請(qǐng)求,播放范圍(,range,)分別是,10,到,15,和,20,到,29,,這時(shí)收到一個(gè)暫停請(qǐng)求,暫停點(diǎn)是,NPT21,,那么它將會(huì)開(kāi)始播放第二個(gè)范圍,并且在,NPT21,處停止。如果服務(wù)器正在服務(wù)第一個(gè)

59、請(qǐng)求播放到,NPT13,位置,收到暫停請(qǐng)求,暫停點(diǎn),NPT12,,那么它將立即停止。如果請(qǐng)求在,NPT16,暫停,那么服務(wù)器在完成第一個(gè)播放請(qǐng)求后停止,放棄了第二個(gè)播放請(qǐng)求。,再如,服務(wù)器收到播放請(qǐng)求,播放范圍從,10,到,15,和,13,到,20,(即之間有重疊),,PAUSE,暫停點(diǎn)是,NPT14,,則當(dāng)服務(wù)器播放第一段范圍時(shí),,PAUSE,請(qǐng)求將生效,而第二個(gè),PLAY,請(qǐng)求會(huì)被忽略重疊部分,就好像服務(wù)器在開(kāi)始播放第二段前收到,PAUSE,請(qǐng)求。不管,PAUSE,請(qǐng)求何時(shí)到達(dá),它總是設(shè)置,NPT,到,14,。,如果服務(wù)器已經(jīng)在,Range,首部域指定的時(shí)間外發(fā)送了數(shù)據(jù),后繼的,PLAY,

60、仍會(huì)在暫停點(diǎn)及時(shí)重啟,因?yàn)樗J(rèn)為客戶端會(huì)丟棄在暫停點(diǎn)后收到的數(shù)據(jù)。這就確保了連續(xù)、無(wú)隙的暫停,/,播放循環(huán)。,40,RTSP,協(xié)議,TEARDOWN,方法,TEARDOWN,請(qǐng)求終止了給定,URI,的媒體流傳輸,并釋放了與該媒體流相關(guān)的資源。如果該,URI,是對(duì)此表示的表示,URI,,那么任何與此會(huì)話相關(guān)的任何,RTSP,會(huì)話標(biāo)志符將不再有效。除非所有傳輸參數(shù)由會(huì)話描述符定義,否則,SETUP,請(qǐng)求必須在會(huì)話能被再次播放之前發(fā)出。,示例:,C-S: TEARDOWN rtsp:/ RTSP/1.0,CSeq: 892,Session: 12345678,S-C: RTSP/1.0 200 OK,CSeq: 892,41,RTSP,協(xié)議,GET

展開(kāi)閱讀全文
溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!