專利名稱:基于mpeg-2碼流的非線性編輯系統編輯方法
技術領域:
本發明涉及一種基于MPEG-2碼流非線性編輯系統的編輯方法,尤其是一種精確到各數據流層的編輯方法。
MPEG-2的碼流層次從組成關系分為像素、幀、GOP、PES、TS、PS。在非線性編輯系統中,根據不同的編輯精確度和編輯速度的要求的不同,需要針對于不同碼流層次的對象進行編輯。MPEG-2的視頻數據流的結構如
圖1所示,視、音頻的基本數據流按照等時間間隔打包成打包數據流(PES)數據流包,每個包均要加上相應的PES包頭信息,同時加上顯示時間標簽(PTS)和解碼時間標簽(DTS)。基本數據流是指將視音頻直接壓縮編碼后形成的碼流,視頻碼流將按照標準中的高層比特流語法結構形成一個GOP,碼流的前面要加上頭信息,同樣對于音頻碼流也要加上頭信息。GOP的結構可如圖2所示。GOP中包括幀為I幀、B幀、P幀。
目前數據流層的編輯方法可以精確到幀,也可以精確到GOP。其中精確到幀的編輯方法一般為全解碼方式,也就是將原碼碼流全解碼后,在解碼碼流上進行編輯。這種方法對解碼后的數據重新編碼不可避免地影響圖像的質量,而且實時性、實用性較差,還需要大量的存儲設備。同時這種方式必然帶來承重的解碼負擔,編輯下率較低。而現有的技術中GOP的編輯也只是針對多個整個GOP的序列進行編輯,通常是將一個個完整的GOP在碼流中搬移、插入,并沒有深入到GOP本身剖析的編輯方式。再有,無論是針對視頻還是音頻的編輯,目前還沒有基于PES流層的編輯方法。
另外,在對MPEG-2流進行非線性編輯的過程中,最基本的一種操作就是對素材的切和連,即將兩段素材根據某個時間切開,去掉此前或此后的內容,然后把這兩段素材合并起來,形成一段新的素材。然而,MPEG流是運動圖像及其伴音有機結合的一個整體,僅僅將某個圖像片段進行剪切或連接是沒有太大意義的,只有將相應的伴音一起處理才有實際的意義。為了保持編輯后的視音頻的同步性,音頻編輯方法的選擇是非常重要的。但是現有技術中,還沒有基于PES流層的視音頻的同步性編輯方法。
本發明的目的在于提供一種基于MPEG-2碼流非線性編輯系統針對幀的編輯方法,通過建立幀索引文件的方法,針對幀進行不需要編解碼近似精確到幀的編輯方法,以及對與某類型的幀只需要部分解碼的精確到幀編輯方法。
本發明的另一目的在于提供一種基于MPEG-2碼流非線性編輯系統精確到GOP的編輯方法,利用建立GOP索引文件,直接針對GOP進行編輯,提高圖象質量和編輯效率。
本發明的又一目的在于提供一種基于MPEG-2碼流非線性編輯系統視頻和音頻同步PES流層的編輯方法,根據視頻和音頻索引文件,能夠進行基于PES流層完成高效的視頻編輯和音頻視頻同步的編輯方法。
本發明的目的是這樣實現的一種基于MPEG-2碼流非線性編輯系統針對幀的編輯方法,它包括以下步驟1、定位編輯點,確定編輯點所對應幀的位置;2、將該幀的剪切點處前端數據的最后一幀圖像標記為FLast,剪切點處后端數據的第一幀標記為FFirst;3、由解碼部分或者索引文件確定編輯點在視音頻基本數據流中的位置,并確定幀的類型;4、根據編輯方法,進行針對幀的編輯處理;5、更改相關GOP的頭信息形成一個新的合法GOP。
所述的編輯方法包括精確到幀的編輯方法以及幀的編輯方法。
所述的針對幀的編輯處理包括切除標記前端碼流、保留標記后端的碼流或切除后端的碼流、保留前端的碼流或切除中間、保留兩端的碼流或切除兩端的碼流、保留中間的碼流方法。
所述的索引文件內容包括幀的幀號、幀的序列頭起始位置、幀所在初GOP的GOP頭起始位置、幀的圖象頭起始位置、幀的編碼格式(I、B、P)、標志位。
所述的標志位內容包括幀的剪除、被重新編碼或保持不變的標志。
所述的切除標記前端碼流、保留標記后端的碼流并且精確到幀的編輯方法包括1、如果FFirst為I幀,沒有幀需要重編,直接去掉FFirst前所有的幀,然后修改FFirst所在GOP中的相關信息,形成新的合法GOP;2、如果FFirst為P幀,將FFirst解碼后重新編碼為I幀,然后去掉FFirst前所有的幀,修改FFirst重編碼后所在GOP中的相關信息,形成新的合法GOP;3、如果FFirst為B幀,那么需要將FFirst所在GOP解碼至FFirst幀,然后將FFirst幀編碼成I幀,修改FFirst重編碼后所在GOP中的相關信息,形成新的合法GO。
所述的切除后端的碼流、保留前端的碼流并且精確到幀的編輯方法包括1、如果FLast為I幀,沒有幀需要重編,直接去掉FLast后所有的幀,然后修改FLast所在GOP中的相關信息,形成新的合法GOP;2、如果FLast為P幀,沒有幀需要重編,直接去掉FLast后所有的幀,然后修改FLast所在GOP中的相關信息,形成新的合法GOP;3、如果FLast為B幀,那么需要將FLast所在GOP解碼至FLast幀,然后將FLast幀編碼成P幀,修改FLast重編碼后所在GOP中的相關信息,形成新的合法GOP。
所述的切除標記前端碼流、保留標記后端的碼流并且近似精確到幀的編輯方法包括1、如果FFirst為I幀,不需要編解碼操作,直接去掉FFirst前所有的幀,然后修改FFirst所在GOP中的相關信息,形成新的合法GOP;2、如果FFirst為P幀,將FFirst幀解碼后重新編碼為I幀,然后去掉FFirst前所有的幀,修改FFirst重編碼后所在GOP中的相關信息,形成新的合法GOP;3、如果FFirst為B幀,需要定位FFirst前后(本GOP內)最近的I幀或者P幀(一般情況下,隔1至2幀即為I幀或者P幀),如果最近幀為I幀,去掉I幀前面所有的幀,修改FFirst所在GOP的頭信息,形成新的合法GOP。如果最近幀為P幀,則需將此P幀解碼后重編成I幀,去掉重編成I幀前數據,修改新的GOP頭信息,形成新的合法GOP。
所述的切除后端的碼流、保留前端的碼流并且近似精確到幀的編輯方法包括1、如果FLast為I幀,不需要編、解碼操作,直接去掉FLast后所有的幀,然后修改FLast所在GOP中的相關信息,形成新的合法GOP;2、如果FLast為P幀,不需要編、解碼操作,直接去掉FLast后所有的幀,然后修改FLast所在GOP中的相關信息,形成新的合法GOP;3、如果FLast為B幀,需要定位FLast前后(本GOP內)最近的I幀或者P幀(一般情況下,隔1至2幀即為I幀或者P幀),如果最近幀為I幀,直接去掉此I幀后面所有數據,修改GOP的頭信息,形成新的合法GOP。如果最近幀為P幀,只需去掉此P幀后面所的數據,修改新的GOP頭信息,形成新的合法GOP。
一種基于MPEG-2碼流非線性編輯系統精確到GOP的編輯方法,它包括如下步驟1、建立GOP索引文件;2、依據索引文件,確定GOP在碼流中的位置,3、判斷出編輯點幀所在GOP中的位置;4、根據編輯點前后幀的多少確定舍棄或保留該GOP的前段或后段;5、修改相臨GOP頭結構中相應字段。
若切除編輯點前段的碼流后段的碼流并保留后段碼流,則修改該GOP后面的第一個GOP的頭結構中相應字段;若切除編輯點后段碼流并保留前段碼流,修改該GOP前面的第一個GOP的頭結構中相應字段。
所述的GOP索引文件包括GOP在碼流中的序號、GOP在碼流中的視頻序列的序列頭起始位置、GOP在碼流中GOP頭起始位置、標志位。
所述的標志位內容包括剪除或保持不變。
一種基于MPEG-2碼流非線性編輯系統視頻PES流層的編輯方法,它的步驟包括1、建立索引文件;2、根據索引文件確定素材1、2的前段PES包和素材1、2的后段PES包的位置;3、對于前端PES包,計算PES包長;修改被破壞PES頭信息的PES包長度;4、對于后端PES包,計算PES包長;計算PTS和DTS的值;修改被破壞的PES頭信息的PES包長度;修改保留素材中所有PTS和DTS的值。
所述的索引文件包括PES在碼流中的序號、PES在碼流中的視頻序列的序列頭起始位置、PES在碼流中PES頭起始位置、標志位。
所述的標志位內容包括剪除或保持不變。
所述的DTS的值的修改使用如下公式DTS2(0)=DTS1(end)+C1×N1DTS2(1)=DTS2(0)+C2×N2DTS2(n)=DTS2(n-1)+[DTS2(1)-DTS2(0)]其中C1為素材1每幀解碼所用時間(常數);N1為素材1最后一個PES包所含幀數;C2為素材2每幀解碼所用時間(常數);N2為素材2第一個PES包所含幀數。
所述的PTS的值的修改使用如下公式
PTS2(0)=PTS1(end)+C1×N1)PTS2(1)=PTS2(0)+C2×N2PTS2(n)=PTS2(n-1)+[PTS2(1)-PTS2(0)]一種基于MPEG-2碼流非線性編輯系統音視頻同步PES流層的編輯方法,給出兩段PES流PES1和PES2,它步驟包括建立索引文件;根據索引文件確定PES的位置,并做標志;自視頻PES得出相應的要求剪切的視頻PTS值即前后兩段PES流剪切點的視頻PTS值(PTS_V1和PTS_V2),保留流PES1中前段PES1流剪切點的視頻PTS值PTS_V1之前和后段PES2流剪切點的視頻PTS值(PTS_V2)之后的片斷,尋找每個PES流中與給出的視頻幀編輯處PTS最接近的音頻幀,合并這兩段音頻PES流,鏈接形成一個新的音頻PES,使得它仍能保持與視頻編輯后的PES流的同步。
所述的索引文件包括視頻索引文件和音頻索引文件。
所述的視頻索引文件包括PES在碼流中的序號、PES在碼流中的視頻序列的序列頭起始位置、PES在碼流中PES頭起始位置、標志位。
所述的音頻索引文件包括PES在碼流中對應的編碼層、PES碼流的采樣頻率、PES在碼流中的音頻序列頭起始位置、PES在碼流中PES頭起始位置、標志位。
所述的尋找最接近的音頻幀的步驟包括,先根據符合公式PTS P1≤PTS V1<PTS P2的條件,得到PTS所在的組的第一個音頻幀所在,依據ΔPTSA=f*sample_countsample_frequency]]>計算該幀的PTS增量,最終使PTS_A+ΔPTSA≥PTS_V1,確定音頻PES2的PTS_A3和PTS_A4;其中PTS_V1,PTS_V2分別為前后兩段PES流剪切點的視頻PTS值;PTS_P1,PTS_P3分別為前后兩段PES流中與剪切點最接近組(Packet)PTS值;PTS_P2,PTS_P4分別為前后兩段PES流中與剪切點最接近組的下一組PTS值;
PTS_A1,PTS_A3分別為前后兩段PES流中與剪切點最接近幀的PTS值;PTS_A2,PTS_A4分別為前后兩段PES流中與剪切點最接近幀的下一幀PTS值。
所述的鏈接方式包括全部保留編輯處兩音頻流兩幀。
所述的鏈接方式包括保留音頻流1的一幀,全棄音頻流2的一幀。
所述的鏈接方式包括舍棄音頻流1的一幀,保留音頻流2的一幀。
所述的鏈接方式包括全部舍棄編輯處兩音頻流兩幀。
所述的修改相關參數包括保留最后一個PES_組或保留第一個PES組或后續PES_組的處理。
所述的保留最后一個PES_組包括通過音頻幀的語法字(0xFFF)定位到序列1的音頻裁減點,去掉序列中音頻裁減點以后的音頻數據;如果該裁減點位于本packet的第一幀前,將該packet與流中上一個組合并;修改組頭中的長度域,使之等于本Packet中剩下的數據長度;計算ESCR1和音頻ES速率R1ESESCR1=ESCR_base*300+ESCR_ext,其中R1ES=ES_rate*50。
所述的保留第一個PES組包括通過音頻幀的語法字(0xFFF)定位到序列2的音頻裁減點,去掉序列2中音頻裁減點之前的音頻數據;若該剪裁點位于該packet中最后一幀則將它合并到下一個組中,否則將剩下的數據打成一個新的組,修改packet_length,PTS,ESCR字段,如果這些字段中有些不存在,則添加該字段,并設置相應的標志;ESCR的修改為ESCRNew=ESCR1+L1×f÷R1ESf=27MHz其中L1ESCR字段到本ESCR字段的字節數。
所述的后續PES_組的處理包括記錄下PTS和ESCR的變化量(相對于原來的數據)ΔPTS=PTSNew-PTSOldΔESCR=ESCRNew-ESCROld對于以后的幀將都用ΔPTS和ΔESCR來校正相應的值,直至結束。
所述的步驟包括闊可在后段素材的修正PTS上加上一個混疊時間估值。
根據上述技術方案分析可知,本發明的方法就精確到幀的編輯方法而言,它降低了編、解碼的強度,而且編輯精度高。其中精確到幀的編輯方法沒有引入誤差,也就是說沒有全棄或者多保留幀;近似精確到幀由于有幀的舍棄或者保留,所以引入了誤差,但誤差最多為兩幀的內容,可編輯的效率卻得以大大的提高。對于GOP來說,精確到GOP方法簡單、快捷,能夠對GOP本身進行編輯。本發明另一主要的優點在于精確到PES的編輯方法,它不僅能夠直接在PES流層上操作,還可針對要求盡量不改變碼流結構的ES流層編輯,并且實現了基于PES流層的視頻和音頻的同步編輯。
下面結合附圖和具體實施方案對本發明做進一步的詳細說明。
圖1為MPEG-2碼流結構示意圖;圖2為GOP幀序列結構示意圖;圖3為本發明針對幀編輯方法的結構示意圖;圖4為本發明的視頻PES流層編輯方法參數設置圖;圖5為本發明音頻PES流編輯方法參數設置圖;圖6為本發明的音頻編輯后四中鏈接方式狀態的示意圖。
參見圖3,本發明為針對幀進行編輯處理示意圖。將剪切點處前端數據的最后一幀圖像標記為FLast,剪切點處后端數據的第一幀標記為FFirst。剪切方式可分為切除前端保留后端和切除后端保留前端兩種,對于切除中間保留兩端和切除兩端保留中間方法很容易從前兩種方法推導出來。
本發明精確到幀的編輯方法步驟為(1)定位編輯點,確定編輯點所對應幀的位置;(2)由解碼部分或者索引文件確定編輯點在視音頻基本數據流中的位置,并確定幀的類型;(3)由解碼部分快速定位置本GOP的I幀并根據需要解碼出圖像數據;(4)由編碼部分進行編碼處理,將編輯點后面的第一幀變換成I幀或者P幀,形成一個完整的GOP。(5)更改相關GOP的頭信息形成一個新的合法GOP。
利用該方法,當需要切除剪切點前端數據,即要求保留FFirst幀及后端數據時a、如果FFirst為I幀,沒有幀需要重編,直接去掉FFirst前所有的幀,然后修改FFirst所在GOP中的相關信息,形成新的合法GOP。
b、如果FFirst為P幀,將FFirst解碼后重新編碼為I幀,然后去掉FFirst前所有的幀,修改FFirst重編碼后所在GOP中的相關信息,形成新的合法GOP。
C、如果FFirst為B幀,那么需要將FFirst所在GOP解碼至FFirst幀,然后將FFirst幀編碼成I幀,修改FFirst重編碼后所在GOP中的相關信息,形成新的合法GOP。
需要切除剪切點后端數據方法,即要求保留FLast幀及前面數據時a、如果FLast為I幀,沒有幀需要重編,直接去掉FLast后所有的幀,然后修改FLast所在GOP中的相關信息,形成新的合法GOP。
b、如果FLast為P幀,沒有幀需要重編,直接去掉FLast后所有的幀,然后修改FLast所在GOP中的相關信息,形成新的合法GOP。
c、如果FLast為B幀,那么需要將FLast所在GOP解碼至FLast幀,然后將FLast幀編碼成P幀,修改FLast重編碼后所在GOP中的相關信息,形成新的合法GOP。
關于切除中間保留兩端和切除兩端保留中間方法很容易從前兩種方法推導出來。
本發明近似精確到幀的編輯方法(1)定位編輯點,確定編輯點所對應幀的位置;(2)由索引文件確定編輯點在視音頻基本數據流中的位置,并確定幀的類型;(3)根據編輯方法,進行近似精確到幀的編輯處理(5)更改相關GOP的頭信息形成一個新的合法GOP。近似精確到幀的編輯方法同樣需要定位到幀,但不進行編解碼操做,同時保證編輯誤差盡可能地小(最大誤差為兩幀),而且大大提高了編輯效率,利用本方法,當需要切除剪切點前端數據方法,即要求保留FFirst幀及后端數據時a、如果FFirst為I幀,不需要編解碼操作,直接去掉FFirst前所有的幀,然后修改FFirst所在GOP中的相關信息,形成新的合法GOP。
B、如果FFirst為P幀,將FFirst幀解碼后重新編碼為I幀,然后去掉FFirst前所有的幀,修改FFirst重編碼后所在GOP中的相關信息,形成新的合法GOP。
C、如果FFirst為B幀,需要定位FFirst前后(本GOP內)最近的I幀或者P幀(一般情況下,隔1至2幀即為I幀或者P幀),如果最近幀為I幀,去掉I幀前面所有的幀,修改FFirst所在GOP的頭信息,形成新的合法GOP。如果最近幀為P幀,則需將此P幀解碼后重編成I幀,去掉重編成I幀前數據,修改新的GOP頭信息,形成新的合法GOP。
當切除剪切點后端數據方法,即要求保留FLast幀及前面數據時a、如果FLast為I幀,不需要編、解碼操作,直接去掉FLast后所有的幀,然后修改FLast所在GOP中的相關信息,形成新的合法GOP。
B、如果FLast為P幀,不需要編、解碼操作,直接去掉FLast后所有的幀,然后修改FLast所在GOP中的相關信息,形成新的合法GOP。
C、如果FLast為B幀,需要定位FLast前后(本GOP內)最近的I幀或者P幀(一般情況下,隔1至2幀即為I幀或者P幀),如果最近幀為I幀,直接去掉此I幀后面所有數據,修改GOP的頭信息,形成新的合法GOP。如果最近幀為P幀,只需去掉此P幀后面所的數據,修改新的GOP頭信息,形成新的合法GOP。
關于切除中間保留兩端和切除兩端保留中間方法很容易從前兩種方法推導出來。
本發明一種基于MPEG-2碼流非線性編輯系統精確到GOP的編輯方法a、建立GOP索引文件;索引文件包括GOP在碼流中的序號、GOP在碼流中的視頻序列的序列頭起始位置、GOP在碼流中GOP頭起始位置、標志位。標志位內容包括剪除或保持不變。b、依據索引文件,確定GOP在碼流中的位置,c、判斷出編輯點幀所在GOP中的位置;d、根據編輯點前后幀的多少確定舍棄或保留該GOP的前段或后段;e、修改相臨GOP頭結構中相應字段。
若切除編輯點前段的碼流后段的碼流并保留后段碼流,則修改該GOP后面的第一個GOP的頭結構中相應字段;若切除編輯點后段碼流并保留前段碼流,修改該GOP前面的第一個GOP的頭結構中相應字段。GOP索引文件包括GOP在碼流中的序號、GOP在碼流中的視頻序列的序列頭起始位置、GOP在碼流中GOP頭起始位置、標志位。標志位內容包括剪除或保持不變。
本發明精確到GOP的視頻編輯方法不需要任何編、解碼操做。只要判斷出編輯點幀所在GOP中的位置,然后根據編輯點前后幀的多少確定舍棄或保留該GOP。
對于非線性編輯方法來講,具體操作的是基本數據流,將改變基本數據流部分語法結構的參數。從編輯點來說,對于前段素材,如果改變的基本數據流的部分語法參數將改變PS、TS流層的語法參數,只對PES包長度的值要改變。對于鏈接點后面素材,從上面的語法結構可以看出,需要改變的有PTS和DTS值和PES包長度的值。對于PES包長度可以通過基本數據的操做獲得。PTS和DTS的值可根據前段素材的最后一個值確定。
本發明的一種基于MPEG-2碼流非線性編輯系統視頻PES流層的編輯方法,它的步驟包括a、建立索引文件;b、根據索引文件確定素材1、2的前段PES包和素材1、2的后段PES包的位置;c、對于前端PES包,計算PES包長;修改被破壞PES頭信息的PES包長度;
d、對于后端PES包,計算PES包長;計算PTS和DTS的值;修改被破壞的PES頭信息的PES包長度;修改保留素材中所有PTS和DTS的值。
索引文件包括PES在碼流中的序號、PES在碼流中的視頻序列的序列頭起始位置、PES在碼流中PES頭起始位置、標志位。標志位內容包括剪除或保持不變。
對于固定的幀速度(此項可由序列頭中獲得),如PAL制式每幀顯示時標PTS相差40ms。
修改后段素材DTS的方法DTS2(0)=DTS1(end)+C1×N1DTS2(1)=DTS2(0)+C2×N2DTS2(n)=DTS2(n-1)+[DTS2(1)-DTS2(0)]其中C1為素材1每幀解碼所用時間(常數);N1為素材1最后一個PES包所含幀數。C2為素材2每幀解碼所用時間(常數);N2為素材2第一個PES包所含幀數。
修改后段素材PTS的方法對于素材2經編輯處后的PES包其第一幀定為I幀,故PTS2(0)=DST2(0),如PTS與DTS不一定絕對相等,有可能存在差值,故可根據素材1的PTS與DTS的差值對素材2的PTS進行修正。另可修正為PTS2(0)=PTS1(end)+C1×N1)PTS2(1)=PTS2(0)+C2×N2PTS2(n)=PTS2(n-1)+[PTS2(1)-PTS2(0)]對于一段MPEG視音頻流,人們往往根據所看到的內容來確定一個剪切時間,而較少根據聲音來進行剪切,所以此時要以視頻編輯為標準,對音頻數據進行相應的剪切。因為視頻幀和音頻幀的周期是不一致的,而且也沒有成倍的關系(如常見的PAL制視頻為40毫秒/幀,44.1kHz,Layer2的音頻為26毫秒/幀),于是這種視音頻的對應是對不齊的,在剪切時也只能找到兩者的最近幀,然后綜合考慮兩段素材合并后的誤差,使處理后的素材失真度最小。在PES組頭中包含MPEG流中視音頻同步的基本時標信息PTS字段,利用它可以保持視頻和音頻流的精確同步播放。與此同時,PES又是系統PS流和TS流之間轉換的橋梁,用它可以隨意而輕松的輸出PS或TS流。因為音頻的ES流層已經失去了流中的時標信息,也就失去了最初的同步信息。當然,如果采用按視音頻相應的播放時間來同步的話,由于在視音頻開始播放時就不是對齊的,這段時差在ES流層就被埋沒了,并會累計到剪切后的流中,加大了誤差。要是最后以PS或TS流的形式輸出的,又要重新打成PES,再打成PS流或TS流,增加了重復工作。至于PS流和TS流是將視頻和音頻數據復用在一起的,在這種流上進行編輯的復雜性是相當高的。這主要是由于在PS流和TS流上視音頻數據的交錯太多的原因,如某幅視頻圖像與其同時播放的音頻數據間常常間隔相當的距離,這就造成了視頻,音頻剪切點處的數據處理,重新打包等操作的高復雜性,所以本發明是在音頻PES流上進行音頻流的編輯。它首先需要建立索引文件,包括視頻索引文件和音頻索引文件。其中視頻索引文件包括PES在碼流中的序號、PES在碼流中的視頻序列的序列頭起始位置、PES在碼流中PES頭起始位置、標志位;音頻索引文件包括PES在碼流中對應的編碼層、PES碼流的采樣頻率、PES在碼流中的音頻序列頭起始位置、PES在碼流中PES頭起始位置、標志位。根據索引文件確定PES的位置,并做標志;自視頻PES得出相應的要求剪切的視頻PTS值即前后兩段PES流剪切點的視頻PTS值(PTS_V1和PTS_V2),保留流PES1中前段PES1流剪切點的視頻PTS值PTS_V1之前和后段PES2流剪切點的視頻PTS值(PTS_V2)之后的片斷,尋找每個PES流中與給出的視頻幀編輯處PTS最接近的音頻幀,合并這兩段音頻PES流,鏈接形成一個新的音頻PES,使得它仍能保持與視頻編輯后的PES流的同步。
基于PES流層的音頻同步編輯方法可由圖4、5所示,設PTS_V1,PTS_V2分別為前后兩段PES流剪切點的視頻PTS值;PTS_P1,PTS_P3分別為前后兩段PES流中與剪切點最接近組PTS值;
PTS_P2,PTS_P4分別為前后兩段PES流中與剪切點最接近組的下一組PTS值;PTS_A1,PTS_A3分別為前后兩段PES流中與剪切點最接近幀的PTS值;PTS_A2,PTS_A4分別為前后兩段PES流中與剪切點最接近幀的下一幀PTS值;即給出兩段音頻PES流PES1和PES2和相應的要求剪切的視頻PTS值(來自于視頻PES)PTS_V1和PTS_V2,保留流PES1中PTS_V1之前和流PES2中PTS_V2之后的片斷,合并這兩段音頻PES流形成一個新的音頻PES,使得它仍能保持與視頻編輯后的PES流的同步。
對于給定的剪切點和要編輯的兩段素材,可以根據剪切點的PTS值在音頻PES流中定位到相應的音頻幀。這時,編輯的重點就集中在對這兩段流中的這兩個音頻幀的處理上。綜合考慮處理方式找出最合適的一種處理方式來進行處理。因為處理涉及到對流中數據的取舍,所以還要修改組頭中的長度域,時標域等,構成一個新的合法PES流。
找出每個PES流中與給出的視頻編輯處PTS最接近的音頻幀時,下面以PES流1為例說明此過程根據剪切點的PTS值找出最接近的Packet所在。對于每個音頻Packet,分析出其Packet_header中的PTS值PTS_P1;再分析它相鄰的下一個Packet中的PTS值PTS_P2;與PTS_V1做比較,直到找到某個PTS_P1和PTS_P2使下式成立為止PTS_P1≤PTS_V1<PTS_P2在(1)中PTS_P1所在的Packet中找出最接近的音頻幀。先分析此Packet結構,找到該Packet中第一個音頻幀所在,計算此幀的PTS增量ΔPTSA=f*sample_countsample_frequency]]>其中(以下數據均可由音頻幀頭信息中讀出)
f=90kHz;sample_count1152(Layer2,Layer3),384(Layer1);sample_frequency音頻采樣率;用PTS_A來表示當前分析的音頻幀的PTS值,N表示它在該packet中的序號,顯然在剛開始的時候有PTS_A=PTS_P1;N=0;如果PTS_A+ΔPTSA<PTS_V1,繼續取下一個音頻幀進行分析,計算ΔPTSA并修改PTS_A和N的值。一直分析到下式成立為止PTS_A+ΔPTSA≥PTS_V1此時就找到了滿足條件的音頻幀,并有PTS_A1=PTS_A;PTS_A2=PTS_A+ΔPTSA同理確定音頻PES2的PTS_A3和PTS_A4。
選擇鏈接最佳的處理方式因為PTS間隔與播放時間長短成正比,所以可以用占用的PTS長度來衡量各區播放時間的長短,有PlayTimeA ≈ PTS1-PTS_A1;PlayTimeB ≈ PTS_A2-PTS1PlayTimeC ≈ PTS2-PTS_A3P1ayTimeD ≈ PTS_A4-PTS2從編輯方法中取舍角度考慮,這兩段音頻碼流共有四種鏈接方式,如圖6中所示。針對各種鏈接方式的誤差分別為(1 鏈接方式一全部保留編輯處兩音頻流兩幀,誤差為E=B+C;(2)鏈接方式二保留音頻流1的一幀,全棄音頻流2的一幀,誤差為E=|B-D|(絕對值);(3)鏈接方式三舍棄音頻流1的一幀,保留音頻流2的一幀,誤差為E=|C-A|(絕對值);(4)鏈接方式四全部舍棄編輯處兩音頻流兩幀,誤差為E=A+D;本發明所述方法是在各種鏈接方式中選擇誤差最小方式來鏈接兩段碼流。
修改相關參數由于在音頻PES流的packet_header中包含PTS,ESCR等時標信息,而這兩個時間序列的時間基準可能不一致,必須根據前段序列的時間來校正后段序列的時間,使合并后的序列的時標保持連續性。此外,兩個音頻序列的層,比特率或采樣頻率等參數可能不一致,所以要把結合處的兩個不完整PES_組各編成一個完整的PES_組。
最后一個要保留的PES_組的處理通過音頻幀的語法字(0xFFF)定位到序列1的音頻裁減點,去掉序列1中音頻裁減點以后的音頻數據。如果該裁減點位于本組的第一幀前,為了避免音頻組t中沒有音頻幀的情況,要將該組與流中上一個組合并。修改包頭中的長度域,使之等于本組中剩下的數據長度。計算ESCR1和音頻ES速率R1ES以備(2)中使用ESCR1=ESCR_base*300+ESCR_extR1ES=ES_rate*50第一個要保留的PES_組的處理通過音頻幀的語法字(0xFFF)定位到序列2的音頻裁減點,去掉序列2中音頻裁減點之前的音頻數據。如果該剪裁點位于該組中最后一幀則將它合并到下一個組中,否則將剩下的數據打成一個新的組,修改包長度,PTS,ESCR字段,如果這些字段中有些不存在,則添加該字段,并設置相應的標志。其中PTSNew依取舍方式的不同可能等于圖二中的PTS_A1或PTS_A2。ESCR的修改方法如下ESCRNew=ESCR1+L1×f÷R1ESf=27MHz其中ESCR1,R1ES參見標準;L1ESCR字段到本ESCR字段的字節數。
后續PES_組的處理按(2)中所示的方法繼續計算PTSNew和ESCRNew,只不過公式中的數據全部用序列2中第一個保留的Packet中的值代替。記錄下PTS和ESCR的變化量(相對于原來的數據)ΔPTS=PTSNew-PTSOld
ΔESCR=ESCRNew-ESCROld對于以后的幀將都用ΔPTS和ΔESCR來校正相應的值,直至結束。
如果要進一步減小誤差,并盡量降低累積誤差。可在后段素材的修正PTS上加上一個混疊時間估值,如果估計值較為準確,則可將誤差值降置為零。
權利要求
1.一種基于MPEG-2碼流非線性編輯系統針對幀的編輯方法,其特征在于它包括以下步驟a、定位編輯點,確定編輯點所對應幀的位置;b、將該幀的剪切點處前端數據的最后一幀圖像標記為FLast,剪切點處后端數據的第一幀標記為FFirst;c、由解碼部分或者索引文件確定編輯點在視音頻基本數據流中的位置,并確定幀的類型;d、根據編輯方法,進行針對幀的編輯處理;e、更改相關GOP的頭信息形成一個新的合法GOP。
2.根據權利要求1所述的一種基于MPEG-2碼流非線性編輯系統針對幀的編輯方法,其特征在于所述的編輯方法包括精確到幀的編輯方法以及幀的編輯方法。
3.根據權利要求1所述的一種基于MPEG-2碼流非線性編輯系統針對幀的編輯方法,其特征在于所述的針對幀的編輯處理包括切除標記前端碼流、保留標記后端的碼流或切除后端的碼流、保留前端的碼流或切除中間、保留兩端的碼流或切除兩端的碼流、保留中間的碼流方法。
4.根據權利要求1所述的一種基于MPEG-2碼流非線性編輯系統針對幀的編輯方法,其特征在于所述的索引文件內容包括幀的幀號、幀的序列頭起始位置、幀所在初GOP的GOP頭起始位置、幀的圖象頭起始位置、幀的編碼格式(I、B、P)、標志位。
5.根據權利要求4所述的一種基于MPEG-2碼流非線性編輯系統針對幀的編輯方法,其特征在于所述的標志位內容包括幀的剪除、被重新編碼或保持不變的標志。
6.根據權利要求2或3所述的一種基于MPEG-2碼流非線性編輯系統針對幀的編輯方法,其特征在于所述的切除標記前端碼流、保留標記后端的碼流并且精確到幀的編輯方法包括a、如果FFirst為I幀,沒有幀需要重編,直接去掉FFirst前所有的幀,然后修改FFirst所在GOP中的相關信息,形成新的合法GOP;b、如果FFirst為P幀,將FFirst解碼后重新編碼為I幀,然后去掉FFirst前所有的幀,修改FFirst重編碼后所在GOP中的相關信息,形成新的合法GOP;c、如果FFirst為B幀,那么需要將FFirst所在GOP解碼至FFirst幀,然后將FFirst幀編碼成I幀,修改FFirst重編碼后所在GOP中的相關信息,形成新的合法GO。
7.根據權利要求2或3所述的一種基于MPEG-2碼流非線性編輯系統針對幀的編輯方法,其特征在于所述的切除后端的碼流、保留前端的碼流并且精確到幀的編輯方法包括a、如果FLast為I幀,沒有幀需要重編,直接去掉FLast后所有的幀,然后修改FLast所在GOP中的相關信息,形成新的合法GOP;b、如果FLast為P幀,沒有幀需要重編,直接去掉FLast后所有的幀,然后修改FLast所在GOP中的相關信息,形成新的合法GOP;c、如果FLast為B幀,那么需要將FLast所在GOP解碼至FLast幀,然后將FLast幀編碼成P幀,修改FLast重編碼后所在GOP中的相關信息,形成新的合法GOP。
8.根據權利要求2或3所述的一種基于MPEG-2碼流非線性編輯系統針對幀的編輯方法,其特征在于所述的切除標記前端碼流、保留標記后端的碼流并且近似精確到幀的編輯方法包括a、如果FFirst為I幀,不需要編解碼操作,直接去掉FFirst前所有的幀,然后修改FFirst所在GOP中的相關信息,形成新的合法GOP;b、如果FFirst為P幀,將FFirst幀解碼后重新編碼為I幀,然后去掉FFist前所有的幀,修改FFirst重編碼后所在GOP中的相關信息,形成新的合法GOP;c、如果FFirst為B幀,需要定位FFirst前后(本GOP內)最近的I幀或者P幀(一般情況下,隔1至2幀即為I幀或者P幀),如果最近幀為I幀,去掉I幀前面所有的幀,修改FFirst所在GOP的頭信息,形成新的合法GOP。如果最近幀為P幀,則需將此P幀解碼后重編成I幀,去掉重編成I幀前數據,修改新的GOP頭信息,形成新的合法GOP。
9.根據權利要求2或3所述的一種基于MPEG-2碼流非線性編輯系統針對幀的編輯方法,其特征在于所述的切除后端的碼流、保留前端的碼流并且近似精確到幀的編輯方法包括a、如果FLast為I幀,不需要編、解碼操作,直接去掉FLast后所有的幀,然后修改FLast所在GOP中的相關信息,形成新的合法GOP;b、如果FLast為P幀,不需要編、解碼操作,直接去掉FLast后所有的幀,然后修改FLast所在GOP中的相關信息,形成新的合法GOP;c、如果FLast為B幀,需要定位FLast前后(本GOP內)最近的I幀或者P幀(一般情況下,隔1至2幀即為I幀或者P幀),如果最近幀為I幀,直接去掉此I幀后面所有數據,修改GOP的頭信息,形成新的合法GOP。如果最近幀為P幀,只需去掉此P幀后面所的數據,修改新的GOP頭信息,形成新的合法GOP。
10.一種基于MPEG-2碼流非線性編輯系統精確到GOP的編輯方法,其特征在于它包括如下步驟a、建立GOP索引文件;b、依據索引文件,確定GOP在碼流中的位置,c、判斷出編輯點幀所在GOP中的位置;d、根據編輯點前后幀的多少確定舍棄或保留該GOP的前段或后段;e、修改相臨GOP頭結構中相應字段。
11.根據權利要求10所述的基于MPEG-2碼流非線性編輯系統精確到GOP的編輯方法,其特征在于若切除編輯點前段的碼流后段的碼流并保留后段碼流,則修改該GOP后面的第一個GOP的頭結構中相應字段;若切除編輯點后段碼流并保留前段碼流,修改該GOP前面的第一個GOP的頭結構中相應字段。
12.根據權利要求10所述的基于MPEG-2碼流非線性編輯系統精確到GOP的編輯方法,其特征在于所述的GOP索引文件包括GOP在碼流中的序號、GOP在碼流中的視頻序列的序列頭起始位置、GOP在碼流中GOP頭起始位置、標志位。
13.根據權利要求12所述的基于MPEG-2碼流非線性編輯系統精確到GOP的編輯方法,其特征在于所述的標志位內容包括剪除或保持不變。
14.一種基于MPEG-2碼流非線性編輯系統視頻PES流層的編輯方法,其特征在于它的步驟包括a、建立索引文件;b、根據索引文件確定素材1、2的前段PES包和素材1、2的后段PES包的位置;c、對于前端PES包,計算PES包長;修改被破壞PES頭信息的PES包長度;d、對于后端PES包,計算PES包長;計算PTS和DTS的值;修改被破壞的PES頭信息的PES包長度;修改保留素材中所有PTS和DTS的值。
15.根據權利要求14所述的基于MPEG-2碼流非線性編輯系統視頻視頻PES流層的編輯方法,其特征在于所述的索引文件包括PES在碼流中的序號、PES在碼流中的視頻序列的序列頭起始位置、PES在碼流中PES頭起始位置、標志位。
16.根據權利要求14所述的基于MPEG-2碼流非線性編輯系統視頻視頻PES流層的編輯方法,其特征在于所述的標志位內容包括剪除或保持不變。
17.根據權利要求14所述的基于MPEG-2碼流非線性編輯系統視頻視頻PES流層的編輯方法,其特征在于所述的DTS的值的修改使用如下公式DTS2(0)=DTS1(end)+C1×N1DTS2(1)=DTS2(0)+C2×N2DTS2(n)=DTS2(n-1)+[DTS2(1)一DTS2(0)]其中C1為素材1每幀解碼所用時間(常數);N1為素材1最后一個PES包所含幀數;C2為素材2每幀解碼所用時間(常數);N2為素材2第一個PES包所含幀數。
18.根據權利要求14所述的基于MPEG-2碼流非線性編輯系統視頻視頻PES流層的編輯方法,其特征在于所述的PTS的值的修改使用如下公式PTS2(0)=PTS1(end)+C1×N1)PTS2(1)=PTS2(0)+C2×N2PTS2(n)=PTS2(n-1)+[PTS2(1)-PTS2(0)]
19.一種基于MPEG-2碼流非線性編輯系統音視頻同步PES流層的編輯方法,給出兩段PES流PES1和PES2,其特征在于它步驟包括建立索引文件;根據索引文件確定PES的位置,并做標志;自視頻PES得出相應的要求剪切的視頻PTS值即前后兩段PES流剪切點的視頻PTS值(PTS_V1和PTS_V2),保留流PES1中前段PES1流剪切點的視頻PTS值PTS_V1之前和后段PES2流剪切點的視頻PTS值(PTS_V2)之后的片斷,尋找每個PES流中與給出的視頻幀編輯處PTS最接近的音頻幀,合并這兩段音頻PES流,鏈接形成一個新的音頻PES,使得它仍能保持與視頻編輯后的PES流的同步。
20.根據權利要求19所述的基于MPEG-2碼流非線性編輯系統音頻同步PES流層的編輯方法,其特征在于所述的索引文件包括視頻索引文件和音頻索引文件。
21.根據權利要求19所述的基于MPEG-2碼流非線性編輯系統音頻同步PES流層的編輯方法,其特征在于所述的視頻索引文件包括PES在碼流中的序號、PES在碼流中的視頻序列的序列頭起始位置、PES在碼流中PES頭起始位置、標志位。
22.根據權利要求19所述的基于MPEG-2碼流非線性編輯系統音頻同步PES流層的編輯方法,其特征在于所述的音頻索引文件包括PES在碼流中對應的編碼層、PES碼流的采樣頻率、PES在碼流中的音頻序列頭起始位置、PES在碼流申PES頭起始位置、標志位。
23.根據權利要求19所述的基于MPEG-2碼流非線性編輯系統音頻同步PES流層的編輯方法,其特征在于所述的尋找最接近的音頻幀的步驟包括,先根據符合公式PTS P1≤PTS V1<PTS P2的條件,得到PTS所在的組的第一個音頻幀所在,依據ΔPTSA=f*sample_countsample_frequency]]>計算該幀的PTS增量,最終使PTS_A+ΔPTSA≥PTS_V1,確定音頻PES2的PTS_A3和PTS_A4;其中PTS_V1,PTS_V2分別為前后兩段PES流剪切點的視頻PTS值;PTS_P1,PTS_P 3分別為前后兩段PES流中與剪切點最接近組(Packet)PTS值;PTS_P2,PTS_P4分別為前后兩段PES流中與剪切點最接近組的下一組PTS值;PTS_A1,PTS_A3分別為前后兩段PES流中與剪切點最接近幀的PTS值;PTS_A2,PTS_A4分別為前后兩段PES流中與剪切點最接近幀的下一幀PTS值。
24.根據權利要求19所述的基于MPEG-2碼流非線性編輯系統音視頻同步PES流層的編輯方法,其特征在于所述的鏈接方式包括全部保留編輯處兩音頻流兩幀。
25.根據權利要求19所述的基于MPEG-2碼流非線性編輯系統音視頻同步PES流層的編輯方法,其特征在于所述的鏈接方式包括保留音頻流1的一幀,全棄音頻流2的一幀。
26.根據權利要求19所述的基于MPEG-2碼流非線性編輯系統音視頻同步PES流層的編輯方法,其特征在于所述的鏈接方式包括舍棄音頻流1的一幀,保留音頻流2的一幀。
27.根據權利要求19所述的基于MPEG-2碼流非線性編輯系統音視頻同步PES流層的編輯方法,其特征在于所述的鏈接方式包括全部舍棄編輯處兩音頻流兩幀。
28.根據權利要求19所述的基于MPEG-2碼流非線性編輯系統音視頻同步PES流層的編輯方法,其特征在于所述的修改相關參數包括保留最后一個PES_組或保留第一個PES組或后續PES_組的處理。
29.根據權利要求28所述的基于MPEG-2碼流非線性編輯系統音視頻同步PES流層的編輯方法,其特征在于所述的保留最后一個PES_組包括通過音頻幀的語法字(0xFFF)定位到序列1的音頻裁減點,去掉序列中音頻裁減點以后的音頻數據;如果該裁減點位于本packet的第一幀前,將該packet與流中上一個組合并;修改組頭中的長度域,使之等于本Packet中剩下的數據長度;計算ESCR1和音頻ES速率R1ESESCR1=ESCR_base*300+ESCR_ext,其中R1ES=ES_rate*50。
30.根據權利要求28所述的基于MPEG-2碼流非線性編輯系統音視頻同步PES流層的編輯方法,其特征在于所述的保留第一個PES組包括通過音頻幀的語法字(0xFFF)定位到序列2的音頻裁減點,去掉序列2中音頻裁減點之前的音頻數據;若該剪裁點位于該packet中最后一幀則將它合并到下一個組中,否則將剩下的數據打成一個新的組,修改packet_length,PTS,ESCR字段,如果這些字段中有些不存在,則添加該字段,并設置相應的標志;ESCR的修改為ESCRNew=ESCR1+L1×f÷R1ESf=27MHz其中L1ESCR字段到本ESCR字段的字節數。
31.根據權利要求28所述的基于MPEG-2碼流非線性編輯系統音視頻同步PES流層的編輯方法,其特征在于所述的后續PES_組的處理包括記錄下PTS和ESCR的變化量(相對于原來的數據)ΔPTS=PTSNew-PTSOldΔESCR=ESCRNew-ESCROld對于以后的幀將都用ΔPTS和ΔESCR來校正相應的值,直至結束。
32.根據權利要求19所述的基于MPEG-2碼流非線性編輯系統音視頻同步PES流層的編輯方法,其特征在于所述的步驟包括闊可在后段素材的修正PTS上加上一個混疊時間估值。
全文摘要
本發明提供了一種基于MPEG-2碼流的非線性編輯系統編輯方法,其中基于幀的編輯方法包括定位編輯點,確定編輯點所對應幀的位置;將該幀的剪切點處前端數據的最后一幀圖像標記為F
文檔編號H04N5/91GK1344106SQ0012479
公開日2002年4月10日 申請日期2000年9月15日 優先權日2000年9月15日
發明者高文, 羅森林, 袁祿軍, 彭澤山, 成華 申請人:北京算通數字技術研究中心有限公司