午夜毛片免费看,老师老少妇黄色网站,久久本道综合久久伊人,伊人黄片子

實時流媒體通信方法

文檔序號:7851187閱讀:301來源:國知局
專利名稱:實時流媒體通信方法
技術領域
本發(fā)明涉及網絡通信技術,特別涉及一種流媒體實時流協(xié)議棧RTSP的應用。
背景技術
流媒體(Streaming Media)技術是在寬帶網絡上以流的方式傳輸多媒體信息的技術。近年來,隨著寬帶網絡的發(fā)展和用戶需求的驅動,流媒體應用作為未來高速網絡的主流應用的趨勢已經越來越明確。現(xiàn)在人們已經越來越習慣在網絡上收聽在線音樂,收看在線電視和視頻節(jié)目,通過網絡進行視頻聊天。
流媒體指在數(shù)據網絡上按時間先后次序傳輸和播放的連續(xù)音/視頻數(shù)據流。以前人們在網絡上觀看電影或收聽音樂時,必須先將整個影音文件下載并存儲在本地計算機上,然后才可以觀看。流媒體在播放前并不下載整個文件,只將部分內容緩存,使流媒體數(shù)據流邊傳送邊播放,這樣就節(jié)省了下載等待時間和存儲空間。流媒體數(shù)據流具有三個特點連續(xù)性、實時性、時序性,即其數(shù)據流具有嚴格的前后時序關系。
要實現(xiàn)流媒體的播放,必須具備以下的幾個條件流媒體服務器,用于提供實時媒體流數(shù)據和響應終端的實時流控制命令;終端流媒體協(xié)議棧和播放器,用于接收、控制、處理實時媒體數(shù)據流;網絡和路由設備,用于傳輸、轉發(fā)實時媒體流。
終端流媒體協(xié)議棧和流媒體服務器端之所以可以相互通信,是因為他們使用的相同的通信協(xié)議,這里是流媒體協(xié)議。就當前的局端系統(tǒng)來說,以傳輸實時流數(shù)據使用的協(xié)議不同可以分為兩類用RTSP(Real TimeStream Protocal)來傳輸控制流、用RTP來傳輸數(shù)據流的ISMA流媒體服務器;用RTSP來傳輸控制流、用TS來傳輸數(shù)據流的TS流媒體服務器。
在當前IPTV流媒體服務器中,屬于ISMA陣營的有華為、中興、思華;屬于TS流陣營的有UT、西門子等。由于沒有統(tǒng)一標準,不同服務器廠商使用的流媒體通信協(xié)議一般是不同的。主要體現(xiàn)在用RTSP傳輸實時流控制命令上。例如,有些廠商在滿足RFC2326規(guī)范的基礎之上,對RTSP進行了擴展。擴展主要是兩方面一是,對RTSP頭信息的擴展;二是,添加新的頭信息字段。
對TRSP進行擴展,主要是為了滿足服務器的一些特別的要求。這樣做的負面影響出現(xiàn)了如果終端廠商要和該服務器進行流媒體通信,那么就必須知道服務器是如何擴展RTSP協(xié)議棧的。很多服務器廠商之間都是不能互通的,原因就是他們各自對RTSP進行了不同的擴展。這種局面對于終端開發(fā)廠商來說,是非常不利的。
終端如要與不同流媒體局端服務器通信,或現(xiàn)有的服務器更改了通信接口規(guī)范,就得更改終端的流媒體協(xié)議棧,即改寫RTSP協(xié)議棧的源程序。如果終端廠商使用的是RTSP協(xié)議棧是第三方提供的二進制庫,就更加麻煩,只能委托RTSP源代碼提供廠商進行修改。由于市場中不同的流媒體服務器都占有一定的數(shù)量,各服務器廠商之間沒有相同的RTSP協(xié)議棧的標準,導致了終端開發(fā)廠商需要和不同服務器廠商對接十分繁瑣。

