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

歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > PPT文檔下載  

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

  • 資源ID:247454466       資源大?。?span id="24d9guoke414" class="font-tahoma">1.14MB        全文頁數(shù):65頁
  • 資源格式: PPT        下載積分:15積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要15積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號:
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請知曉。

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

,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(176×144),、,CIF(352×288),、,1/2D1(352×576),、,2/3D1(480×576),、,D1(720×576),、,QQVGA(160×120),、,QVGA(320×240),、,VGA(640×480),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.264·AMV · AVS · Bink · Dirac · Indeo · Pixlet · RealVideo · RTVideo · SheerVideo · Smacker · Snow · Theora · VC-1 · VP6 · VP7 · VP8 · WMV,3.,一些音頻壓縮標(biāo)準(zhǔn),MPEG-1 Layer 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 · Monkey's Audio · -law · Musepack · Nellymoser · OptimFROG · RealAudio · RTAudio · SHN · Siren · Speex · Vorbis · WavPack · WMA · TAK,4.,一些視頻編碼格式,文件格式,3GP · ASF · AVI · Bink · DMF · DPX · FLV · Matroska · MP4 · MXF · NUT · Ogg · Ogg Media · QuickTime · RealMedia · Smacker · RIFF · VOB,4,V4L2,編程,1.,打開設(shè)備,打開視頻設(shè)備,在,V4L2,中,視頻設(shè)備被看做一個文件。使用,open,函數(shù)打開這個設(shè)備:,/,用非阻塞模式打開攝像頭設(shè)備,int cameraFd;,cameraFd = open("/dev/video0", O_RDWR | O_NONBLOCK, 0);,/,如果用阻塞模式打開攝像頭設(shè)備,上述代碼變?yōu)椋?cameraFd = open("/dev/video0", O_RDWR, 0);,應(yīng)用程序能夠使用阻塞模式或非阻塞模式打開視頻設(shè)備,如果使用非阻塞模式調(diào)用視頻設(shè)備,即使尚未捕獲到信息,驅(qū)動依舊會把緩存(,DQBUFF,)里的東西返回給應(yīng)用程序。,5,V4L2,編程,2.,設(shè)定屬性及采集方式,設(shè)定屬性及采集方式,打開視頻設(shè)備后,可以設(shè)置該視頻設(shè)備的屬性,例如裁剪、縮放等。這一步是可選的。在,Linux,編程中,一般使用,ioctl,函數(shù)來對設(shè)備的,I/O,通道進(jìn)行管理:,int,ioctl (,int,fd,unsigned long int,request, ./*args*/);,在進(jìn)行,V4L2,開發(fā)中,常用的命令如下:,VIDIOC_REQBUFS,:分配內(nèi)存,VIDIOC_QUERYBUF,:把,VIDIOC_REQBUFS,中分配的數(shù)據(jù)緩存轉(zhuǎn)換成物理地址,VIDIOC_QUERYCAP,:查詢驅(qū)動功能,VIDIOC_ENUM_FMT,:獲取當(dāng)前驅(qū)動支持的視頻格式,VIDIOC_S_FMT,:設(shè)置當(dāng)前驅(qū)動的頻捕獲格式,VIDIOC_G_FMT,:讀取當(dāng)前驅(qū)動的頻捕獲格式,VIDIOC_TRY_FMT,:驗(yàn)證當(dāng)前驅(qū)動的顯示格式,VIDIOC_CROPCAP,:查詢驅(qū)動的修剪能力,VIDIOC_S_CROP,:設(shè)置視頻信號的邊框,VIDIOC_G_CROP,:讀取視頻信號的邊框,VIDIOC_QBUF,: 把內(nèi)存加入緩存隊(duì)列,VIDIOC_DQBUF,:從緩存隊(duì)列讀取數(shù)據(jù),VIDIOC_STREAMON,:開始視頻顯示函數(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,來檢測:,v4l2_std_id std;,do ,ret = ioctl(fd, VIDIOC_QUERYSTD, , while (ret = -1 ,switch (std) ,case V4L2_STD_NTSC:,case V4L2_STD_PAL:,設(shè)置視頻捕獲格式,當(dāng)檢測完視頻設(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 = 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;,;,struct v4l2_pix_format,_u32 width;,/,寬,必須是,16,的倍數(shù),_u32 height;,/,高,必須是,16,的倍數(shù),_u32 pixelformat;,/,視頻數(shù)據(jù)存儲類型,例如是,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)用程序管理和操作系統(tǒng)管理。應(yīng)用程序可以直接訪問內(nèi)存的地址,而內(nèi)核空間存放的是供內(nèi)核訪問的代碼和數(shù)據(jù),用戶不能直接訪問。,v4l2,捕獲的數(shù)據(jù),最初是存放在內(nèi)核空間的,這意味著用戶不能直接訪問該段內(nè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è)置成,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-streaming 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ù)量,也就是說在緩存隊(duì)列里保持多少張照片,enum v4l2_buf_type type;,/,數(shù)據(jù)流類型,enum v4l2_memory memory;,/ V4L2_MEMORY_MMAP,或,/V4L2_MEMORY_USERPTR,_u32 reserved2;,;,10,11,V4L2,編程,內(nèi)存映射方式采集視頻,獲取并記錄緩存的物理空間,使用,VIDIOC_REQBUFS,,我們獲取了,req.count,個緩存,下一步通過調(diào)用,VIDIOC_QUERYBUF,命令來獲取這些緩存的地址,然后使用,mmap,函數(shù)轉(zhuǎn)換成應(yīng)用程序中的絕對地址,最后把這段緩存放入緩存隊(duì)列:,typedef struct VideoBuffer ,void *start;,size_t length;, VideoBuffer;,12,V4L2,編程,內(nèi)存映射方式采集視頻,VideoBuffer* buffers = calloc( req.count, sizeof(*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)換成相對地址,buffersnumBufs.start = 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");,13,V4L2,編程,內(nèi)存映射方式采集視頻,采集一幀視頻數(shù)據(jù),數(shù)據(jù)緩存采用,FIFO(,先進(jìn)先出,),的方式,當(dāng)應(yīng)用程序調(diào)用緩存數(shù)據(jù)時,緩存隊(duì)列將最先采集到的視頻數(shù)據(jù)緩存送出,并重新采集一張視頻數(shù)據(jù)。這個過程需要用到兩個,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ì)列中無視頻數(shù)據(jù),則此操作會阻塞,if (ioctl(cameraFd, 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é)束一個視頻流前,應(yīng)先使用,VIDIOC_STREAMOFF,停止視頻流顯示:,enum v4l2_buf_type = V4L2_BUF_TYPE_VIDEO_CAPTURE;,if (-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)閉一個視頻設(shè)備,close(cameraFd),詳細(xì)參考,Video for Linux Two API Specification,15,RTSP,協(xié)議,RTSP,簡介,什么是,RTSP,協(xié)議,Real Time Streaming Protocol,或者,RTSP,(實(shí)時流媒體協(xié)議),,是,在,IP,網(wǎng)絡(luò)上傳輸流媒體數(shù)據(jù)的,應(yīng)用層協(xié)議,控制實(shí)時數(shù)據(jù)的傳送。,RTSP提供了一個可擴(kuò)展框架,使實(shí)時數(shù)據(jù),如音頻與視頻的受控、點(diǎn)播成為可能。數(shù)據(jù)源包括現(xiàn)場數(shù)據(jù)與存儲在剪輯中數(shù)據(jù)。,該協(xié)議目的在于控制多個數(shù)據(jù)發(fā)送連接,為選擇發(fā)送通道,如UDP、組播UDP與TCP,提供途徑,并為選擇基于RTP(RFC1889)上傳送機(jī)制提供方法。,(RTSP,協(xié)議詳細(xì)參考,RFC2326),什么是,RFC,Request For Comments (RFC),,是一系列以編號排定的文件。文件收集了有關(guān)因特網(wǎng)相關(guān)資訊,以及,UNIX,和因特網(wǎng)社群的軟件文件。目前,RFC,文件是由,Internet Society,(,ISOC,)所贊助發(fā)行。,16,RTSP,協(xié)議,RTSP,與,HTTP,在,RTSP,里我們沒有,連接的概念,而由RTSP會話(session)代替(每次服務(wù)由服務(wù)器端保持一個帶標(biāo)簽的會話)。RTSP會話沒有綁定到傳輸層連接(如TCP連接)。因?yàn)殡m然在RTSP會話期間,RTSP客戶端可打開或關(guān)閉多個對服務(wù)器端的可靠傳輸連接以發(fā)出RTSP 請求。但此外,也可能使用無連接傳輸協(xié)議,比如用UDP發(fā)送RTSP請求。,RTSP控制的流可能用到RTP,但RTSP操作并不依賴用于攜帶連續(xù)媒體的傳輸機(jī)制。實(shí)時流協(xié)議在語法和操作上與HTTP/1.1類似,因此HTTP的擴(kuò)展機(jī)制大都可加入RTSP。,RTSP在很多方面還是和HTTP有很大的不同:,RTSP引入了很多新方法并且有不同的協(xié)議標(biāo)識符。,RTSP服務(wù)器在大多數(shù)默認(rèn)情況下需要維持一個狀態(tài),但HTTP是無狀態(tài)協(xié)議。,RTSP客戶機(jī)和服務(wù)器都可以發(fā)出請求。,數(shù)據(jù)由另一個協(xié)議傳送(有一特例除外)。,RTSP使用ISO 10646(UTF-8) 而不是ISO 8859-1,以配合當(dāng)前HTML的國際化。,RTSP使用URI請求時包含絕對URI。而由于歷史原因造成的向后兼容性問題,HTTP/1.1只在請求中包含絕對路徑,把主機(jī)名放入單獨(dú)的標(biāo)題域中。,這使得“虛擬主機(jī)”實(shí)現(xiàn)更為簡便,一個單獨(dú)IP地址的主機(jī)可虛擬為幾個文件樹主機(jī)。,17,RTSP,協(xié)議,支持的操作,從媒體服務(wù)器上檢索媒體:,用戶可通過HTTP或其它方法請求一個表示描述。如表示是組播,表示描述就包含用于連續(xù)媒體的的組播地址和端口。如表示僅通過單播發(fā)送給用戶,用戶為了安全應(yīng)提供目的地址。,媒體服務(wù)器邀請進(jìn)入會議:,媒體服務(wù)器可被邀請參加正進(jìn)行的會議,或回放媒體,或記錄其中一部分,或全部。這種模式在分布式教育應(yīng)用上很有用,會議中幾方可輪流按遠(yuǎn)程控制按鈕。,將媒體加到現(xiàn)成講座中:,如服務(wù)器告訴用戶可獲得附加媒體內(nèi)容,對現(xiàn)場講座顯得尤其有用。,18,RTSP,協(xié)議,RTSP,狀態(tài),RTSP控制,的流可,通過單獨(dú)協(xié)議發(fā)送,與控制通道無關(guān)。,例如,RTSP控制可通過TCP連接,而數(shù)據(jù)流通過UDP。因此,即使媒體服務(wù)器沒有收到請求,數(shù)據(jù)也會繼續(xù)發(fā)送。在會話生命期,單個媒體流可通過不同TCP連接順序發(fā)出請求來控制。所以,服務(wù)器需要維持能聯(lián)系流與RTSP請求的會話狀態(tài)。,RTSP中很多方法與狀態(tài)無關(guān),但下列方法在定義服務(wù)器流資源的分配與應(yīng)用上起著重要的作用:,SETUP:,讓服務(wù)器給流分配資源,啟動RTSP會話。,PLAY與RECORD:,開始由,SETUP 分配,的,流的數(shù)據(jù)傳輸。,PAUSE:,臨時停止流,而不釋放服務(wù)器資源。,TEARDOWN:,釋放流的資源,RTSP會話停止。,標(biāo)識狀態(tài)的RTSP方法使用會話(session)標(biāo)題域識別RTSP會話,為回應(yīng)SETUP請求,服務(wù)器生成會話標(biāo)識,。,19,RTSP,協(xié)議,RTSP,消息,RTSP是基于文本的協(xié)議,采用ISO 10646 字符集,使用UTF-8編碼方案。,行以CRLF中斷,但接收者本身可將CR和LF解釋成行終止符?;谖谋镜膮f(xié)議使以自描述方式增加可選參數(shù)更容易。,10646字符集避免敏感字符集切換,但對應(yīng)用來說不可見。RTCP也采用這種編碼方案。帶有重要意義位的ISO 8859-1字符表示如100001x 10xxxxxx.。RTSP信息可通過任何低層傳輸協(xié)議攜帶。,請求包括方法、方法作用于其上的對象和進(jìn)一步描述方法的參數(shù)。方法也可設(shè)計(jì)為在服務(wù)器端只需要少量或不需要狀態(tài)維護(hù)。當(dāng)信息體包含在信息中,信息體長度有如下因素決定:,不管實(shí)體標(biāo)題域是否出現(xiàn)在信息中,不包括信息體的回應(yīng)信息總以標(biāo)題域后第一和空行結(jié)束。,如出現(xiàn)內(nèi)容長度標(biāo)題域,其值以字節(jié)計(jì),表示信息體長度。如未出現(xiàn)標(biāo)題域,其值為零。,20,RTSP,協(xié)議,消息類型,RTSP消息由客戶端到服務(wù)器的請求和由服務(wù)器到客戶端的回應(yīng)組成。,RTSP -message = Request | Response ; RTSP /1.0 messages,請求(Request)和回應(yīng)(Response)消息都使用RFC822中實(shí)體傳輸部分規(guī)定(作為消息中的有效載荷)的消息格式。兩者的消息都可能包括一起始行,一個或多個標(biāo)題域(headers)、一行表示標(biāo)題域結(jié)束的空行(即CRLF前沒有內(nèi)容的行),和一個消息主體(message-body,可選)。,generic-message = start-line,*message-header,CRLF, message-body ,start-line = Request-Line | Status-Line,為了健壯性考慮,服務(wù)器應(yīng)該忽略任何在期望收到請求行時收到的空行。換句話說,如果服務(wù)器正在讀協(xié)議流,在一個消息開始時如果首先收到了CRLF,這個CRLF符應(yīng)被忽略。,21,RTSP,協(xié)議,消息標(biāo)題,RTSP標(biāo)題域,包括主標(biāo)題(General-Header,4.3節(jié))、請求標(biāo)題、回應(yīng)標(biāo)題(及實(shí)體標(biāo)題,都遵照RFC822-3.1,節(jié)7給出的通用格式定義。每個標(biāo)題域由后緊跟冒號的名字,單空格(SP),字符及域值組成。域名是大小寫敏感的。雖然不提倡,標(biāo)題域還是可以擴(kuò)展成多行使用,只要這些行以一個以上的SP或HT開頭就行。,RTSP-header = field-name ":" field-value CRLF,field-name = token,field-value = *( field-content | LWS ),field-content = <the OCTETs make up the field-value,and consisting of either *TEXT or combinations,of token, tspecials, and quoted-string>,標(biāo)題域接收的順序并不重要,但良好的習(xí)慣是,先發(fā)送主標(biāo)題,然后是請求標(biāo)題或回應(yīng)標(biāo)題,最后是實(shí)體標(biāo)題。,當(dāng)且僅當(dāng)標(biāo)題域的全部域值都用逗號分隔的列表示時(即,#(值),多個有相同域名的RTSP標(biāo)題域才可以表示在一個消息里。而且必須能在不改變消息語法的前提下,將并發(fā)的域值加到第一個值后面,之間用逗號分隔,最終能將多個標(biāo)題域結(jié)合成“域名:域值”對。,22,RTSP,協(xié)議,消息主體和長度,RTSP消息的消息主體(如果有)用來攜帶請求或回應(yīng)的主體。僅在使用傳輸編碼(Transfer-Encoding)時消息主體和實(shí)體主體才有所不同,這種情況在傳輸編碼標(biāo)題域中有詳細(xì)說明。,message-body = entity-body,| ,傳輸編碼必須能解釋所有保證傳輸安全和正確的應(yīng)用程序的傳輸編碼。傳輸編碼是消息而不是實(shí)體的一個屬性,因此可以由任一應(yīng)用程序隨著請求/回應(yīng)鏈添加或者刪除。,什么時候允許消息帶消息體的規(guī)則在請求和回應(yīng)兩種情況下有所不同。,在請求中有無消息主體的標(biāo)志是是否包含內(nèi)容長度或請求消息標(biāo)題域中的傳輸編碼標(biāo)題域。只有當(dāng)請求方法允許有實(shí)體主體的時候才能在請求中包含消息主體。,而對于回應(yīng)消息來說,無論消息中是否存在消息主體都與請求方法和回應(yīng)狀態(tài)編碼無關(guān)。所有回應(yīng)標(biāo)題請求方法的消息都不能包含消息主體,盡管有時會因?yàn)榇嬖趯?shí)體標(biāo)題域而使人產(chǎn)生誤解。所有1××(信息),204(無內(nèi)容),304(未修改)回應(yīng)都不包含消息主體。而其他回應(yīng)則都包含主體,盡管其長度有可能長度為零。,23,消息主體和長度,4.4 消息長度,當(dāng)消息包含消息主體時,消息主體的長度由以下規(guī)則來決定(按優(yōu)先級高低順序排列):,1. 任何回應(yīng)消息都不包含消息主體(如1××,204和304回應(yīng)),并且不管消息中是否存在實(shí)體標(biāo)題域都以消息標(biāo)題域后的第一行空行表示結(jié)束。,2. 如果內(nèi)容長度標(biāo)題域存在,它在字節(jié)中的值就是消息主體的長度。如果內(nèi)容標(biāo)題域不存在,則假設(shè)值為零。,3. 服務(wù)器關(guān)閉連接時。(關(guān)閉連接沒有用來表明請求主體結(jié)束,否則可能導(dǎo)致服務(wù)器不能回應(yīng)。,注意,RTSP不支持(至少現(xiàn)在)HTTP/1.1的塊傳輸編碼(詳見H3.6)并且要求有內(nèi)容長度標(biāo)題域。,盡管表示描述長度動態(tài)產(chǎn)生,但由于可獲得了表示描述返回長度,使得服務(wù)器總是能決定表示描述長度而不需使用塊傳輸編碼方式。只要有實(shí)體主體就必須有內(nèi)容長度項(xiàng),這些規(guī)則保證了即使沒有給出明確長度也能做出合理的操作。,24,RTSP,協(xié)議,應(yīng)答,狀態(tài)行:完整回應(yīng)消息的第一行就是狀態(tài)行,它依次由協(xié)議版本、數(shù)字形式的狀態(tài)代碼、及相應(yīng)的詞語文本組成,各元素間以空格(,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,位數(shù)字組成,表示請求是否被理解或被滿足。原因分析是用簡短的文字來描述狀態(tài)代碼產(chǎn)生的原因。狀態(tài)代碼用來支持自動操作,原因分析是為人類用戶準(zhǔn)備的??蛻舳瞬恍枰獧z查或顯示原因分析。狀態(tài)代碼的第一位數(shù)字定義了回應(yīng)的類別,后面兩位數(shù)字沒有具體分類。首位數(shù)字有,5,種取值可能:,o 1xx:,:保留,將來使用。,o 2xx,:成功 操作被接收、理解、接受(,received, understood, accepted,)。,o 3xx,:重定向(,Redirection,) 要完成請求必須進(jìn)行進(jìn)一步操作。,o 4xx,:客戶端出錯 請求有語法錯誤或無法實(shí)現(xiàn)。,o 5xx,:服務(wù)器端出錯 服務(wù)器無法實(shí)現(xiàn)合法的請求。,25,RTSP,協(xié)議,回應(yīng)標(biāo)題域,回應(yīng)標(biāo)題域中包括不能放在狀態(tài)行中的附加回應(yīng)信息。該域還可以存放與服務(wù)器相關(guān)的信息,以及在對請求,URI,所指定資源進(jìn)行訪問的下一步信息。,response-header = Location ; | Proxy-Authenticate ;,| Public ;,| Retry-After ; | Server ; | Vary ; | WWW-Authenticate ;,回應(yīng)標(biāo)題域名只有在與協(xié)議版本的變化結(jié)合起來后,才能進(jìn)行可靠的擴(kuò)展。實(shí)際上,新的或?qū)嶒?yàn)中的標(biāo)題域只要能被通訊各方識別,其語法就可使用,而無法識別的標(biāo)題域都將被視為實(shí)體域。,26,RTSP,協(xié)議,連接,RTSP,請求可以幾種不同方式傳送:,1,、持久傳輸連接,用于多個請求,/,回應(yīng)傳輸。,2,、每個請求,/,回應(yīng)傳輸一個連接。,3,、無連接模式。 傳輸連接類型由,RTSP URI,來定義。對,“rtsp”,開頭的,URI,請求,需要持續(xù)連接;而,“rtspu”,開頭的,URI,請求,調(diào)用,RTSP,請求發(fā)送,而不用建立連接。 不象,HTTP,,,RTSP,允許媒體服務(wù)器給媒體用戶發(fā)送請求。然而,這僅在持久連接時才支持,否則媒體服務(wù)器沒有可靠途徑到達(dá)用戶,這也是請求通過防火墻從媒體服務(wù)器傳到用戶的唯一途徑。 流水線操作: 支持持久連接或無連接的客戶端可能給其請求排隊(duì)。服務(wù)器必須以收到請求的同樣順序發(fā)出回應(yīng)。,27,RTSP,協(xié)議,傳輸?shù)目煽啃约按_認(rèn),可靠性及確認(rèn):如果請求不是發(fā)送給組播組,接收者就確認(rèn)請求,如沒有確認(rèn)信息,發(fā)送者可在超過一個來回時間(,RTT,)后重發(fā)同一信息。,RTT,在,TCP,中估計(jì),初始值為,500 ms,。應(yīng)用緩存最后所測量的,RTT,,作為將來連接的初始值。如使用一個可靠傳輸協(xié)議傳輸,RTSP,,請求不允許重發(fā),,RTSP,應(yīng)用反過來依賴低層傳輸提供可靠性。如兩個底層可靠傳輸(如,TCP,和,RTSP,)應(yīng)用重發(fā)請求,有可能每個包損失導(dǎo)致兩次重傳。由于傳輸棧在第一次嘗試到達(dá)接收著者前不會發(fā)送應(yīng)用層重傳,接收者也不能充分利用應(yīng)用層重傳。如包損失由阻塞引起,不同層的重發(fā)將使阻塞進(jìn)一步惡化。時序標(biāo)頭用來避免重發(fā)模糊性問題,避免對圓錐算法的依賴。每個請求在,CSeq,頭中攜帶一個系列號,每發(fā)送一個不同請求,它就加一。如由于沒有確認(rèn)而重發(fā)請求,請求必須攜帶初始系列號。 實(shí)現(xiàn),RTSP,的系統(tǒng)必須支持通過,TCP,傳輸,RTSP,,并支持,UDP,。對,UDP,和,TCP,,,RTSP,服務(wù)器的缺省端口都是,554,。許多目的一致的,RTSP,包被打包成單個低層,PDU,或,TCP,流。,RTSP,數(shù)據(jù)可與,RTP,和,RTCP,包交叉。不象,HTTP,,,RTSP,信息必須包含一個內(nèi)容長度頭,無論信息何時包含負(fù)載。否則,,RTSP,包以空行結(jié)束,后跟最后一個信息頭。,28,RTSP,協(xié)議,方法定義,方法定義,表示了對請求統(tǒng)一資源標(biāo)志符(,Request-URI,)識別的資源所執(zhí)行的操作。方法名區(qū)分大小寫。將來可能定義新的方法。方法名可能不以美元符,',',(十進(jìn)制數(shù),24,)開頭,但必須具有表征意義。,下表是對方法的一個小結(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: 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,對,RTSP,方法,和其操作方向及所操作對象(,P:,表示, S:,媒體流)的一個概覽,注意:,PAUSE,方法是推薦的,但在構(gòu)建一個全功能的服務(wù)器時可能不支持此方法,這時就不需要它,比如對于,live feeds,。如果服務(wù)器不支持某個特殊方法,它必將返回,"501 Not Implemented",,并且客戶端應(yīng)該不再向該服務(wù)器請求該方法。,29,RTSP,協(xié)議,OPTIONS,方法,OPTIONS,請求可能在任何時候發(fā)出,例如客戶端將要發(fā)出一個非標(biāo)準(zhǔn)的請求時。它不影響服務(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, TEARDOWN, PLAY, PAUSE,注意:這些都是必要的構(gòu)造特征(,necessarily fictional features,)。,30,RTSP,協(xié)議,DESCRIBE,方法,DESCRIBE,方法從服務(wù)器檢索表示的描述或媒體對象,這些資源通過請求統(tǒng)一資源定位符(,the request URL,)識別。此方法可能結(jié)合使用,Accept,首部域來指定客戶端理解的描述格式。服務(wù)器端用被請求資源的描述對客戶端作出響應(yīng)。,DESCRIBE,的答復(fù),-,響應(yīng)對(,reply-response pair,)組成了,RTSP,的媒體初始化階段。,示例:,C->S:,DESCRIBE rtsp:/ RTSP/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 protocol,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)必須包含它所描述資源的所有媒體初始化信息。如果媒體客戶端從一個數(shù)據(jù)源獲得表示描述,而非通過,DESCRIBE,,并且該描述包含了一個媒體初始化參數(shù)的全集,那么客戶端就應(yīng)該使用這些參數(shù),而不是再通過,RTSP,請求相同媒體的描述。,再有,服務(wù)器不應(yīng)該(,SHOULD NOT,)使用,DESCRIBE,響應(yīng)作為,media indirection,的方法。,32,RTSP,協(xié)議,DESCRIBE,方法,需要建立基本的規(guī)則,使得客戶端有明確的方法了解何時通過,DESCRIBE,請求媒體初始化信息,何時不請求。強(qiáng)制,DESCRIBE,響應(yīng)包含它所描述媒體流集合的所有初始化信息,不鼓勵將,DESCRIBE,用作,media indirection,的方法,通過這兩點(diǎn)避免了使用其他方法可能會引起的循環(huán)問題(,looping problems,),媒體初始化是任何基于,RTSP,系統(tǒng)的必要條件,但,RTSP,規(guī)范并沒有規(guī)定它必須通過,DESCRIBE,方法完成。,RTSP,客戶端可以通過,3,種方法來接收媒體初始化信息:,. DESCRIBE,方法;,.,其它一些協(xié)議(,HTTP,,,email,附件,等);,.,命令行或標(biāo)準(zhǔn)輸入(同一個,SDP,或其它媒體初始化格式的文件一起啟動,工作方式類似于瀏覽器的幫助程序)。,為了實(shí)際協(xié)同工作,強(qiáng)烈建議最精簡的服務(wù)器也支持,DESCRIBE,方法,最精簡的客戶端也支持從標(biāo)準(zhǔn)輸入,命令行和,/,或其它對于客戶端操作環(huán)境合適的方法來接收媒體初始化文件的能力。,33,RTSP,協(xié)議,ANNOUNCE,方法,ANNOUNCE,方法有兩個用途:當(dāng)客戶端向服務(wù)器發(fā)送時,,ANNOUNCE,將通過請求,URL,識別的表示描述或者媒體對象提交給服務(wù)器;當(dāng)服務(wù)器向客戶端發(fā)送時,,ANNOUNCE,實(shí)時更新會話描述。 如果有新的媒體流加到表示中(比如在一個現(xiàn)場表示中),整個表示描述應(yīng)該重發(fā);而不只是增加組件,如果這樣做的話,組件也可以被刪除了。,C->S: ANNOUNCE rtsp:/ 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,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,S->C: RTSP/1.0 200 OK,CSeq: 312,34,RTSP,協(xié)議,SETUP,方法,SETUP,請求為,URI,指定流式媒體的傳輸機(jī)制。客戶端能夠發(fā)出一個,SETUP,請求為正在播放的媒體流改變傳輸參數(shù),服務(wù)器可能同意這些參數(shù)的改變。若是不同意,它必須響應(yīng)錯誤,"455 Method Not Valid In This State",。 為了盡量繞開防火墻干涉,即使它不會影響參數(shù),客戶端也必須指出傳輸參數(shù),例如,指出服務(wù)器向外發(fā)布的固定的廣播地址。,由于,SETUP,包括了所有傳輸初始化信息,防火墻和其他中間的網(wǎng)絡(luò)設(shè)備(它們需要這些信息)分讓了解析,DESCRIBE,響應(yīng)的繁瑣任務(wù),這些任務(wù)留給了媒體初始化。,Transport,首部域指定了客戶端數(shù)據(jù)傳輸時可接受的傳輸參數(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/AVP;unicast; client_port=4588-4589;server_port=6256-6257,作為對,SETUP,請求的響應(yīng),服務(wù)器產(chǎn)生了會話標(biāo)志符。如果對服務(wù)器的請求中包含了會話標(biāo)志符,服務(wù)器必須將此,setup,請求捆綁到一個存在的會話,或者返回,"459 Aggregate Operation Not Allowed",。,35,RTSP,協(xié)議,PLAY,方法,PLAY,方法告知服務(wù)器通過,SETUP,中指定的機(jī)制開始發(fā)送數(shù)據(jù) 。在尚未收到,SETUP,請求的成功應(yīng)答之前,客戶端不可以發(fā)出,PLAY,請求。,PLAY,請求將正常播放時間(,normal play time,)定位到指定范圍的起始處,并且傳輸數(shù)據(jù)流直到播放范圍結(jié)束。,PLAY,請求可能被管道化(,pipelined,),即放入隊(duì)列中(,queued,);服務(wù)器必須將,PLAY,請求放到隊(duì)列中有序執(zhí)行。也就是說,后一個,PLAY,請求需要等待前一個,PLAY,請求完成才能得到執(zhí)行。,比如,在下例中,不管到達(dá)的兩個,PLAY,請求之間有多緊湊,服務(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: PLAY 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,請求的描述,看更深一層的示例。不含,Range,首部域的,PLAY,請求也是合法的。它從媒體流開頭開始播放,直到媒體流被暫停。如果媒體流通過,PAUSE,暫停,媒體流傳輸將在暫停點(diǎn)(,the pause point,)重新開始。,如果媒體流正在播放,那么這樣一個,PLAY,請求將不起更多的作用,只是客戶端可以用此來測試服務(wù)器是否存活。,Range,首部域可能包含一個時間參數(shù)。該參數(shù)以,UTC,格式指定了播放(,palayback,)開始的時間。如果在這個指定時間后收到消息,那么播放立即開始。時間參數(shù)可能用來幫助同步從不同數(shù)據(jù)源獲取的數(shù)據(jù)流。,對于一個點(diǎn)播(,On-demand,)媒體流,服務(wù)器用播放(,play back,)的實(shí)際范圍答復(fù)請求。如果在請求中沒有指定范圍,當(dāng)前位置將在答復(fù)中返回。答復(fù)中播放范圍的單位與請求中相同。在播放完被要求的范圍后,表示將自動暫停,就好像發(fā)出了一個,PAUSE,請求。,37,RTSP,協(xié)議,PLAY,方法,下面的示例在,play,整個表示時從,SMPTE,時間,0:10:20,直到剪輯(,clip,)結(jié)束。播放開始于,1997,年,1,月,23,號,,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 recording 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,時間格式,可能支持,clock,和,smpte,格式。,38,RTSP,協(xié)議,PAUSE,方法,PAUSE,請求引起媒體流傳輸?shù)臅簳r中斷。如果請求,URL,中指定了具體的媒體流,那么只有該媒體流的播放和記錄被暫停(,halt,)。比如,指定暫停音頻,播放將會無聲。如果請求,URL,指定了一個表示或者媒體流已成組,那么在該表示或組中的所有當(dāng)前活動流的傳輸將被暫停。在重啟播放或記錄后,必須維護(hù)不同媒體軌跡(,track,)的同步。盡管服務(wù)器可能在暫停后,在,timeout,的時間內(nèi)關(guān)閉會話,釋放資源,但是任何資源都必須保存,其中,timeout,參數(shù)位于,SETUP,消息的會話頭中。,示例:,C->S: PAUSE rtsp:/ RTSP/1.0,CSeq: 834,Session: 12345678,S->C: RTSP/1.0 200 OK,CSeq: 834,Date: 23 Jan 1997 15:35:06 GMT,PAUSE,請求中可能包含一個,Range,首部域用來指定何時媒體流或表示暫停,我們稱這個時刻為暫停點(diǎn)(,pause point,)。該首部域必須包含一個精確的值,而不是一個時間范圍。媒體流的正常播放時間設(shè)置成暫停點(diǎn)。當(dāng)服務(wù)器遇到在任何當(dāng)前掛起(,pending,)的,PLAY,請求中指定的時間點(diǎn)后,暫停請求生效。如果,Range,首部域指定了一個時間超出了任何一個當(dāng)前掛起的,PLAY,請求,將返回錯誤,"457 Invalid Range",。如果一個媒體單元(比如一個音頻或視頻禎)正好在一個暫停點(diǎn)開始,那么表示將不會被播放或記錄。如果,Range,首部域缺失,那么在收到暫停消息后媒體流傳輸立即中斷,并且暫停點(diǎn)設(shè)置成當(dāng)前正常播放時間。,39,RTSP,協(xié)議,PAUSE,方法,利用,PAUSE,請求可忽視所有排隊(duì)的,PLAY,請求,但必須維護(hù)媒體流中的暫停點(diǎn)。不帶,Range,首部域的后繼,PLAY,請求從暫停點(diǎn)重啟播放。,比如,如果服務(wù)器有兩個掛起的播放請求,播放范圍(,range,)分別是,10,到,15,和,20,到,29,,這時收到一個暫停請求,暫停點(diǎn)是,NPT21,,那么它將會開始播放第二個范圍,并且在,NPT21,處停止。如果服務(wù)器正在服務(wù)第一個請求播放到,NPT13,位置,收到暫停請求,暫停點(diǎn),NPT12,,那么它將立即停止。如果請求在,NPT16,暫停,那么服務(wù)器在完成第一個播放請求后停止,放棄了第二個播放請求。,再如,服務(wù)器收到播放請求,播放范圍從,10,到,15,和,13,到,20,(即之間有重疊),,PAUSE,暫停點(diǎn)是,NPT14,,則當(dāng)服務(wù)器播放第一段范圍時,,PAUSE,請求將生效,而第二個,PLAY,請求會被忽略重疊部分,就好像服務(wù)器在開始播放第二段前收到,PAUSE,請求。不管,PAUSE,請求何時到達(dá),它總是設(shè)置,NPT,到,14,。,如果服務(wù)器已經(jīng)在,Range,首部域指定的時間外發(fā)送了數(shù)據(jù),后繼的,PLAY,仍會在暫停點(diǎn)及時重啟,因?yàn)樗J(rèn)為客戶端會丟棄在暫停點(diǎn)后收到的數(shù)據(jù)。這就確保了連續(xù)、無隙的暫停,/,播放循環(huán)。,40,RTSP,協(xié)議,TEARDOWN,方法,TEARDOWN,請求終止了給定,URI,的媒體流傳輸,并釋放了與該媒體流相關(guān)的資源。如果該,URI,是對此表示的表示,URI,,那么任何與此會話相關(guān)的任何,RTSP,會話標(biāo)志符將不再有效。除非所有傳輸參數(shù)由會話描述符定義,否則,SETUP,請求必須在會話能被再次播放之前發(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

注意事項(xiàng)

本文(嵌入式LINUX應(yīng)用編程-視頻服務(wù)器)為本站會員(fgh****35)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

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

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


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