亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

流媒體傳輸方法及裝置的制作方法

文檔序號:7762054閱讀:331來源:國知局
專利名稱:流媒體傳輸方法及裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種流媒體傳輸方法及裝置。
背景技術(shù)
3G技術(shù)可以更好地實(shí)現(xiàn)圖像、音樂、視頻等多種媒體信息,并提供實(shí)時監(jiān)控、視頻 通話、手機(jī)電視等采用流媒體傳輸技術(shù)的功能。視頻壓縮標(biāo)準(zhǔn)H. 264因其高壓縮率、高質(zhì) 量、低碼率的特點(diǎn),成為了當(dāng)前流媒體傳輸?shù)闹髁鳂?biāo)準(zhǔn)。目前,現(xiàn)有技術(shù)提供了通過基于 RTP/RTCP(Real-time TransportProtocol/RTP Control Protocol,實(shí)時傳輸/控制協(xié)議)傳輸H. 264流媒體的方法,其根據(jù)客戶端的反饋 信息對網(wǎng)絡(luò)狀態(tài)進(jìn)行分析,并根據(jù)分析結(jié)果對H. 264基本流直接打包轉(zhuǎn)化成的RTP包的傳 輸進(jìn)行調(diào)整控制,以此降低H. 264流媒體傳輸時的延時和丟包率,提高用戶對H. 264流媒體 的收視體驗(yàn)。在實(shí)現(xiàn)本發(fā)明過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在如下問題RTP包由H. 264 基本流直接打包而成時,當(dāng)同步信息丟失時會造成數(shù)據(jù)丟失、誤碼的現(xiàn)象。TS(Transport Stream,傳送流)格式可以在同步信息丟失時恢復(fù)數(shù)據(jù)信息,但在H. 264基本流轉(zhuǎn)換成TS 流時,通過在TS流中插入空包進(jìn)行PSI (Program Special Information,節(jié)目特定信息)數(shù) 據(jù)和PCR(Program Clock Reference,節(jié)目時鐘參考)信息的插入,這樣就會造成傳輸?shù)臄?shù) 據(jù)量大,在帶寬受限的3G網(wǎng)絡(luò)上傳輸時會降低用戶對H. 264流媒體的收視體驗(yàn)。

發(fā)明內(nèi)容
本發(fā)明的實(shí)施例提供一種流媒體傳輸方法及裝置,能夠提高用戶對H. 264流媒體 的收視體驗(yàn)。為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案—種流媒體傳輸方法,包括從H. 264數(shù)據(jù)流中依次獲取數(shù)據(jù)幀;將獲取的數(shù)據(jù)幀打包轉(zhuǎn)化為PES包;將所述PES包打包轉(zhuǎn)化為TS包,并根據(jù)所述數(shù)據(jù)幀的幀速率在所述TS包中插入 PCR信息和PSI數(shù)據(jù); 將所述TS包打包轉(zhuǎn)化為RTP包;根據(jù)客戶端發(fā)送的RTCP報文發(fā)送所述RTP包。一種流媒體傳輸裝置,包括數(shù)據(jù)獲取單元,用于從H. 264數(shù)據(jù)流中依次獲取數(shù)據(jù)幀;數(shù)據(jù)打包單元,用于將所述數(shù)據(jù)獲取單元獲取的數(shù)據(jù)幀打包轉(zhuǎn)化為PES包;將所 述PES包打包轉(zhuǎn)化為TS包,并根據(jù)所述數(shù)據(jù)幀的幀速率在所述TS包中插入PCR信息和PSI 數(shù)據(jù);數(shù)據(jù)傳送單元,用于將所述數(shù)據(jù)打包單元輸出的TS包打包轉(zhuǎn)化為RTP包,并根據(jù)
4客戶端發(fā)送的RTCP報文發(fā)送所述RTP包。本發(fā)明實(shí)施例提供的流媒體傳輸方法及裝置,通過從H. 264數(shù)據(jù)流中依次獲取數(shù) 據(jù)幀,并將獲取的數(shù)據(jù)幀打包轉(zhuǎn)化為PES包,然后,將所述PES包打包轉(zhuǎn)化為TS包,并根據(jù) 所述數(shù)據(jù)幀的幀速率在所述TS包中插入PCR信息和PSI數(shù)據(jù),根據(jù)客戶端發(fā)送的RTCP報 文發(fā)送由TS包打包轉(zhuǎn)化成的RTP包。因此,不需要在將H. 264數(shù)據(jù)流轉(zhuǎn)換的TS流時在該 TS流中插入空包,減小了傳輸?shù)臄?shù)據(jù)量,并且使3G環(huán)境下H. 264流媒體的傳輸誤碼率得到 保障。從而提高用戶對H. 264流媒體的收視體驗(yàn)。


