基于onvif協(xié)議的碼流轉(zhuǎn)換方法及裝置制造方法
【專利摘要】本發(fā)明提供一種基于ONVIF協(xié)議的碼流轉(zhuǎn)換方法及裝置,應用于媒體轉(zhuǎn)發(fā)服務器,包括:在RTSP協(xié)商過程中,接收編碼端的RTSP?DESCRIBE應答消息,從該消息中獲取解碼參數(shù)PPS/SPS,并保存該解碼參數(shù)與該編碼端的對應關(guān)系;在接收到編碼端的碼流數(shù)據(jù)時,判斷該碼流數(shù)據(jù)中的I幀首包前是否存在解碼參數(shù),若不存在,則查詢該編碼端對應的解碼參數(shù),將該解碼參數(shù)進行封包處理,添加到I幀首包前,并修改I幀首包以及后續(xù)數(shù)據(jù)包的序列號;若存在,則不作處理。本發(fā)明解決了碼流的標準化問題,使解碼端接收到的都是標準碼流,從而最大程度的支持各種組網(wǎng)方案和實現(xiàn)視頻產(chǎn)品互聯(lián)互通的需求。
【專利說明】基于ONVIF協(xié)議的碼流轉(zhuǎn)換方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及流媒體領(lǐng)域,尤其涉及一種基于ONVIF協(xié)議的碼流轉(zhuǎn)換方法及裝置?!颈尘凹夹g(shù)】
[0002]隨著安防行業(yè)的全速發(fā)展,ONVIF近年來得到較高關(guān)注,各個廠家紛紛支持ONVIF協(xié)議進行互聯(lián)互通。在任何一種組網(wǎng)中,解碼端都需要知道碼流的解碼參數(shù)PPS (PictureParameter Sets,圖像參數(shù)集)和SPS (Sequence Parameter Sets,序列參數(shù)集),才能夠?qū)Υa流進行解碼。ONVIF協(xié)議定義了碼流的解碼參數(shù)可以攜帶在RTSP協(xié)商的DESCRIBE應答報文中,也可以攜帶在H.264的碼流中,或者在兩者中都攜帶。
[0003]不同的廠商實現(xiàn)不同,部分廠商沒有將解碼參數(shù)攜帶在碼流中,僅在RTSP協(xié)商中攜帶,這就要求解碼端需要與編碼端直連并且支持RTSP協(xié)議,解碼端才可以獲取到解碼參數(shù)進行解碼。如果一個解碼端不支持RTSP協(xié)議,或者不能確定解碼端的具體情況時,需要有中間組件的介入來協(xié)助。
[0004]媒體轉(zhuǎn)發(fā)服務器(MS,Media Server)作為中間組件,通常在RTP擴展字段中攜帶解碼參數(shù)PPS/SPS,該解碼參數(shù)包括編碼格式、編碼級別、圖像寬高等信息。該種方式是對擴展字段的一種私有定義,需要解碼端按照某種約定來對這些字段中的參數(shù)進行解析,所以不通用。另外,解碼時需要用到的碼流類型Payload Type同樣需要在RTP擴展字段中攜帶,由于不同廠商可能定義不同的Payload Type,因此,需要解碼端也按照約定解析此參數(shù),所以同樣存在不通用的問題。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明提供一種基于ONVIF協(xié)議的碼流轉(zhuǎn)換方法,應用于媒體轉(zhuǎn)發(fā)服務器,其特征在于,該方法包括以下步驟:
[0006]步驟A,在RTSP協(xié)商過程中,接收編碼端的RTSP DESCRIBE應答消息,從該消息中獲取解碼參數(shù)PPS/SPS,并保存該解碼參數(shù)與該編碼端的對應關(guān)系;
[0007]步驟B,在接收到編碼端的碼流數(shù)據(jù)時,判斷該碼流數(shù)據(jù)中的I幀首包前是否存在解碼參數(shù),若不存在,則查詢該編碼端對應的解碼參數(shù),將該解碼參數(shù)進行封包處理,添加到I幀首包前,并修改I幀首包以及后續(xù)數(shù)據(jù)包的序列號;若存在,則不作處理。
[0008]本發(fā)明還提供一種基于ONVIF協(xié)議的碼流轉(zhuǎn)換裝置,應用于媒體轉(zhuǎn)發(fā)服務器,其特征在于,該裝置包括:
[0009]控制協(xié)商單元,用于在RTSP協(xié)商過程中,接收編碼端的RTSP DESCRIBE應答消息,從該消息中獲取解碼參數(shù)PPS/SPS,并保存該解碼參數(shù)與該編碼端的對應關(guān)系;
[0010]碼流轉(zhuǎn)換單元,用于在接收到編碼端的碼流數(shù)據(jù)時,判斷該碼流數(shù)據(jù)中的I幀首包前是否存在解碼參數(shù),若不存在,則查詢該編碼端對應的解碼參數(shù),將該解碼參數(shù)進行封包處理,添加到I幀首包前,并修改I幀首包以及后續(xù)數(shù)據(jù)包的序列號;若存在,則不作處理。[0011]本發(fā)明解決了碼流的標準化問題,使解碼端接收到的都是標準碼流,從而最大程度的支持各種組網(wǎng)方案和實現(xiàn)視頻產(chǎn)品互聯(lián)互通的需求。
【專利附圖】
【附圖說明】
[0012]圖1是本發(fā)明一種實施方式中基于ONVIF組網(wǎng)的碼流轉(zhuǎn)換裝置的邏輯結(jié)構(gòu)及其基礎(chǔ)硬件環(huán)境的示意圖。
[0013]圖2是本發(fā)明一種實施方式中基于ONVIF組網(wǎng)的碼流轉(zhuǎn)換方法的流程圖。
[0014]圖3是本發(fā)明一種實施方式中網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)組網(wǎng)的基本結(jié)構(gòu)示意圖。
[0015]圖4是本發(fā)明一種實施方式中序列號重新排序示意圖。
【具體實施方式】
[0016]本發(fā)明提供一種基于ONVIF協(xié)議的碼流轉(zhuǎn)換裝置,該裝置應用在媒體轉(zhuǎn)發(fā)服務器上,以下以軟件實現(xiàn)為例進行說明,但是本發(fā)明并不排除諸如硬件或者邏輯器件等其他實現(xiàn)方式。如圖1所示,該媒體轉(zhuǎn)發(fā)服務器通常包括CPU、內(nèi)存、非易失性存儲器以及其他硬件。該基于ONVIF協(xié)議的碼流轉(zhuǎn)換裝置作為一個邏輯層面的虛擬裝置,其通過CPU來運行。該裝置包括控制協(xié)商單元和碼流轉(zhuǎn)換單元。請參考圖2具體的實施步驟。
[0017]步驟101,在RTSP協(xié)商過程中,接收編碼端的RTSP DESCRIBE應答消息,從該消息中獲取解碼參數(shù)PPS/SPS,并保存該解碼參數(shù)與該編碼端的對應關(guān)系;
[0018]步驟102,在接收到編碼端的碼流數(shù)據(jù)時,判斷該碼流數(shù)據(jù)中的I幀首包前是否存在解碼參數(shù),若不存在,則查詢該編碼端對應的解碼參數(shù),將該解碼參數(shù)進行封包處理,添加到I幀首包前,并修改I幀首包以及后續(xù)數(shù)據(jù)包的序列號;若存在,則不作處理。
[0019]ONVIF作為一種開放型網(wǎng)絡(luò)視頻接口標準,已被廣泛用于各種網(wǎng)絡(luò)視頻設(shè)備中,以便不同廠商所生產(chǎn)的網(wǎng)絡(luò)視頻設(shè)備可實現(xiàn)互聯(lián)互通。網(wǎng)絡(luò)視頻傳輸系統(tǒng)主要包括編碼端和解碼端,編碼端為監(jiān)控前端設(shè)備,例如,網(wǎng)絡(luò)攝像機IPC,解碼端包括PC客戶端、實況上墻硬解以及錄像數(shù)據(jù)存儲等。編碼端按照標準的編碼格式對采集到的視頻進行壓縮編碼。解碼端在接收到碼流數(shù)據(jù)時,必須知道該碼流數(shù)據(jù)的編碼參數(shù),才能對該碼流數(shù)據(jù)進行解碼。ONVIF協(xié)議定義了碼流的解碼參數(shù)可以攜帶在RTSP協(xié)商的DESCRIBE應答報文中,也可以攜帶在H.264的碼流中,或者在兩者中都攜帶。由于不同的廠商實現(xiàn)不同,雖然都遵守ONVIF協(xié)議,但解碼參數(shù)的攜帶方式不同。若解碼參數(shù)僅攜帶在RTSP協(xié)商的DESCRIBE應答報文中,則需要解碼端同樣支持RTSP協(xié)議,才可以獲取到解碼參數(shù)進行解碼。
[0020]現(xiàn)有的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)中,常常需要一路碼流對應多個解碼端,而編碼端的發(fā)送能力有限,很多廠商的編碼設(shè)備僅能發(fā)送一路或兩路碼流。一般的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)中通常都會存在進行媒體流轉(zhuǎn)發(fā)的媒體轉(zhuǎn)發(fā)服務器MS。本發(fā)明對該媒體轉(zhuǎn)發(fā)服務器進行改進,以利解碼端對媒體流數(shù)據(jù)進行解碼。
[0021]本發(fā)明通過媒體轉(zhuǎn)發(fā)服務器進行碼流轉(zhuǎn)換,為解碼端提供可識別的標準H.264碼流,【具體實施方式】如下。
[0022]編碼端與媒體轉(zhuǎn)發(fā)服務器均支持ONVIF協(xié)議,在RTSP協(xié)商過程中,媒體轉(zhuǎn)發(fā)服務器發(fā)送RTSP DESCRIBE請求給編碼端,編碼端接收到該請求后,向媒體轉(zhuǎn)發(fā)服務器發(fā)送RTSPDESCRIBE應答消息,媒體轉(zhuǎn)發(fā)服務器接收到該應答消息后,從該消息中獲取解碼參數(shù)PPS/SPS,并保存該解碼參數(shù)與該編碼端的對應關(guān)系。該解碼參數(shù)用于定義圖像寬高以及編碼級別等參數(shù),當解碼端接收到上述解碼參數(shù)時,即可對接收到的碼流進行解碼。
[0023]由于媒體轉(zhuǎn)發(fā)服務器通常會與多個編碼端連接,在與多個編碼端進行RTSP協(xié)商過程中,會收到不同編碼端的RTSP DESCRIBE應答消息,進而獲得多個解碼參數(shù)。為了保證在后續(xù)操作過程中,將解碼參數(shù)添加到其對應編碼端發(fā)送的碼流中,媒體轉(zhuǎn)發(fā)服務器需要保存解碼參數(shù)與發(fā)送該解碼參數(shù)的編碼端的對應關(guān)系。
[0024]在編碼端與媒體轉(zhuǎn)發(fā)服務器進行RTSP協(xié)商后,編碼端向媒體轉(zhuǎn)發(fā)服務器發(fā)送碼流數(shù)據(jù)。媒體轉(zhuǎn)發(fā)服務器在接收到該碼流數(shù)據(jù)后,判斷該碼流數(shù)據(jù)中的每一個I幀首包前是否存在解碼參數(shù),若不存在,則查詢該編碼端對應的解碼參數(shù),將該解碼參數(shù)進行封包處理,添加到I幀首包前,修改I幀首包以及后續(xù)數(shù)據(jù)包的序列號。優(yōu)選地,媒體轉(zhuǎn)發(fā)服務器接收到的碼流數(shù)據(jù)編碼格式為H.264。在ONVIF協(xié)議中規(guī)定,H.264碼流中可以攜帶解碼參數(shù),也可以不攜帶解碼參數(shù),因此,不同廠商生產(chǎn)的編碼端設(shè)備雖然都遵守ONVIF協(xié)議,但輸出的碼流結(jié)構(gòu)是不同的。對于沒有攜帶解碼參數(shù)的H.264碼流數(shù)據(jù),解碼端無法進行視頻解碼,因此,在媒體轉(zhuǎn)發(fā)服務器中,需要對沒有攜帶解碼參數(shù)的H.264碼流添加解碼參數(shù),將經(jīng)過媒體轉(zhuǎn)發(fā)服務器的所有碼流都轉(zhuǎn)換為帶解碼參數(shù)的標準H.264碼流。
[0025]上述碼流轉(zhuǎn)換過程具體為,媒體轉(zhuǎn)發(fā)服務器在接收到編碼端的碼流數(shù)據(jù)后,查詢該碼流數(shù)據(jù)中所有I幀首包前是否存在解碼參數(shù),若不存在解碼參數(shù),則繼續(xù)查詢發(fā)送該碼流數(shù)據(jù)的編碼端在該媒體轉(zhuǎn)發(fā)服務器上保存的對應解碼參數(shù),將該解碼參數(shù)進行傳輸協(xié)議封包,該傳輸協(xié)議為UDP或TCP傳輸協(xié)議,傳輸協(xié)議的選擇由上層業(yè)務決定。在解碼參數(shù)封包后,將該封包添加到I幀首包前,并修改I幀首包以及后續(xù)數(shù)據(jù)包的序列號。參見圖4,在本實施例中,解碼參數(shù)PPS/SPS封包后,添加到原I幀首包的位置,序列號為200,I幀首包及后續(xù)數(shù)據(jù)順序后移,I幀首包序列號為201,后續(xù)數(shù)據(jù)的序列號以此類推。
[0026]媒體轉(zhuǎn)發(fā)服務器在進行碼流轉(zhuǎn)換過程中,還需要對碼流類型PayloadType進行修改。這是由于不同廠商對碼流類型的定義是不同的,因此,在媒體轉(zhuǎn)發(fā)服務器進行碼流轉(zhuǎn)換的過程中,需要將碼流類型修改為標準H.264定義值,H.264的標準視頻定義值為96。具體實施過程如下:當媒體轉(zhuǎn)發(fā)服務器接收到碼流數(shù)據(jù)時,對每一包數(shù)據(jù)進行解析,若當前包內(nèi)的碼流類型為非標準H.264視頻定義值,則修改該碼流類型值為標準H.264視頻定義值。
[0027]在經(jīng)過上述處理后,將攜帶解碼參數(shù)的標準H.264碼流傳送給解碼端,所有的解碼端均可識別該標準H.264碼流。
[0028]在上述實施例中,通過媒體轉(zhuǎn)發(fā)服務器對碼流進行標準化轉(zhuǎn)換,從而使解碼端接收到碼流均為標準碼流,因此,最大程度地實現(xiàn)了對各種組網(wǎng)方案的支持和視頻產(chǎn)品互聯(lián)互通的需求。
[0029]以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應包含在本發(fā)明保護的范圍之內(nèi)。
【權(quán)利要求】
1.一種基于ONVIF協(xié)議的碼流轉(zhuǎn)換方法,該方法應用于媒體轉(zhuǎn)發(fā)服務器,其特征在于,該方法包括以下步驟: 步驟A,在RTSP協(xié)商過程中,接收編碼端的RTSP DESCRIBE應答消息,從該消息中獲取解碼參數(shù)PPS/SPS,并保存該解碼參數(shù)與該編碼端的對應關(guān)系; 步驟B,在接收到編碼端的碼流數(shù)據(jù)時,判斷該碼流數(shù)據(jù)中的I幀首包前是否存在解碼參數(shù),若不存在,則查詢該編碼端對應的解碼參數(shù),將該解碼參數(shù)進行封包處理,添加到I幀首包前,并修改I幀首包以及后續(xù)數(shù)據(jù)包的序列號;若存在,則不作處理。
2.如權(quán)利要求1所述的方法,其特征在于:所述步驟B中進一步包括: 將所述碼流數(shù)據(jù)中的非標準Payload Type值修改為標準H.264定義值。
3.一種基于ONVIF協(xié)議的碼流轉(zhuǎn)換裝置,該裝置應用于媒體轉(zhuǎn)發(fā)服務器,其特征在于,該裝置包括: 控制協(xié)商單元,用于在RTSP協(xié)商過程中,接收編碼端的RTSP DESCRIBE應答消息,從該消息中獲取解碼參數(shù)PPS/SPS,并保存該解碼參數(shù)與該編碼端的對應關(guān)系; 碼流轉(zhuǎn)換單元,用于在接收到編碼端的碼流數(shù)據(jù)時,判斷該碼流數(shù)據(jù)中的I幀首包前是否存在解碼參數(shù),若不存在,則查詢該編碼端對應的解碼參數(shù),將該解碼參數(shù)進行封包處理,添加到I幀首包前,并修改I幀首包以及后續(xù)數(shù)據(jù)包的序列號;若存在,則不作處理。
4.如權(quán)利要求3所述的裝置,其特征在于: 所述碼流轉(zhuǎn)換單元進一步用于將所述碼流數(shù)據(jù)中的非標準Payload Type值修改為標準H.264定義值。
【文檔編號】H04N21/63GK103686205SQ201310750612
【公開日】2014年3月26日 申請日期:2013年12月30日 優(yōu)先權(quán)日:2013年12月30日
【發(fā)明者】楊春燕, 葉倩燕, 蔡焱鋼 申請人:浙江宇視科技有限公司