一種嵌入式多媒體播放系統(tǒng)的音視頻同步方法
【專利摘要】本發(fā)明提供一種嵌入式多媒體播放系統(tǒng)的音視頻同步方法,其特征在于:包括如下步驟:步驟1.接收音視頻數(shù)據(jù)流,并解碼,步驟2.解碼后的音視頻幀流入顯示緩沖區(qū)或插隊緩沖區(qū),解碼后的音頻幀進入音頻緩沖區(qū);對于按正常順序解碼后的視頻幀進入顯示緩沖區(qū),對于前一分組解碼晚于后一分組解碼的前一分組視頻幀進入插隊緩沖區(qū);步驟3.同步播放:本發(fā)明具有的優(yōu)點和積極效果是:本發(fā)明應用于軌道交通行業(yè)PIS系統(tǒng)中,完成多媒體信息從操作控制中心(OCC)下發(fā)并傳輸至車上,最終實現(xiàn)音視頻同步展現(xiàn)給乘客的功能,提高乘客乘坐地鐵車輛時的用戶體驗度。
【專利說明】一種嵌入式多媒體播放系統(tǒng)的音視頻同步方法
【技術領域】
[0001]本發(fā)明屬于通信領域,尤其是涉及一種嵌入式多媒體播放系統(tǒng)的音視頻同步方法。
【背景技術】
[0002]由于網(wǎng)絡的不可靠性和傳輸時延等因素,實時數(shù)據(jù)通信過程中經(jīng)常會遇到諸如分組丟失、亂序、抖動、重復等一系列問題。為了能在網(wǎng)絡中有效地傳輸實時數(shù)據(jù),IETF (Internet Engineering Task Force, Internet 工程任務組)開發(fā)了 RTP(Real-timeTransport Protocol,實時傳輸協(xié)議)。RTP為交互式音頻、視頻等具有實時特性的數(shù)據(jù)提供端到端的傳送服務,包括兩個關系密切的協(xié)議RTP和RTCP (Real-timeTransport ControlProtocol,實時傳輸控制協(xié)議)。
[0003]RTP是用于Internet上針對多媒體數(shù)據(jù)流的一種傳輸協(xié)議,但RTP本身并不能為按順序傳送數(shù)據(jù)包提供可靠的傳送機制,也不提供流量控制或擁塞控制,它依靠RTCP提供這些服務。RTCP和RTP —起提供流量控制和擁塞控制服務。服務器利用RTCP信息動態(tài)地改變傳輸速率,甚至改變有效載荷類型。RTP和RTCP配合使用,它們能以有效的反饋和最小的開銷使傳輸效率最佳化,因而特別適合傳送網(wǎng)上的實時數(shù)據(jù)。
[0004]現(xiàn)有技術中,傳統(tǒng)的PIS系統(tǒng)中,多媒體信息的傳輸和發(fā)布是通過模擬或者半數(shù)字化的方式實現(xiàn)的,隨著網(wǎng)絡技術和計算機技術的發(fā)展,現(xiàn)有技術已無法滿足用戶對高清視頻方面的要求。
【發(fā)明內(nèi)容】
[0005]本發(fā)明要解決的問題是提供一種嵌入式多媒體播放系統(tǒng)的音視頻同步方法。
[0006]為解決上述技術問題,本發(fā)明采用的技術方案是:
[0007]一種嵌入式多媒體播放系統(tǒng)的音視頻同步方法,包括如下步驟:
[0008]步驟1.接收音視頻數(shù)據(jù)流,并解碼:
[0009]啟動接收RTP音視頻包的線程,接收RTP包,之后對其進行解析,解析其攜帶的數(shù)據(jù)類型,即RTP音頻包或RTP視頻包,若是RTP音頻包進入音頻接收緩沖區(qū),后發(fā)送到音頻解碼器進行解碼;若是RTP視頻包進入排隊緩沖區(qū),首先對RTP視頻包進行解碼前的排序處理,后發(fā)送到視頻解碼器進行解碼;
[0010]視頻幀剛進入排隊緩沖區(qū)內(nèi)的處理過程:
[0011]RTP包直接進入排隊緩沖區(qū),開始進行排隊解碼,首先根據(jù)RTP視頻包所攜帶的分組號,從后到前先找到該分組其他包的位置,然后在該分組內(nèi),利用自身攜帶的序列號在該組內(nèi)從大到小,開始逐個比較來快速確定自己在該分組的位置;
[0012]RTP視頻幀解碼過程中:
[0013]在第i分組即將解碼完成時,判斷第i+Ι分組是否有完整I幀:
[0014]若是,進行解碼即可;[0015]若否,將該分組移至緩沖區(qū),之后判斷第i+2分組是否有I幀:
[0016]若有進行解碼,即將解碼完成時,判斷是否在播放第i+2分組數(shù)據(jù);若是則丟棄第i+Ι分組,若否則啟動第i+Ι分組解碼;
[0017]若無將第i+2分組移到緩沖區(qū),后判斷是否接收到第i+Ι分組的視頻幀:
[0018]若有則將第i+Ι分組移出緩沖區(qū)進行解碼;
[0019]若無繼續(xù)進行判斷第i+3分組是否有I幀:
[0020]若無丟棄緩沖區(qū)中的第i+Ι分組;
[0021]若有進行解碼,后根據(jù)顯示緩沖區(qū)的反饋判斷是否播放第i+3分組:
[0022]若播放,則丟棄第i+Ι分組和第i+2分組;
[0023]若不播放,則返回判斷第i+Ι分組是否有完整I幀,循環(huán)判斷。
[0024]步驟2.解碼后的音視頻幀流入顯示緩沖區(qū)或插隊緩沖區(qū):
[0025]解碼后的音頻幀進入音頻緩沖區(qū);
[0026]對于按正常順序解碼后的視頻幀進入顯示緩沖區(qū),對于前一分組解碼晚于后一分組解碼的前一分組視頻幀進入插隊緩沖區(qū)。
[0027]步驟3.同步播放:
[0028]音頻緩沖區(qū)內(nèi)的音頻幀進行連續(xù)播放;
[0029]顯示緩沖區(qū)內(nèi)的視頻幀進行順序播放,插隊緩沖區(qū)的視頻幀進行插隊播發(fā);
[0030]其中視頻幀的播放時間是利用NTP和RTP時間戳計算出當前視頻幀對應音頻幀播放的時間而得到的,判斷當前緩沖區(qū)的最前面一幀的時間標記與Time土 Λ關系,其中Time土 Λ表示允許視頻巾貞進行播放的時間范圍:
[0031]若當前緩沖區(qū)的最前面一幀的時間標記在Time土 Λ范圍內(nèi),則正常播放;
[0032]若當前緩沖區(qū)的最前面一幀的時間標記小于Time- Δ,(幀來晚了)丟棄該視頻幀;
[0033]若當前緩沖區(qū)的最前面一幀的時間標記大于Time+ Δ,(幀來早了)重復播放一次前一幀,之后再次比較,進行判斷:
[0034](I)若時間標記在Time土 Λ范圍內(nèi),則正常播放;
[0035](2)若仍大于則轉(zhuǎn)到抖動緩沖區(qū),向前尋找下幀,直到前一幀總共重播3次,抖動緩沖區(qū)已有3巾貞,最后一次比較;若時間標記在Time土 Λ范圍內(nèi),貝U正常播放;
[0036]否則切換到以視頻為標準,一次性調(diào)整音頻,之后重新切換回到以音頻為標準。
[0037]步驟4.顯示緩沖區(qū)將信息反饋給視頻解碼器。
[0038]進一步的,在步驟I中,對于剛收到的RTP包若是這個分組的第一個包,首先判斷自己的幀類型:
[0039]若不是I幀,直接根據(jù)分組號的大小確定自己的分組位置,在比較過程中,發(fā)現(xiàn)沒有和自己一樣的分組號,則移到第一個開辟新的排隊塊區(qū);
[0040]若是I巾貞,找到自己分組的塊排隊區(qū),進行是否有I幀判斷,若該塊區(qū)有已有I幀,則這個包自動丟棄;否則是一般情況,正常處理即可。
[0041]進一步的,在步驟2中,顯示緩沖區(qū)和插隊緩沖區(qū)的初始值大小根據(jù)視頻壓縮格式進行動態(tài)調(diào)整。
[0042]進一步的,在步驟3中,采取對接收到的音頻幀采用基于播放時限的同步方法,用接收端緩存的音頻幀來補償網(wǎng)絡的時延抖動,通過顯示緩沖區(qū)來實現(xiàn)語音回放。
[0043]本發(fā)明具有的優(yōu)點和積極效果是:本發(fā)明應用于軌道交通行業(yè)PIS系統(tǒng)中,完成多媒體信息從操作控制中心(OCC)下發(fā)并傳輸至車上,最終實現(xiàn)音視頻同步展現(xiàn)給乘客的功能,提高乘客乘坐地鐵車輛時的用戶體驗度。
【專利附圖】
【附圖說明】
[0044]圖1是本發(fā)明的結構示意圖;
[0045]圖2是本發(fā)明的視頻幀剛進入排隊緩沖區(qū)的處理流程圖;
[0046]圖3是本發(fā)明的視頻幀解碼處理流程圖;
[0047]圖4是本發(fā)明的顯示緩沖區(qū)內(nèi)的視頻幀處理流程圖。
【具體實施方式】
[0048]如圖1至4所示:
[0049]本發(fā)明一種嵌入式多媒體播放系統(tǒng)的音視頻同步方法,包括如下步驟:
[0050]步驟1.接收音視頻數(shù)據(jù)流,排序后解碼:
[0051]啟動接收RTP音視頻包的線程,接收RTP包,之后對其進行解析,解析其攜帶的數(shù)據(jù)類型,即RTP音頻包或RTP視頻包,若是RTP音頻包進入音頻接收緩沖區(qū),后發(fā)送到音頻解碼器進行解碼;若是RTP視頻包進入排隊緩沖區(qū),首先對RTP視頻包進行解碼前的排序處理,后發(fā)送到視頻解碼器進行解碼;
[0052]如圖2所示,為視頻幀剛進去排隊緩沖區(qū)內(nèi)的處理過程:
[0053]RTP視頻包直接進入排隊緩沖區(qū),首先根據(jù)RTP視頻包所攜帶的分組號,進行判斷,
[0054]若沒有和自己一樣的分組號則開辟一個新組塊;
[0055]若有從后到前先找到該分組其他包的位置,然后在該分組內(nèi),利用自身攜帶的序列號在該組內(nèi)從大到小,開始逐個比較來快速確定自己在該分組的位置;之后在判斷是否為I幀,否的話,進行組內(nèi)比較確定組內(nèi)位置;
[0056]是為I幀的話,則判斷該塊區(qū)是否已有I幀,是的話則丟棄此幀,若不是則進行組內(nèi)比較確定組內(nèi)位置。
[0057]如圖3所示,RTP視頻幀解碼過程中:
[0058]在第i分組即將解碼完成時,判斷第i+Ι分組是否有完整I幀:
[0059]若是,進行解碼即可;
[0060]若否,將該分組移至緩沖區(qū),之后判斷第i+2分組是否有I幀:
[0061]若有進行解碼,即將解碼完成時,判斷是否在播放第i+2分組數(shù)據(jù);若是則丟棄第i+Ι分組,若否則啟動第i+Ι分組解碼;
[0062]若無將第i+2分組移到緩沖區(qū),后判斷是否接收到第i+Ι分組的視頻幀:
[0063]若有則將第i+Ι分組移出緩沖區(qū)進行解碼;
[0064]若無繼續(xù)進行判斷第i+3分組是否有I幀:
[0065]若無丟棄緩沖區(qū)中的第i+Ι分組;
[0066]若有進行解碼,后根據(jù)顯示緩沖區(qū)的反饋判斷是否播放第i+3分組:[0067]若播放,則丟棄第i+Ι分組和第i+2分組;
[0068]若不播放,則返回判斷第i+Ι分組是否有完整I幀,循環(huán)判斷。
[0069]步驟2.解碼后的音視頻幀流入顯示緩沖區(qū)或插隊緩沖區(qū):
[0070]解碼后的音頻幀進入顯示緩沖區(qū);
[0071]對于按正常順序解碼后的視頻幀進入顯示緩沖區(qū),對于前一分組解碼晚于后一分組解碼的前一分組視頻幀進入插隊緩沖區(qū);
[0072]步驟3.同步播放:
[0073]顯示緩沖區(qū)內(nèi)的音頻幀進行連續(xù)播放;
[0074]顯示緩沖區(qū)內(nèi)的視頻幀進行順序播放,插隊緩沖區(qū)的視頻幀進行插隊播發(fā);
[0075]其中視頻幀的播放時間是利用NTP和RTP時間戳計算出當前視頻幀對應音頻幀播放的時間而得到的,判斷當前緩沖區(qū)的最前面一幀的時間標記與Time土 Λ關系,其中Time土 Λ表示允許視頻巾貞進行播放的時間范圍,如圖4所示:
[0076]若當前緩沖區(qū)的最前面一幀的時間標記在Time土 Λ范圍內(nèi),則正常播放;
[0077]若當前緩沖區(qū)的最前面一幀的時間標記小于Time- Δ,(幀來晚了)丟棄該視頻幀;
[0078]若當前緩沖區(qū)的最前面一幀的時間標記大于Time+ Δ,(幀來早了)重復播放一次前一幀,之后再次比較,進行判斷:
[0079](I)若時間標記在Time土 Λ范圍內(nèi),則正常播放;
[0080](2)若仍大于則轉(zhuǎn)到抖動緩沖區(qū),向前尋找下幀,直到前一幀總共重播3次,抖動緩沖區(qū)已有3巾貞,最后一次比較;若時間標記在Time土 Λ范圍內(nèi),貝U正常播放;
[0081]否則切換到以視頻為標準,一次性調(diào)整音頻,之后重新切換回到以音頻為標準;
[0082]步驟4.顯示緩沖區(qū)將信息反饋給視頻解碼器。
[0083]在步驟I中,對于一些特殊情況做以下處理:
[0084]對于剛到的RTP包若是這個分組的第一個包,首先判斷自己的幀類型:
[0085]若不是I幀,直接根據(jù)分組號的大小確定自己的分組位置,在比較過程中,發(fā)現(xiàn)沒有和自己一樣的分組號,則移到第一個開辟新的排隊塊區(qū);
[0086]若是I巾貞,找到自己分組的塊排隊區(qū),進行是否有I幀判斷,若該塊區(qū)有已有I幀,則這個包自動丟棄;否則是一般情況,正常處理即可。
[0087]在步驟2中,顯示緩沖區(qū)和插隊緩沖區(qū)初始值大小根據(jù)視頻編碼格式動態(tài)可調(diào),顯示緩沖區(qū)為一個正常范圍大小,即可以存放12幀視頻幀大小的顯示隊列,上限為15幀,下限為3幀,當小于3或大于15幀時,表示下溢或上溢;
[0088]由于顯示緩沖區(qū)更多地要考慮到音視頻的同步問題,對音頻進行連續(xù)播放,通過對視頻處理來達到與音頻數(shù)據(jù)的同步;
[0089]具體是采取對接收到的語音媒體采用基于播放時限的同步方法,用接收端緩存的語音媒體流來補償網(wǎng)絡的時延抖動,通過顯示緩沖區(qū)的設計來實現(xiàn)回放。
[0090]以上對本發(fā)明的一個實施例進行了詳細說明,但所述內(nèi)容僅為本發(fā)明的較佳實施例,不能被認為用于限定本發(fā)明的實施范圍。凡依本發(fā)明申請范圍所作的均等變化與改進等,均應仍歸屬于本發(fā)明的專利涵蓋范圍之內(nèi)。
【權利要求】
1.一種嵌入式多媒體播放系統(tǒng)的音視頻同步方法,其特征在于:包括如下步驟: 步驟1.接收音視頻數(shù)據(jù)流,并解碼: 啟動接收RTP音視頻包的線程,接收RTP包,之后對其進行解析,解析其攜帶的數(shù)據(jù)類型,即RTP音頻包或RTP視頻包,若是RTP音頻包進入音頻接收緩沖區(qū),后發(fā)送到音頻解碼器進行解碼;若是RTP視頻包進入排隊緩沖區(qū),首先對RTP視頻包進行解碼前的排序處理,后發(fā)送到視頻解碼器進行解碼; 視頻幀剛進入排隊緩沖區(qū)內(nèi)的處理過程: RTP包直接進入排隊解碼區(qū),開始進行排隊解碼,首先根據(jù)RTP視頻包所攜帶的分組號,從后到前先找到該分組其他包的位置,然后在該分組內(nèi),利用自身攜帶的序列號在該組內(nèi)從大到小,開始逐個比較來快速確定自己在該分組的位置; 在RTP視頻幀解碼過程中: 在第i分組即將解碼完成時,判斷第i+Ι分組是否有完整I幀: 若是,進行解碼即可; 若否,將該分組移至緩沖區(qū),之后判斷第i+2分組是否有I幀: 若有進行解碼,即將解碼完成時,判斷是否在播放第i+2分組數(shù)據(jù);若是則丟棄第i+1分組,若否則啟動第i+Ι分組解碼; 若無將第i+2分組移 到緩沖區(qū),后判斷是否接收到第i+Ι分組的視頻幀: 若有則將第i+Ι分組移出緩沖區(qū)進行解碼; 若無繼續(xù)進行判斷第i+3分組是否有I幀: 若無丟棄緩沖區(qū)中的第i+Ι分組; 若有進行解碼,后根據(jù)顯示緩沖區(qū)的反饋判斷是否播放第i+3分組: 若播放,則丟棄第i+Ι分組和第i+2分組; 若不播放,則返回判斷第i+Ι分組是否有完整I幀,循環(huán)判斷; 步驟2.解碼后的音視頻幀流入顯示緩沖區(qū)或插隊緩沖區(qū): 解碼后的音頻幀進入音頻緩沖區(qū); 對于按正常順序解碼后的視頻幀進入顯示緩沖區(qū),對于前一分組解碼晚于后一分組解碼的前一分組視頻幀進入插隊緩沖區(qū); 步驟3.同步播放: 音頻緩沖區(qū)內(nèi)的音頻幀進行連續(xù)播放; 顯示緩沖區(qū)內(nèi)的視頻幀進行順序播放,插隊緩沖區(qū)的視頻幀進行插隊播發(fā); 其中視頻幀的播放時間是利用NTP和RTP時間戳計算出當前視頻幀對應音頻幀播放的時間而得到的,判斷當前緩沖區(qū)的最前面一幀的時間標記與Time土 Λ關系,其中Time土 Λ表不允許視頻幀進行播放的時間范圍: 若當前緩沖區(qū)的最前面一幀的時間標記在Time土 Λ范圍內(nèi),則正常播放; 若當前緩沖區(qū)的最前面一幀的時間標記小于Time- Λ,則丟棄該視頻幀; 若當前緩沖區(qū)的最前面一幀的時間標記大于Time+ Λ,則重復播放一次前一幀,之后再次比較,進行判斷: (1)若時間標記在Time±厶范圍內(nèi),則正常播放; (2)若仍大于則轉(zhuǎn)到抖動緩沖區(qū),向前尋找下幀,直到前一幀總共重播3次,抖動緩沖區(qū)已有3幀,最后一次比較;若時間標記在Time土 Λ范圍內(nèi),貝U正常播放; 否則切換到以視頻為標準,一次性調(diào)整音頻,之后重新切換回到以音頻為標準; 步驟4.顯示緩沖區(qū)將信息反饋給視頻解碼器。
2.根據(jù)權利要求1所述的嵌入式多媒體播放系統(tǒng)的音視頻同步方法,其特征在于:在步驟I中,對于剛到的RTP包若是這個分組的第一個包,首先判斷自己的幀類型: 若不是I幀,直接根據(jù)分組號的大小確定自己的分組位置,在比較過程中,發(fā)現(xiàn)沒有和自己一樣的分組號,則移到第一個開辟新的排隊塊區(qū); 若是I幀,找到自己分組的塊排隊區(qū),進行是否有I幀判斷,若該塊區(qū)有已有I幀,則這個包自動丟棄;否則是一般情況,正常處理即可。
3.根據(jù)權利要求1所述的嵌入式多媒體播放系統(tǒng)的音視頻同步方法,其特征在于:在步驟2中,顯示緩沖區(qū)和插隊緩沖區(qū)的初始值大小根據(jù)視頻壓縮格式進行動態(tài)可調(diào)。
4.根據(jù)權利要求1所述的嵌入式多媒體播放系統(tǒng)的音視頻同步方法,其特征在于:在步驟3中,采取對接收到的音頻幀采用基于播放時限的同步方法,用接收端緩存的音頻幀來補償網(wǎng)絡的時延抖動 ,通過顯示緩沖區(qū)來實現(xiàn)回放。
【文檔編號】H04N21/6437GK103607664SQ201310603239
【公開日】2014年2月26日 申請日期:2013年11月22日 優(yōu)先權日:2013年11月22日
【發(fā)明者】張濤 申請人:天津市北海通信技術有限公司