為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對實(shí)施例描述中所需要使用 的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于 本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他 的附圖。圖1為本發(fā)明實(shí)施例提供的一種流媒體傳輸方法的流程示意圖;圖2為本發(fā)明實(shí)施例提供的另一種流媒體傳輸方法的流程示意圖;圖3為本發(fā)明實(shí)施例提供的PTS值和DTS值的設(shè)置方法的流程示意圖;圖4為本發(fā)明實(shí)施例提供的將所述PE S包打包轉(zhuǎn)化為TS包的方法的流程示意 圖;圖5為本發(fā)明實(shí)施例提供的一種流媒體傳輸裝置的構(gòu)成示意圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于 本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他 實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。為了能夠提高用戶對H. 264流媒體的收視體驗(yàn),本發(fā)明實(shí)施例提供了一種流媒體 傳輸方法,如圖1所示,包括101、從H. 264數(shù)據(jù)流中依次獲取數(shù)據(jù)幀;舉例而言,可以在接收H. 264數(shù)據(jù)流時,以幀為單位存儲該H. 264數(shù)據(jù)流,依次讀 取存儲的該H. 264數(shù)據(jù)流的數(shù)據(jù)幀。102、將獲取的數(shù)據(jù)幀打包轉(zhuǎn)化為PES (Packetised ElementaryStreams,包化基本 數(shù)據(jù)流)包;舉例而言,可以從獲取的數(shù)據(jù)幀的數(shù)據(jù)信息中獲取幀速率,并根據(jù)該幀速率獲取 該數(shù)據(jù)幀的 PTS (Presentation Time Stamp,顯示時間標(biāo)簽)值和 DTS (Decoding Time Stamp,解碼時間標(biāo)簽)值,然后,根據(jù)該P(yáng)TS值和DTS值將該數(shù)據(jù)幀打包轉(zhuǎn)化為PES包。其中,可以根據(jù)幀速率獲取幀歷時,并按照以下不同情況獲取該數(shù)據(jù)幀的PTS和 DTS 值:在所述數(shù)據(jù)幀為I幀,且所述數(shù)據(jù)幀的下一數(shù)據(jù)幀為P幀時,或者,在所述數(shù)據(jù)幀 和所述數(shù)據(jù)幀的下一數(shù)據(jù)幀均為P幀時,根據(jù)所述幀歷時和所述數(shù)據(jù)幀的序號獲取所述數(shù)據(jù)幀的DTS值,根據(jù)所述幀歷時和所述數(shù)據(jù)幀的下一數(shù)據(jù)幀的序號獲取所述數(shù)據(jù)幀的PTS 值;在所述數(shù)據(jù)幀為I幀,且所述數(shù)據(jù)幀的下一數(shù)據(jù)幀為B幀時,或者,在所述數(shù)據(jù)幀 為P幀,且所述數(shù)據(jù)幀的下一數(shù)據(jù)幀不是P幀時,根據(jù)所述幀歷時和所述數(shù)據(jù)幀的序號獲取 所述數(shù)據(jù)幀的DTS值,根據(jù)所述幀歷時,所述數(shù)據(jù)幀的序號,所述數(shù)據(jù)幀的圖像編碼輸入順 序以及所述數(shù)據(jù)幀的上一數(shù)據(jù)幀的圖像編碼輸入順序獲取所述數(shù)據(jù)幀的PTS值;在所述數(shù)據(jù)幀為B幀時,根據(jù)所述幀歷時和所述數(shù)據(jù)幀的序號獲取所述數(shù)據(jù)幀的 DTS值和PTS值。103、將所述PES包打包轉(zhuǎn)化為TS包,并根據(jù)所述數(shù)據(jù)幀的幀速率在所述TS包中 插入PCR信息和PSI數(shù)據(jù);舉例而言,可以先設(shè)置所述H. 264數(shù)據(jù)流對應(yīng)的PSI數(shù)據(jù),所述PSI數(shù)據(jù)包括PAT 表(Program Association Table,節(jié)目關(guān)聯(lián)表)禾口 PMT 表(Program Map Table,節(jié)目映射 表)和NIT表(Nerworklnformation Table,網(wǎng)絡(luò)信息表),獲取所述數(shù)據(jù)幀的PCR信息,并 根據(jù)所述幀速率獲取插入時間間隔。然后,分別對所述PES包和所述PSI數(shù)據(jù)進(jìn)行TS打包。 在TS打包過程中,根據(jù)所述插入時間間隔在所述PES包打包轉(zhuǎn)化成的TS包中確定信息插 入包,在所述信息插入包中添加獲取的PCR信息。并且,在所述PES包打包轉(zhuǎn)化成的TS包 隊(duì)列中,在所述信息插入包之后插入所述PSI數(shù)據(jù)打包轉(zhuǎn)化成的TS包。104、將所述TS包打包轉(zhuǎn)化為RTP包;舉例而言,依次對TS包設(shè)置RTP包時間戳,根據(jù)所述RTP包時間戳將TS包打包轉(zhuǎn) 化為RTP包。另外,在至少四個TS包所對應(yīng)的RTP包時間戳分別同時生成時,將四個TS包 打包轉(zhuǎn)化為一個RTP。105、根據(jù)客戶端發(fā)送的RTCP報文發(fā)送所述RTP包。舉例而言,可以根據(jù)客戶端發(fā)送的RTCP報文獲取客戶端丟失的RTP包的數(shù)量,在 所述丟失的RTP包的數(shù)量大于閾值時,將當(dāng)前的發(fā)送時間延時,然后,根據(jù)延時后的發(fā)送時 間向客戶端發(fā)送所述RTP包。本發(fā)明實(shí)施例提供的流媒體傳輸方法,通過從H. 264數(shù)據(jù)流中依次獲取數(shù)據(jù)幀, 并將獲取的數(shù)據(jù)幀打包轉(zhuǎn)化為PES包,然后,將所述PES包打包轉(zhuǎn)化為TS包,并根據(jù)所述數(shù) 據(jù)幀的幀速率在所述TS包中插入PCR信息和PSI數(shù)據(jù),根據(jù)客戶端發(fā)送的RTCP報文發(fā)送由 TS包打包轉(zhuǎn)化成的RTP包。因此,不需要在將H. 264數(shù)據(jù)流轉(zhuǎn)換的TS流時在該TS流中插 入空包,減小了傳輸?shù)臄?shù)據(jù)量,并且使3G環(huán)境下H. 264流媒體的傳輸誤碼率得到保障。從 而提高用戶對H. 264流媒體的收視體驗(yàn)。下面,以在3G網(wǎng)絡(luò)下服務(wù)器端向客戶端傳輸H. 264視頻流為例,對上一實(shí)施例作 進(jìn)一步詳細(xì)的描述。如圖2所示,本實(shí)施例流媒體傳輸方法,包括201、服務(wù)器端啟動系統(tǒng),執(zhí)行與H. 264視頻流傳輸相關(guān)的預(yù)設(shè)置操作。舉例而言,服務(wù)器端啟動系統(tǒng)后,預(yù)先設(shè)置一個輸入緩沖區(qū),其用于存放需要打包 的H. 264數(shù)據(jù)。同時啟動一個存儲數(shù)據(jù)的線程,在此將該線程稱為R線程,其用于將輸入的 一個H. 264視頻流,以幀為單位存放到緩沖區(qū)中。并且,預(yù)先設(shè)置一個輸出緩沖區(qū),用來存放打包后的TS流數(shù)據(jù)。同時啟動一個處理數(shù)據(jù)的線程,在此將該線程稱為W線程,其用于進(jìn)行TS打包和TS包傳輸。202、服務(wù)器端依次獲取H. 264視頻流的數(shù)據(jù)幀,將該數(shù)據(jù)幀存放到輸入緩沖區(qū)。舉例而言,R線程根據(jù)一定的存儲速度,將一幀一幀的H. 264數(shù)據(jù)存放到輸入緩沖 區(qū)。其中,該存儲速度是由圖像的顯示設(shè)置所決定,例如,圖像的顯示設(shè)置為25幀/S,那么 R線程每隔40ms才向輸入緩沖區(qū)中存入一幀H. 264數(shù)據(jù)。并且,R線程每向輸入緩沖區(qū)中存入一幀H. 264數(shù)據(jù)時,向線程W發(fā)送中斷信號, 要求W線程對該幀H. 264數(shù)據(jù)進(jìn)行處理。W線程接收該中斷信號后,將該中斷信號的事件加 入到消息處理隊(duì)列中,依次對該消息處理隊(duì)列中的事件進(jìn)行處理。203、服務(wù)器端依次從輸入緩沖區(qū)中獲取H. 264視頻流的數(shù)據(jù)幀,將獲取的數(shù)據(jù)幀 打包轉(zhuǎn)化為PES包。舉例而言,W線程從輸入緩沖區(qū)中讀取一幀H. 264數(shù)據(jù),設(shè)置該H. 264數(shù)據(jù)幀打包 后的PES包的PTS值和DTS值,其中,PTS用于規(guī)定該H. 264數(shù)據(jù)幀的顯示時間,DTS用于預(yù) 定該H. 264數(shù)據(jù)幀的解碼時間。在設(shè)置了 PTS值和DTS值后,將PES包頭信息封裝在H. 264 數(shù)據(jù)的前部,得到PES包。其中,PTS值和DTS值的設(shè)置方法可以如圖3所示,其具體可以 為2031、對讀取的H. 264數(shù)據(jù)幀進(jìn)行解析,獲取幀速率和圖像編碼輸入順序;例如,對讀取的H. 264數(shù)據(jù)幀進(jìn)行解析,根據(jù)H. 264數(shù)據(jù)幀的frame_rate_ code字段的內(nèi)容獲取該H. 264數(shù)據(jù)幀的幀速率frame_rate,并從H. 264數(shù)據(jù)幀的 picture-head()中獲取該H. 264數(shù)據(jù)幀的圖像編碼輸入順序,即temporal-reference的 值,該temporal-reference值的長度為lObit,表示編碼時圖像輸入的順序。根據(jù)以下公式計(jì)算該H. 264數(shù)據(jù)幀的幀歷時frame_time frame_time = (l/frame_rate)X90000H. 264數(shù)據(jù)壓縮采用預(yù)測編碼,H. 264數(shù)據(jù)幀的編碼順序和顯示順序可能不同,因 此,還需要根據(jù)該H. 264數(shù)據(jù)幀的前后各幀的情況確定該H. 264數(shù)據(jù)幀的DTS值和PTS值。2032、判斷當(dāng)前的H. 264數(shù)據(jù)幀是否是I幀(內(nèi)部編碼幀);若當(dāng)前的H. 264數(shù)據(jù) 幀是I幀,則進(jìn)入步驟2033,否則跳至步驟2036。2033、判斷當(dāng)前的H. 264數(shù)據(jù)幀的下一 H. 264數(shù)據(jù)幀是否是P幀,若下一 H. 264數(shù) 據(jù)幀是P幀,進(jìn)入步驟2034,否則跳至步驟2035。2034、根據(jù)當(dāng)前的H. 264數(shù)據(jù)幀的幀歷時和序號獲取DTS值,根據(jù)當(dāng)前的H. 264數(shù) 據(jù)幀的幀歷時和下一 H. 264數(shù)據(jù)幀的序號獲取PTS值。例如,在當(dāng)前的H. 264數(shù)據(jù)幀是I幀,且下一 H. 264數(shù)據(jù)幀是P幀時,當(dāng)前的H. 264 數(shù)據(jù)幀一般為視頻序列的第一幀,假設(shè)當(dāng)前的H. 264數(shù)據(jù)幀的序號為N,下一 H. 264數(shù)據(jù)幀 的序號為N+1,那么根據(jù)下述公式計(jì)算當(dāng)前的H. 264數(shù)據(jù)幀的DTS值和PTS值DTS(N) = frame_timeXNPTS(N) = frame_timeX (N+1)2035、根據(jù)當(dāng)前的H. 264數(shù)據(jù)幀的幀歷時和序號獲取DTS值,根據(jù)當(dāng)前的H. 264數(shù) 據(jù)幀的幀歷時、序號和圖像編碼輸入順序,以及上一 H. 264數(shù)據(jù)幀的圖像編碼輸入順序獲 取PTS值。例如,如果當(dāng)前的H. 264數(shù)據(jù)幀是I幀,其下一幀不是P幀而是B幀,那么可以根據(jù)下述公式計(jì)算當(dāng)前的H. 264數(shù)據(jù)幀的DTS值和PTS值DTS(N) = frame_timeXNPTS(N) = frame_timeX(N+temporal_reference(N)-temporal_reference(N-I))其中,N為當(dāng)前的H. 264數(shù)據(jù)幀的序號,temporal_reference (N)為當(dāng)前的H. 264 數(shù)據(jù)幀的圖像編碼輸入順序,temporal_reference (N-I)為上一 H. 264數(shù)據(jù)幀的圖像編碼 輸入順序。2036、判斷當(dāng)前的H. 264數(shù)據(jù)幀是否為B幀,若當(dāng)前的H. 264數(shù)據(jù)幀是B幀,則進(jìn) 入步驟2037,否則跳至步驟2033。2037、根據(jù)當(dāng)前的H. 264數(shù)據(jù)幀的幀歷時和序號獲取DTS值和PTS值。例如,在當(dāng)前的H. 264數(shù)據(jù)幀為B幀時,應(yīng)立即解碼顯示,因此,可以根據(jù)下述公式 計(jì)算當(dāng)前的H. 264數(shù)據(jù)幀的DTS值和PTS值DTS(N) = PTS(N) = frame_timeXN。其中,N為當(dāng)前的H. 264數(shù)據(jù)幀的序號。204、服務(wù)器端將所述PES包打包轉(zhuǎn)化為TS包,并根據(jù)所述數(shù)據(jù)幀的幀速率在所述 TS包中插入PCR信息和PSI數(shù)據(jù);其中,TS流是MPEG-2系統(tǒng)中的信息流格式。這種信息流格式的優(yōu)點(diǎn)在于TS流的 包結(jié)構(gòu)是固定長度的。當(dāng)傳輸過程中出現(xiàn)誤碼,破壞了某一個TS包的同步信息時,接收機(jī) 可在固定的位置檢測它后面的包中的同步信息,從而恢復(fù)同步,避免信息丟失。因此在網(wǎng)絡(luò) 環(huán)境惡劣的條件下,傳輸?shù)恼`碼率較高時,一般采用TS碼流傳輸。如圖4所示,將所述PES包打包轉(zhuǎn)化為TS包,并根據(jù)所述數(shù)據(jù)幀的幀速率在所述 TS包中插入PCR信息和PSI數(shù)據(jù)的方法具體可以為2041、設(shè)置該H. 264視頻流的PSI數(shù)據(jù)。例如,可以自定義地設(shè)置PMT表、NIT表和PES流的PID值,然后根據(jù)設(shè)置的PID值 構(gòu)建PAT表、PMT表和NIT表。2042、設(shè)置該H. 264數(shù)據(jù)幀的PCR信息。例如,可以根據(jù)下述公式計(jì)算該H. 264數(shù)據(jù)幀的PCR值PCR(N) = NX TransTime+ (12 X 8 X 27000000) /Translate.其中,12X8表示PCR字段結(jié)尾距離傳輸包頭為12個字節(jié)。TransTime為數(shù)據(jù)幀 的傳輸時間,Translate為數(shù)據(jù)幀的發(fā)送速率,TransTime和Trans_rate的值可以自行定 義。N為該H. 264數(shù)據(jù)幀的序號。2043、根據(jù)該H. 264數(shù)據(jù)幀的幀速率獲取插入時間間隔。其中,所述插入時間間隔表示將PSI數(shù)據(jù)的TS包和帶有PCR信息的TS包插入到 TS流中的時間間隔,插入時間間隔T可以通過以下公式計(jì)算得出T = l/frame_rate。例如,在PAL(Phase Alternating Line,逐行倒相)制式下該H. 264數(shù)據(jù)幀的幀速 率為25幀/s,那么插入時間間隔T為40ms。即,每隔40ms將PSI數(shù)據(jù)的TS包和帶有PCR 信息的TS包插入到TS流中。也就是說,在本實(shí)施例中,分別對每一個H. 264數(shù)據(jù)幀進(jìn)行TS 打包處理,并且每隔一個H. 264數(shù)據(jù)幀便將PSI數(shù)據(jù)和PCR信息插入到TS流中,為流媒體同步提供有效的手段。2044、分別對所述PES包和所述PSI數(shù)據(jù)進(jìn)行TS打包;例如,首先計(jì)算TS包頭大小,因?yàn)槊總€TS包大小都為188個字節(jié),需要將PES進(jìn) 行分割,按照184個字節(jié)對PES包進(jìn)行分割,分割成多個分割段。每分割出一個184個字節(jié) 的分割段,寫入4個字節(jié)的TS包頭信息,并且,還可以根據(jù)TS流格式的要求,對該TS包頭 信息進(jìn)行CRC(Cyclical Redundancy Check,循環(huán)冗余碼校驗(yàn))數(shù)據(jù)驗(yàn)證,然后將驗(yàn)證結(jié)果 和該TS包頭信息放在該分割段的前面打包成一個TS包。如果最后一個分割段不夠184個 字節(jié),則計(jì)算分割段實(shí)際大小與184個字節(jié)的差值,然后在TS包頭中根據(jù)差值個數(shù)用OxFF 填充。并且,根據(jù)計(jì)算的插入時間間隔在所述PES包打包轉(zhuǎn)化成的TS包中確定信息插入 包,在所述信息插入包中添加獲取的PCR信息,并且,在所述PES包打包轉(zhuǎn)化成的TS包隊(duì)列 中,在所述信息插入包之后插入所述PSI數(shù)據(jù)打包轉(zhuǎn)化成的TS包。205、服務(wù)器端將生成的TS包輸出到輸出緩沖區(qū)中。舉例而言,W線程將形成的TS包輸出到輸出緩沖區(qū)中。線程W查看消息處理隊(duì)列中 是否存在中斷信號的事件,即是否存在尚未處理的數(shù)據(jù)幀。如果W線程確定存在尚未處理 的數(shù)據(jù)幀,則繼續(xù)按照上文所述的步驟202-205進(jìn)行處理,直至輸入緩沖區(qū)中所有的H. 264 數(shù)據(jù)幀都打包完畢。如果W線程確定不存在尚未處理的數(shù)據(jù)幀,則等待R線程發(fā)送中斷信號。206、服務(wù)器端讀取輸出緩沖區(qū)中的TS包,將讀取的TS包打包轉(zhuǎn)化為RTP包,向客 戶端傳輸形成的RTP包。舉例而言,服務(wù)器端啟動一個線程,用于根據(jù)RTP協(xié)議內(nèi)容將從輸出緩沖區(qū)中讀 取的TS包作為RTP負(fù)載,通過底層的3G網(wǎng)絡(luò)發(fā)送出去,在此將該線程稱為N線程。N線程 在將TS包打包轉(zhuǎn)化為RTP時,需要設(shè)置RTP包的時間戳,該時間戳反映了 RTP數(shù)據(jù)包中第 一個字節(jié)的采樣時間。其中,采樣時鐘必須來源于一個及時的單調(diào)、線性遞增時鐘,以便允 許同步和去除網(wǎng)絡(luò)引起的數(shù)據(jù)包抖動。因此,該采樣時鐘的分辨率必須滿足理想的同步精 度和測量數(shù)據(jù)包到來時的抖動的需要,并且,時鐘頻率依賴于負(fù)載數(shù)據(jù)的格式。在本實(shí)施例 中,時間戳的初始值是隨機(jī)產(chǎn)生的,就像數(shù)據(jù)幀的序號一樣。另外,如果多個連續(xù)的TS包打 包轉(zhuǎn)化成的RTP包的時間戳在邏輯上屬于同時產(chǎn)生的,且該TS包的數(shù)量超過四個,則在此 將4個TS包組成一個RTP包。另外,如果TS包的數(shù)量不足4個時,則將這幾個TS包打包 成一個RTP包。并且,在進(jìn)行RTP打包的同時,將時間戳增量設(shè)置為20*90。207、服務(wù)器端實(shí)時監(jiān)控客戶端發(fā)送的RTCP報文,根據(jù)接收的RTCP報文調(diào)整RTP 包的發(fā)送策略。舉例而言,服務(wù)器端啟動一個線程,用于接收RTCP包,并指示N線程進(jìn)行調(diào)整,在 此將該線程稱為P線程。P線程啟動后,實(shí)時向客戶端發(fā)送RTCP-SR報文和RTCP-APP報文, 客戶端接收RTCP-SR報文和RTCP-APP報文后,實(shí)時向客戶端反饋RTCP-RR報文和RTCP-APP 報文。服務(wù)器端接收客戶端反饋的RTCP-RR報文和RTCP-APP報文后,對接收的報文進(jìn)行解 析,可以獲取往返時間、網(wǎng)絡(luò)延時、丟包率等參數(shù),根據(jù)這些參數(shù)分析當(dāng)前的網(wǎng)絡(luò)狀況,如網(wǎng) 絡(luò)帶寬和運(yùn)行狀態(tài),然后,根據(jù)分析出的網(wǎng)絡(luò)狀況,進(jìn)行發(fā)送相關(guān)參數(shù)的調(diào)整。例如,服務(wù)器 端預(yù)先設(shè)定一個閾值n,對接收的客戶端反饋的RTCP-RR報文和RTCP-APP解析,獲知客戶
9端丟失包的數(shù)目為m,當(dāng)m > n時,則說明網(wǎng)絡(luò)狀況比較差,P線程向N線程發(fā)送中斷請求。 而N線程接收該中斷信號后,以一定的延時時間向3G網(wǎng)絡(luò)發(fā)送RTP包。本發(fā)明實(shí)施例提供的流媒體傳輸方法,通過從H. 264視頻流中依次獲取數(shù)據(jù)幀, 并將獲取的數(shù)據(jù)幀打包轉(zhuǎn)化為PES包,然后,將所述PES包打包轉(zhuǎn)化為TS包,并根據(jù)所述數(shù) 據(jù)幀的幀速率在所述TS包中插入PCR信息和PSI數(shù)據(jù),根據(jù)客戶端發(fā)送的RTCP報文發(fā)送由 TS包打包轉(zhuǎn)化成的RTP包。因此,不需要在將H. 264視頻流轉(zhuǎn)換的TS流時在該TS流中插 入空包,減小了傳輸?shù)臄?shù)據(jù)量,并且使3G環(huán)境下H. 264流媒體的傳輸誤碼率得到保障。從 而提高用戶對H. 264流媒體的收視體驗(yàn)。另外,采用多線程技術(shù)進(jìn)行TS流轉(zhuǎn)換、傳輸?shù)忍?理,因而處理速度更快,能夠更好的實(shí)現(xiàn)性能要求。并且,在Ts流中添加CRC校驗(yàn)碼,針對 單個數(shù)據(jù)包里的包頭信息進(jìn)行校驗(yàn),這樣在數(shù)據(jù)量上比較小,并且在處理過程中簡單,更適 用于3G網(wǎng)絡(luò)傳輸。與上述方法相對應(yīng)地,本發(fā)明實(shí)施例還提供了一種流媒體傳輸裝置,如圖5所示, 包括數(shù)據(jù)獲取單元301,用于從H. 264數(shù)據(jù)流中依次獲取數(shù)據(jù)幀;數(shù)據(jù)打包單元302,用于將所述數(shù)據(jù)獲取單元301獲取的數(shù)據(jù)幀打包轉(zhuǎn)化為PES 包;將所述PES包打包轉(zhuǎn)化為TS包,并根據(jù)所述數(shù)據(jù)幀的幀速率在所述TS包中插入PCR信 息和PSI數(shù)據(jù);數(shù)據(jù)傳送單元303,用于將所述數(shù)據(jù)打包單元302輸出的TS包打包轉(zhuǎn)化為RTP包, 并根據(jù)客戶端發(fā)送的RTCP報文發(fā)送所述RTP包。進(jìn)一步地,所述數(shù)據(jù)打包單元302包括幀速率獲取子單元,用于從所述數(shù)據(jù)幀的數(shù)據(jù)信息中獲取幀速率;同步信息獲取子單元,用于根據(jù)所述幀速率獲取所述數(shù)據(jù)幀的PTS值和DTS值;第一打包子單元,用于根據(jù)所述PTS值和DTS值將所述數(shù)據(jù)幀打包轉(zhuǎn)化為PES包;節(jié)目信息設(shè)置子單元,用于設(shè)置所述H. 264數(shù)據(jù)流對應(yīng)的PSI數(shù)據(jù),所述PSI數(shù)據(jù) 包括PAT表和PMT表和NIT表;時鐘獲取子單元,用于獲取所述數(shù)據(jù)幀的PCR信息;時間間隔獲取子單元,用于根據(jù)所述幀速率獲取插入時間間隔;第二打包子單元,用于分別對所述PES包和所述PSI數(shù)據(jù)進(jìn)行TS打包;數(shù)據(jù)插入子單元,用于根據(jù)所述插入時間間隔在所述PES包打包轉(zhuǎn)化成的TS包中 確定信息插入包;在所述信息插入包中添加獲取的PCR信息;在所述PES包打包轉(zhuǎn)化成的 TS包隊(duì)列中,在所述信息插入包之后插入所述PSI數(shù)據(jù)打包轉(zhuǎn)化成的TS包。進(jìn)一步地,所述數(shù)據(jù)傳送單元303包括第三打包子單元,用于將所述數(shù)據(jù)打包單元輸出的TS包打包轉(zhuǎn)化為RTP包;報文交互子單元,用于與客戶端交互RTCP報文;丟包數(shù)量獲取子單元,用于根據(jù)所述報文交互子單元接收的RTCP報文獲取客戶 端丟失的RTP包的數(shù)量;延時發(fā)送子單元,用于在所述丟失的RTP包的數(shù)量大于閾值時,將當(dāng)前的發(fā)送時 間延時;并根據(jù)延時后的發(fā)送時間向客戶端發(fā)送所述RTP包。在本發(fā)明實(shí)施例中,所述流媒體傳輸裝置的具體工作流程可以參看圖1至圖5所描述的方法,在此不再贅述。本發(fā)明實(shí)施例提供的流媒體傳輸裝置,通過從H. 264數(shù)據(jù)流中依次獲取數(shù)據(jù)幀, 并將獲取的數(shù)據(jù)幀打包轉(zhuǎn)化為PES包,然后,將所述PES包打包轉(zhuǎn)化為TS包,并根據(jù)所述數(shù) 據(jù)幀的幀速率在所述TS包中插入PCR信息和PSI數(shù)據(jù),根據(jù)客戶端發(fā)送的RTCP報文發(fā)送由 TS包打包轉(zhuǎn)化成的RTP包。因此,不需要在將H. 264數(shù)據(jù)流轉(zhuǎn)換的TS流時在該TS流中插 入空包,減小了傳輸?shù)臄?shù)據(jù)量,并且使3G環(huán)境下H. 264流媒體的傳輸誤碼率得到保障。從 而提高用戶對H. 264流媒體的收視體驗(yàn)。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以 通過計(jì)算機(jī)程序來指令相關(guān)的硬件來完成,所述的程序可存儲于一計(jì)算機(jī)可讀取存儲介質(zhì) 中,該程序在執(zhí)行時,可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲介質(zhì)可為磁 碟、光盤、只讀存儲記憶體(Read-Only Memory, ROM)或隨機(jī)存儲記憶體(Random Access Memory, RAM)等。以上所述,僅為本發(fā)明的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,任何 熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵 蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
一種流媒體傳輸方法,其特征在于,包括從H.264數(shù)據(jù)流中依次獲取數(shù)據(jù)幀;將獲取的數(shù)據(jù)幀打包轉(zhuǎn)化為基本數(shù)據(jù)流PES包;將所述PES包打包轉(zhuǎn)化為傳送流TS包,并根據(jù)所述數(shù)據(jù)幀的幀速率在所述TS包中插入節(jié)目時鐘參考PCR信息和節(jié)目特定信息PSI數(shù)據(jù);將所述TS包打包轉(zhuǎn)化為實(shí)時傳輸協(xié)議RTP包;根據(jù)客戶端發(fā)送的實(shí)時控制協(xié)議RTCP報文發(fā)送所述RTP包。
2.根據(jù)權(quán)利要求1所述的流媒體傳輸方法,其特征在于,所述將獲取的數(shù)據(jù)幀打包轉(zhuǎn) 化為PES包包括從所述數(shù)據(jù)幀的數(shù)據(jù)信息中獲取幀速率;根據(jù)所述幀速率獲取所述數(shù)據(jù)幀的顯示時間標(biāo)簽PTS值和解碼時間標(biāo)簽DTS值; 根據(jù)所述PTS值和DTS值將所述數(shù)據(jù)幀打包轉(zhuǎn)化為PES包。
3.根據(jù)權(quán)利要求2所述的流媒體傳輸方法,其特征在于,所述根據(jù)所述幀速率獲取所 述數(shù)據(jù)幀的PTS值和DTS值包括根據(jù)幀速率獲取幀歷時;在所述數(shù)據(jù)幀為I幀,且所述數(shù)據(jù)幀的下一數(shù)據(jù)幀為P幀時,或者,在所述數(shù)據(jù)幀和所 述數(shù)據(jù)幀的下一數(shù)據(jù)幀均為P幀時,根據(jù)所述幀歷時和所述數(shù)據(jù)幀的序號獲取所述數(shù)據(jù)幀 的DTS值,根據(jù)所述幀歷時和所述數(shù)據(jù)幀的下一數(shù)據(jù)幀的序號獲取所述數(shù)據(jù)幀的PTS值;在所述數(shù)據(jù)幀為I幀,且所述數(shù)據(jù)幀的下一數(shù)據(jù)幀為B幀時,或者,在所述數(shù)據(jù)幀為P 幀,且所述數(shù)據(jù)幀的下一數(shù)據(jù)幀不是P幀時,根據(jù)所述幀歷時和所述數(shù)據(jù)幀的序號獲取所 述數(shù)據(jù)幀的DTS值,根據(jù)所述幀歷時,所述數(shù)據(jù)幀的序號,所述數(shù)據(jù)幀的圖像編碼輸入順序 以及所述數(shù)據(jù)幀的上一數(shù)據(jù)幀的圖像編碼輸入順序獲取所述數(shù)據(jù)幀的PTS值;在所述數(shù)據(jù)幀為B幀時,根據(jù)所述幀歷時和所述數(shù)據(jù)幀的序號獲取所述數(shù)據(jù)幀的DTS 值和PTS值。
4.根據(jù)權(quán)利要求2所述的流媒體傳輸方法,其特征在于,所述將所述PES包打包轉(zhuǎn)化 為TS包,并根據(jù)所述數(shù)據(jù)幀的幀速率在所述TS包中插入PCR信息和PSI數(shù)據(jù)包括設(shè)置所述H. 264數(shù)據(jù)流對應(yīng)的PSI數(shù)據(jù),所述PSI數(shù)據(jù)包括節(jié)目映射表PAT表和節(jié)目 映射表PMT表和網(wǎng)絡(luò)信息表NIT表; 獲取所述數(shù)據(jù)幀的PCR信息; 根據(jù)所述幀速率獲取插入時間間隔; 分別對所述PES包和所述PSI數(shù)據(jù)進(jìn)行TS打包;根據(jù)所述插入時間間隔在所述PES包打包轉(zhuǎn)化成的TS包中確定信息插入包; 在所述信息插入包中添加獲取的PCR信息;在所述PES包打包轉(zhuǎn)化成的TS包隊(duì)列中,在所述信息插入包之后插入所述PSI數(shù)據(jù)打 包轉(zhuǎn)化成的TS包。
5.根據(jù)權(quán)利要求4所述的流媒體傳輸方法,其特征在于,所述對所述PES包進(jìn)行TS打 包包括根據(jù)規(guī)定的大小對所述PES包進(jìn)行分割;在分割段不足所述規(guī)定大小時,根據(jù)所述分割段與所述規(guī)定大小的差值,在所述分割2段對應(yīng)的TS包頭中填充OxFF。
6.根據(jù)權(quán)利要求1所述的流媒體傳輸方法,其特征在于,所述將所述TS包打包轉(zhuǎn)化為 RTP包包括在至少四個TS包所對應(yīng)的RTP包時間戳分別同時生成時,將四個TS包打包轉(zhuǎn)化為一 個 RTP。
7.根據(jù)權(quán)利要求1所述的流媒體傳輸方法,其特征在于,所述方法的每個步驟分別通 過一個線程實(shí)現(xiàn),所述線程之間采用中斷請求的方式進(jìn)行通信。
8.一種流媒體傳輸裝置,其特征在于,包括數(shù)據(jù)獲取單元,用于從H. 264數(shù)據(jù)流中依次獲取數(shù)據(jù)幀;數(shù)據(jù)打包單元,用于將所述數(shù)據(jù)獲取單元獲取的數(shù)據(jù)幀打包轉(zhuǎn)化為PES包;將所述PES 包打包轉(zhuǎn)化為TS包,并根據(jù)所述數(shù)據(jù)幀的幀速率在所述TS包中插入PCR信息和PSI數(shù)據(jù); 數(shù)據(jù)傳送單元,用于將所述數(shù)據(jù)打包單元輸出的TS包打包轉(zhuǎn)化為RTP包,并根據(jù)客戶 端發(fā)送的RTCP報文發(fā)送所述RTP包。
9.根據(jù)權(quán)利要求8所述的流媒體傳輸裝置,其特征在于,所述數(shù)據(jù)打包單元包括 幀速率獲取子單元,用于從所述數(shù)據(jù)幀的數(shù)據(jù)信息中獲取幀速率;同步信息獲取子單元,用于根據(jù)所述幀速率獲取所述數(shù)據(jù)幀的PTS值和DTS值; 第一打包子單元,用于根據(jù)所述PTS值和DTS值將所述數(shù)據(jù)幀打包形成PES包; 節(jié)目信息設(shè)置子單元,用于設(shè)置所述H. 264數(shù)據(jù)流對應(yīng)的PSI數(shù)據(jù),所述PSI數(shù)據(jù)包括 PAT表禾口 PMT表禾口 NIT表;時鐘獲取子單元,用于獲取所述數(shù)據(jù)幀的PCR信息; 時間間隔獲取子單元,用于根據(jù)所述幀速率獲取插入時間間隔; 第二打包子單元,用于分別對所述PES包和所述PSI數(shù)據(jù)進(jìn)行TS打包; 數(shù)據(jù)插入子單元,用于根據(jù)所述插入時間間隔在所述PES包打包轉(zhuǎn)化成的TS包中確定 信息插入包;在所述信息插入包中添加獲取的PCR信息;在所述PES包打包轉(zhuǎn)化成的TS包 隊(duì)列中,在所述信息插入包之后插入所述PSI數(shù)據(jù)打包轉(zhuǎn)化成的TS包。
10.根據(jù)權(quán)利要求8所述的流媒體傳輸裝置,其特征在于,所述數(shù)據(jù)傳送單元包括 第三打包子單元,用于將所述數(shù)據(jù)打包單元輸出的TS包打包轉(zhuǎn)化為RTP包;報文交互子單元,用于與客戶端交互RTCP報文;丟包數(shù)量獲取子單元,用于根據(jù)所述報文交互子單元接收的RTCP報文獲取客戶端丟 失的RTP包的數(shù)量;延時發(fā)送子單元,用于在所述丟失的RTP包的數(shù)量大于閾值時,將當(dāng)前的發(fā)送時間延 時;并根據(jù)延時后的發(fā)送時間向客戶端發(fā)送所述RTP包。
全文摘要
本發(fā)明實(shí)施例提供了一種流媒體傳輸方法及裝置,涉及通信技術(shù)領(lǐng)域。為了提高用戶對H.264流媒體的收視體驗(yàn),本發(fā)明提供的技術(shù)方案如下從H.264數(shù)據(jù)流中依次獲取數(shù)據(jù)幀;將獲取的數(shù)據(jù)幀打包轉(zhuǎn)化為PES包;將所述PES包打包轉(zhuǎn)化為TS包,并根據(jù)所述數(shù)據(jù)幀的幀速率在所述TS包中插入PCR信息和PSI數(shù)據(jù);將所述TS包打包轉(zhuǎn)化為RTP包;根據(jù)客戶端發(fā)送的RTCP報文發(fā)送所述RTP包。本發(fā)明適用于3G網(wǎng)絡(luò)的多媒體傳輸。
文檔編號H04L29/06GK101951387SQ20101050615
公開日2011年1月19日 申請日期2010年9月30日 優(yōu)先權(quán)日2010年9月30日
發(fā)明者陳哲 申請人:海信集團(tuán)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1