欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

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

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

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


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