一種將音視頻文件流化的裝置和方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種音視頻流化的裝置及方法,尤其是涉及一種保證流化后的每個片段都能獨立解碼的音視頻流化的裝置和辦法。
【背景技術(shù)】
[0002]隨著網(wǎng)絡(luò)事業(yè)文化的發(fā)展,音視頻資源極大豐富,對音視頻文件流化處理也是越來越普遍。
[0003]音視頻流化的基本的流程如下:首先將要處理的音視頻文件解封裝成視頻幀序列和音頻幀序列;然后對視頻幀序列和音頻幀序列分別解碼為RAW格式數(shù)據(jù);對于解碼得到的RAW格式數(shù)據(jù)根據(jù)需要再進(jìn)行編碼,編碼成所需要的視頻幀序列和音頻幀序列;對編碼后的視頻幀序列和音頻幀序列根據(jù)所需流媒體文件參數(shù)的要求對其進(jìn)行分割;最后將分割后的視頻幀序列和音頻幀序列封裝成所需要的流媒體文件序列。
[0004]在將音視頻文件流化成所需要的流媒體文件序列時,可能出現(xiàn)多數(shù)流媒體文件的視頻幀序列的首幀不是I幀,從而在缺少前一個流媒體文件時,該流媒體文件的視頻幀序列的首個I幀之前的幀不能被解碼。
【發(fā)明內(nèi)容】
[0005]為了解決上述技術(shù)問題,本發(fā)明的一方面提供一種流化音視頻文件的裝置,包括:解封裝模塊,用于將音視頻文件解析為相應(yīng)的音頻幀序列和視頻幀序列;解碼模塊,用于將所述視頻幀序列中的視頻幀還原為RAW格式的視頻數(shù)據(jù)以及將所述音頻幀序列中的音頻幀還原為PCM格式的音頻數(shù)據(jù);編碼模塊,通過對所述RAW格式的視頻數(shù)據(jù)和所述PCM格式的音頻數(shù)據(jù)進(jìn)行編碼,獲得經(jīng)重新編碼后的視頻幀序列和經(jīng)重新編碼后的音頻幀序列;封裝模塊,用于將重新編碼后的視頻幀序列和音頻幀序列封裝為流媒體文件序列;控制模塊,用于接收用戶輸入的流媒體文件參數(shù),并將其他模塊所需要的參數(shù)發(fā)送給各模塊;其中,所述編碼模塊在編碼時使得封裝后的流媒體文件序列中的每個流媒體文件的第一個視頻幀均為I幀。
[0006]優(yōu)選地,所述用戶輸入的流媒體文件參數(shù)包括每個流媒體文件的視頻幀數(shù)和I幀間隔值;所述編碼模塊調(diào)整I幀間隔值,使得編碼時使用的I幀間隔值能夠滿足每個流媒體文件的視頻幀數(shù)除以I幀間隔值的余數(shù)為零這一條件。
[0007]優(yōu)選地,所述編碼模塊使用與用戶輸入的I幀間隔值最接近的能夠滿足所述條件的值作為編碼時使用的I幀間隔值。
[0008]優(yōu)選地,所述編碼模塊將用戶輸入的I幀間隔值依次增減一個由1逐漸增大的值,并將最先能夠滿足所述條件的值作為編碼時使用的I幀間隔值。
[0009]優(yōu)選地,當(dāng)由于發(fā)生場景轉(zhuǎn)換而產(chǎn)生了不遵循調(diào)整后的I幀間隔值的I幀時,所述編碼模塊將在場景轉(zhuǎn)換產(chǎn)生的I幀之前的第一個I幀之后且間隔調(diào)整后的I幀間隔值的幀強(qiáng)行編碼為I幀;在該強(qiáng)行編碼的I幀之后的各幀的編碼從該強(qiáng)行編碼的I幀開始按照調(diào)整后的I幀間隔值來進(jìn)行。
[0010]優(yōu)選地,當(dāng)所述音頻幀序列的編碼格式與所述用戶輸入的流媒體文件參數(shù)中的編碼格式一致時,所述解碼模塊和編碼模塊不對音頻幀序列進(jìn)行解碼和重新編碼,所述封裝模塊直接使用所述音頻幀序列進(jìn)行封裝。
[0011]本發(fā)明的另一方面提供一種流化音視頻文件的方法,包括:參數(shù)輸入步驟,用于接收用戶輸入的流媒體文件參數(shù),并將其他模塊所需要的參數(shù)發(fā)送給各模塊;解封裝步驟,將音視頻文件解析為相應(yīng)的音頻幀序列和視頻幀序列;解碼步驟,將所述視頻幀序列中的視頻幀還原為RAW格式的視頻數(shù)據(jù)以及將所述音頻幀序列中的音頻幀還原為PCM格式的音頻數(shù)據(jù);編碼步驟,通過對所述RAW格式的視頻數(shù)據(jù)和所述PCM格式的音頻數(shù)據(jù)進(jìn)行編碼,獲得經(jīng)重新編碼后的視頻幀序列和經(jīng)重新編碼后的音頻幀序列;封裝步驟,將重新編碼后的視頻幀序列和音頻幀序列封裝為流媒體文件序列;其中,在所述編碼步驟中,在編碼時使得封裝后的流媒體文件序列中的每個流媒體文件的第一個視頻幀均為I幀。
[0012]優(yōu)選地,所述用戶輸入的流媒體文件參數(shù)包括每個流媒體文件的視頻幀數(shù)和I幀間隔值;在所述編碼步驟中,調(diào)整I幀間隔值,使得編碼時使用的I幀間隔值能夠滿足每個流媒體文件的視頻幀數(shù)除以I幀間隔值的余數(shù)為零這一條件。
[0013]優(yōu)選地,在所述編碼步驟中,使用與用戶輸入的I幀間隔值最接近的能夠滿足所述條件的值作為編碼時使用的I幀間隔值。
[0014]優(yōu)選地,在所述編碼步驟中,將用戶輸入的I幀間隔值依次增減一個由1逐漸增大的值,并將最先能夠滿足所述條件的值作為編碼時使用的I幀間隔值。
[0015]優(yōu)選地,在所述編碼步驟中,當(dāng)由于發(fā)生場景轉(zhuǎn)換而產(chǎn)生了不遵循調(diào)整后的I幀間隔值的I幀時,將在場景轉(zhuǎn)換產(chǎn)生的I幀之前的第一個I幀之后且間隔調(diào)整后的I幀間隔值的幀強(qiáng)行編碼為I幀;在該強(qiáng)行編碼的I幀之后的各幀的編碼從該強(qiáng)行編碼的I幀開始按照調(diào)整后的I幀間隔值來進(jìn)行。
[0016]優(yōu)選地,當(dāng)所述音頻幀序列的編碼格式與所述用戶輸入的流媒體文件參數(shù)中的編碼格式一致時,在所述解碼步驟和編碼步驟中不對音頻幀序列進(jìn)行解碼和重新編碼,在所述封裝步驟中直接使用所述音頻幀序列進(jìn)行封裝。
[0017]現(xiàn)有的音視頻流化裝置獲取的流媒體文件序列中,多數(shù)流媒體文件的視頻幀序列的首幀不是I幀,從而在缺少前一個流媒體文件時,該流媒體文件的視頻幀序列的首個I幀之前的幀不能被解碼。這樣當(dāng)缺少前一個流媒體文件時,播放這些幀就會出現(xiàn)錯誤,影響了用戶的使用體驗。要避免這種情況就必須在播放器中增加額外的組件來解決這一問題。而本發(fā)明的音視頻流化裝置和方法在編碼時就使得流媒體文件的首幀為I幀,這樣每個流媒體文件不必借助前一個文件的內(nèi)容就可以解碼,且不必對播放器進(jìn)行改動,提升了用戶體驗,更好的適應(yīng)了流媒體播放的需求。
【附圖說明】
[0018]圖1為本發(fā)明實施方式涉及的音視頻流化裝置的結(jié)構(gòu)圖。
[0019]圖2為本發(fā)明實施方式涉及的音視頻流化裝置的音頻解碼模塊的結(jié)構(gòu)框圖。
[0020]圖3為本發(fā)明實施方式涉及的音視頻流化裝置的視頻解碼模塊的結(jié)構(gòu)框圖。
[0021]圖4為本發(fā)明實施方式涉及的音視頻流化裝置的音頻編碼模塊的結(jié)構(gòu)框圖。
[0022]圖5為本發(fā)明實施方式涉及的音視頻流化裝置的視頻編碼模塊的結(jié)構(gòu)框圖。
[0023]圖6為本發(fā)明實施方式涉及的音視頻流化方法的處理過程的流程圖。
[0024]圖7為本發(fā)明實施方式涉及的音視頻流化方法的處理過程的步驟S3中音頻幀序列解碼的處理流程圖。
[0025]圖8為本發(fā)明實施方式涉及的音視頻流化方法的處理過程的步驟S3中視頻幀序列解碼的處理流程圖。
[0026]圖9為本發(fā)明實施方式涉及的音視頻流化方法的處理過程的步驟S4中音頻數(shù)據(jù)編碼的處理流程圖。
[0027]圖10為本發(fā)明實施方式涉及的音視頻流化方法的處理過程的步驟S4中視頻數(shù)據(jù)編碼的處理流程圖。
【具體實施方式】
[0028]下面根據(jù)附圖所示實施方式闡述本發(fā)明。此次公開的實施方式可以認(rèn)為在所有方面均為例示,不具限制性。本發(fā)明的范圍不受上述實施方式的說明所限,僅由權(quán)利要求書的范圍所示,而且包括與權(quán)利要求范圍具有同樣意思及權(quán)利要求范圍內(nèi)的所有變形。
[0029]圖1為本發(fā)明實施方式涉及的音視頻流化裝置的結(jié)構(gòu)框圖。本發(fā)明實施方式涉及的音視頻流化裝置包括數(shù)據(jù)接收模塊1、解封裝模塊2、解碼模塊3、編碼模塊4、封裝模塊5和控制模塊6。其中解碼模塊3包括音頻解碼模塊31、視頻解碼模塊32,編碼模塊4包括音頻編碼模塊41、視頻編碼模塊42。
[0030]控制模塊6用于接收用戶設(shè)定的要輸出