發(fā)明內容
本發(fā)明所要解決的技術問題是,提供了一種流媒體通信方法,能夠不修改終端RTSP源程序就能和不同流媒體服務器進行通信。
本發(fā)明為解決上述技術問題所采用的技術方案是,實時流媒體通信方法,包括以下步驟a、終端根據流媒體服務器發(fā)布的流媒體通信接口規(guī)范,產生用戶配置文件;b、終端RTSP協(xié)議棧自動讀取配置文件,并組織生成請求消息頭信息字段,向媒體流服務器發(fā)送該消息;c、流媒體服務器收到請求消息后,返回響應消息;d、終端收到返回響應消息,判斷媒體流服務器,是否只是對現(xiàn)有RTSP頭信息做擴展,而沒有新的頭信息字段增加,若是,進入步驟e;若否,進入步驟f;e、用鏈表數(shù)據結構動態(tài)保存響應消息的頭信息字段擴展,進入步驟g;f、先分配一個鏈表單元保存該字段,并插入鏈表,再對每一個擴展的頭字段動態(tài)保存,進入步驟g;g、在調用RTSP協(xié)議棧的播放器中做接口封裝。
用戶配置文件為文本文件,包括有對應該服務器的頭信息,頭信息字段包括有RTSP頭信息的擴展,或新增加的頭信息字段。在服務器端更改通信接口規(guī)范的內容后,使用本方法不需要更改終端協(xié)議棧源代碼,只要更改相應的配置文件即可實現(xiàn)通信。
本發(fā)明的有益效果是,采用本發(fā)明的終端能夠智能的和任意一家流媒體服務器對接而不需要更改協(xié)議棧源代碼,只需要把服務器端所做的協(xié)議私有擴展內容寫入一個配置文件并放入指定的文件目錄下,換一個互通服務器只需更換一份配置文件即可。即使不會編程的人員也可以實現(xiàn)這種和不同服務器的對接工作,實現(xiàn)了終端和不同流媒體服務器對接時的快捷、高效,有很大的經濟效益。
具體實施例方式
每個流媒體服務器端將其做的協(xié)議私有擴展寫入一個配置文件,終端將該配置文件放入指定的文件目錄下。在終端更換需要與之通信的流媒體服務器時,只需更換配置文件即可。
終端向流媒體服務器發(fā)送連接請求消息,RTSP協(xié)議棧的請求連接消息頭信息字段由該用戶配置文件指定發(fā)送時不是在程序內部組織方法,如描述(DESCRIBE)、建立連接(SETUP)、播放(PLAY)等,的請求字段(REQUEST)的內容,而是打開并讀取用戶配置文件,從文件中讀取用戶指定的相關內容組織REQUEST方法。例如要發(fā)送SETUP REQUEST時,從用戶的配置文件中查找SETUP,找到后把相應的頭信息讀入緩沖區(qū),完成組成完整的SETUP REQUEST內容,送發(fā)送模塊發(fā)送。如果沒有找到用戶關于SETUP的定義,則說明用戶沒有擴展,用默認的信息組織SETUP REQUEST內容即可。這樣做就使得SETUP REQUEST的內容完全由用戶的配置文件指定。一些常規(guī)的變量如Cseq頭,Session頭等的取值是由程序內部動態(tài)產生,不需要在配置文件中指出。當服務器對SETUP做了擴展后,只要更換配置文件,不需要更改RTSP源程序就能達到和服務器互通的目的,解決了終端發(fā)送消息內容靈活配置的問題。
該配置文件中指定了常用方法的頭字段信息,即RFC2326中最小執(zhí)行子集(Minimal RTSP implementation)規(guī)定的方法。如Accept接收請求頭,用于告知服務器終端接收媒體描述信息的方式;Transport傳輸請求頭,用于告知服務器終端使用的接收數(shù)據的協(xié)議、和使用的端口等;Content-length指示方法包括的內容的長度;Content-type指示方法內容的類型;x-Extend、x-Timeshift_Range用戶擴展的頭字段。每個頭字段首部用*號標明以便于在文件中查找。配置文件部分代碼示例如下文件路徑/usr/loclal/include/文件名config.txtC->SDESCRIBE RTSP/1.0*Acceptapplication/sdp,application/rtsl,application/mhegC->SSETUP RTSP/1.0*TransportRTP/AVP;unicast;client_port=4588-4589*x-ExtendC->SPLAY RTSP/1.0C->SGET PARAMETER RTSP/1.0*x-Timeshift_RangeC->SSET PARAMETER RTSP/1.0*Content-length20*Content-typetext/parameters流媒體服務器收到請求連接消息后,返回響應消息;終端收到返回響應消息(RTSP RESPONSE),動態(tài)擴展保存接收到的頭字段的數(shù)據結構前面說過RTSP協(xié)議棧的擴展一般分為兩類,當只是對現(xiàn)有RTSP頭信息做擴展,沒有新的頭信息字段增加時,就不需要更改保存RTSP RESPONSE的數(shù)據結構的成員變量;用鏈表來實現(xiàn)保存RTSP RESPONSE頭信息的數(shù)據結構即可。
用于保存RTSP RESPONSE的數(shù)據結構定義的部分代碼如下所示鏈表數(shù)據結構單元定義,鏈表結構中,next指向下一個單元的指針;name信息頭字段名;value信息頭字段對應的值struct decode_response_t{decode response_t*next;char*name;void*value;};typedef struct decode_response_t decode_response;鏈表頭的定義,鏈表結構中,head指向鏈表首單元的指針;tatal_num鏈表中的單元總數(shù)struct response_head_t{decode_response*head;int tatal_num;};typedef struct decode_head_t decode_head;但是當RTSP協(xié)議棧的擴展添加了新的頭信息字段時,就需要添加保存RTSP RESPONSE的數(shù)據結構的成員變量,即此時該數(shù)據結構的成員是動態(tài)變化的。
當接收到的頭信息字段沒有在建立的鏈表隊列中定義,即接收到的頭字段是流媒體服務器新添加的頭信息字段時,終端重新分配一個單元空間保存該新頭信息字段,并插入到鏈表中。
鏈表的建立和成員數(shù)據單元的插入及其使用,如下所示(1)建立鏈表時先建立一個鏈表,表頭指針指向空值(NULL)decode_head*link=(decode_head*)mailoc(sizeof(decode_head));memset(head,0,sizeof(decode_head));(2)把一些常規(guī)的頭信息字段(如Session,Cseq等)插入到鏈表中,以把Session字段插入到鏈表中為例decode_response*tmp=(decode_response*)malloc(sizeof(decode_response));memset(tmp,0,sizeof(decode_response));tmp->name=”Session”;tmp->next=link->head;link->head=tmp;link->taltal_num++;(3)收到的新添加的頭信息字段插入到鏈表中,例如接收到的頭信息字段在當前鏈表中沒有找到,表示接收到了服務器新添加的頭信息字段,假設為”x-Info123456”,其中x-Info為添加的頭信息字段名,123456為該頭信息字段的值。則插入操作如下decode_response*tmp=(decode_response*)malloc(sizeof(decode_response));
memset(tmp,0,sizeof(decode_response));tmp->name=”x-Info”;tmp->value=”123456”;tmp->next=link->head;link->head=tmp;link->taltal_num++;(4)調用鏈表中的成員變量(頭信息字段)當要訪問鏈表中的成員變量時,例如需要獲取x-Info的當前值,則定義一個函數(shù)void*getvalue(decode_head*ihead,char*name){/*…從鏈表頭ihead指向的鏈表中查找和頭信息字段name同名的單元的value值,并返回該值;*/}通過這種方式,就能在終端RTSP協(xié)議棧中自動分類保存服務器端新添加的所有頭信息字段。達到了自動擴展的目的,避免了由服務器端擴展新方法而終端就必須修改RTSP協(xié)議棧源程序的煩瑣。
由上面得到的保存RTSP RESPONSE頭信息的數(shù)據結構鏈表中的新添加的頭信息字段可能要傳遞給數(shù)據傳輸協(xié)議棧(RTP或TS),還有可能被播放器直接使用,為了避免修改協(xié)議棧源代碼,這種傳遞放在播放器的改寫中來完成,即在調用RTSP協(xié)議棧的播放器中做接口封裝。
傳統(tǒng)的設計方式在服務器有擴展時,除了主要改寫RTSP協(xié)議棧源代碼以外,還要對播放器做一些細微改動;而本發(fā)明所述方案,不需要對RTSP協(xié)議棧源代碼做任何修改,僅僅更改播放器相關接口部分即可,給終端RTSP協(xié)議棧開發(fā)商與不同的流媒體服務器對接帶來了極大的方便。因為不需要修改協(xié)議棧源代碼,即使僅僅使用的是RTSP協(xié)議棧二進制庫而沒有源代碼也沒有關系。
播放器內部做的與新添加的頭信息字段相關的細微改動,如下所示(1)RTSP到RTP/TS的信息傳遞RTSP需要把頭信息字段的值傳遞給流媒體數(shù)據傳輸協(xié)議棧(RTP或TS),例如RTSP需要把RTP使用的用戶端口值(client_port)傳遞給RTP,假定RTSP提供的接口調用函數(shù)定義如下void*Rtsp::get_response_info(char*name){…}client_port的值保存在頭字段信息Transport中,所以首先獲取頭字段信息TransportRtsp*p_rtsp=new Rtsp;Void*tmp=P_rtsp->get_response_info(“Transport”);得到tmp后便可以查找到client_port值,再利用RTP提供的相關接口函數(shù)把該值傳給RTP處理。
從RTSP獲取其他頭字段的信息也和上面一樣,在此不再贅述。
(2)RTSP到播放器的信息傳遞這種方式更簡單,直接利用RTSP提供的接口調用函數(shù)獲取指定的頭信息即可。
通過上述實時流媒體的通信方法能夠智能的和任意一家流媒體服務器對接而不需要更改協(xié)議棧源代碼。
權利要求
1.實時流媒體通信方法,其特征在于,包括以下步驟a、終端根據流媒體服務器發(fā)布的流媒體通信接口規(guī)范,產生用戶配置文件;b、終端RTSP協(xié)議棧自動讀取配置文件,并組織生成請求消息頭信息字段,向媒體流服務器發(fā)送該消息;c、流媒體服務器收到請求消息后,返回響應消息;d、終端收到返回響應消息,判斷媒體流服務器,是否只是對現(xiàn)有RTSP頭信息做擴展,而沒有新的頭信息字段增加,若是,進入步驟e;若否,進入步驟f;e、用鏈表數(shù)據結構動態(tài)保存響應消息的頭信息字段擴展,進入步驟g;f、先分配一個鏈表單元保存該字段,并插入鏈表,再對每一個擴展的頭字段動態(tài)保存,進入步驟g;g、在調用RTSP協(xié)議棧的播放器中做接口封裝。
2.如權利要求1所述實時流媒體通信方法,其特征在于,所述用戶配置文件為文本文件,包括有對應該服務器的頭信息;所述頭信息字段包括有RTSP頭信息的擴展字段,或新增加的頭信息字段。
全文摘要
本發(fā)明涉及網絡通信技術,特別涉及一種流媒體實時流協(xié)議棧RTSP的應用。本發(fā)明要解決的技術問題是,RTSP沒有統(tǒng)一的標準,導致了流媒體終端和服務器對接非常煩瑣,提出了一種實時流媒體通信方法,不需要修改協(xié)議棧源程序就可以和不同服務器互通。采用的技術方案是,將服務器端所做的協(xié)議私有擴展內容寫入一個配置文件并放入指定的文件目錄下,換一個互通服務器只需更換一份配置文件即可。即使不會編程的人員也可以實現(xiàn)這種和不同服務器的對接工作,實現(xiàn)了終端和不同流媒體服務器對接時的快捷、高效,有很大的經濟效益。
文檔編號H04L12/28GK1929480SQ20061002198
公開日2007年3月14日 申請日期2006年9月30日 優(yōu)先權日2006年9月30日
發(fā)明者李曉東, 張恩陽 申請人:四川長虹電器股份有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1