單元426根據(jù)用戶指定的Μ值確定一個可以保證每個流媒體文件的第一幀都是I幀的Μ值。上述Μ值調(diào)整單元426將確定的Μ值發(fā)送給當(dāng)前使用的視頻編碼器(即上述數(shù)個視頻編碼422、423、
424......中的一個),按上述參數(shù)編碼后流化得到的每個流媒體文件的首幀均為I幀。但當(dāng)發(fā)生場景轉(zhuǎn)換時,在轉(zhuǎn)換點(diǎn)會產(chǎn)生一個I幀,使得后續(xù)I幀的位置發(fā)生變化,因此,還不能完全保證流化后得到的流媒體文件首幀為I幀。更進(jìn)一步,為了保證流化后得到的每個流媒體文件首幀為I幀,設(shè)置了場景轉(zhuǎn)換控制單元427對I幀的位置進(jìn)行調(diào)整。Μ值調(diào)整單元426還將確定的Μ值發(fā)送給場景轉(zhuǎn)換控制單元427,場景轉(zhuǎn)換控制單元427監(jiān)控當(dāng)前的視頻編碼器是否反饋了場景轉(zhuǎn)換的信息。當(dāng)場景轉(zhuǎn)換發(fā)生后,當(dāng)前視頻編碼器(即上述數(shù)個視頻編碼422、423、424……中的一個)將場景轉(zhuǎn)換開始的一幀編碼為I幀,并向場景轉(zhuǎn)換控制單元427發(fā)送產(chǎn)生場景轉(zhuǎn)換的信息。上述場景轉(zhuǎn)換控制單元427根據(jù)從Μ值調(diào)整單元426收到的Μ值確定場景轉(zhuǎn)換開始時的一幀是否處在原I幀應(yīng)該出現(xiàn)的位置。如果是,不進(jìn)行處理;如果不是,場景轉(zhuǎn)換控制單元427指令當(dāng)前視頻編碼器將場景轉(zhuǎn)換后的第一個應(yīng)當(dāng)出現(xiàn)I幀的位置的幀強(qiáng)行編碼為I幀。最后將編碼后的視頻幀序列儲存在上述存儲器425里面。
[0038]圖6為本發(fā)明實(shí)施方式涉及的音視頻流化裝置的處理過程的流程圖。下面,參照圖6說明本實(shí)施方式涉及的音視頻流化的處理過程。
[0039]首先,輸入音視頻文件,上述數(shù)據(jù)接收模塊1接收上述音視頻文件數(shù)據(jù)并將其輸送至上述解封裝模塊2 (步驟S1)。上述解封裝模塊2對上述音視頻文件數(shù)據(jù)進(jìn)行解封裝,將上述音視頻文件數(shù)據(jù)解析為視頻幀序列和音頻幀序列,并將上述視頻幀序列和音頻幀序列分別輸送至上述解碼模塊3中的視頻解碼模塊32和音頻解碼模塊31 (步驟S2)。
[0040]上述解碼模塊3根據(jù)需要對音頻幀序列和視頻幀序列進(jìn)行解碼(步驟S3 )。上述視頻解碼模塊32從上述解封裝模塊2中獲取上述視頻幀序列,將上述視頻幀序列中的視頻幀還原為RAW格式數(shù)據(jù),并將上述RAW格式數(shù)據(jù)存儲到上述存儲器326中。上述音頻解碼模塊31從上述解封裝模塊2中獲取上述音頻幀序列,同時上述控制模塊6將流媒體的相關(guān)參數(shù)傳輸給上述音頻解碼模塊31,音頻解碼模塊31通過對音頻幀序列的相關(guān)參數(shù)和流媒體的相關(guān)參數(shù)進(jìn)行分析,判斷是否進(jìn)行解碼。如果需要進(jìn)行解碼,將上述音頻幀序列的音頻幀還原成PCM格式數(shù)據(jù)然后存儲在上述存儲器316中;如果不需要解碼,將上述音頻幀序列直接存儲在上述存儲器316中。最后將處理好的音頻數(shù)據(jù)和視頻數(shù)據(jù)分別傳輸給上述編碼模塊4中的音頻編碼模塊41和視頻編碼模塊42。
[0041 ] 上述編碼模塊4收到解碼模塊3發(fā)送的音視頻數(shù)據(jù)后根據(jù)需要對音視頻數(shù)據(jù)進(jìn)行編碼(步驟S4)。上述控制模塊6將流媒體的相關(guān)參數(shù)傳輸給上述編碼模塊4。上述編碼模塊4中的音頻編碼模塊41從上述音頻解碼模塊31中獲取音頻數(shù)據(jù)并對其進(jìn)行編碼,在編碼之前首先判斷音頻數(shù)據(jù)是否需要編碼。如果判斷需要編碼,根據(jù)獲得的流媒體的相關(guān)參數(shù)按要求編碼成需要的音頻幀序列然后存儲在上述存儲器415中;如果判斷不需要編碼,則從上述獲得的音頻數(shù)據(jù)是沒有進(jìn)行解碼的音頻幀序列,將音頻幀序列直接存儲在上述存儲器415里面。上述視頻編碼模塊42從上述視頻編碼模塊32中獲得上述視頻數(shù)據(jù),視頻編碼模塊42根據(jù)獲得的流媒體的相關(guān)參數(shù)將視頻數(shù)據(jù)編碼成需要的視頻幀序列然后存儲在上述存儲器425中。最后將編碼后的音頻幀序列和視頻幀序列傳輸給上述封裝模塊5。
[0042]上述封裝模塊5從上述控制模塊6得到流媒體的相關(guān)參數(shù),根據(jù)流媒體的相關(guān)參數(shù)(包括用戶輸入的單個流媒體文件的視頻幀數(shù)N)對封裝模塊5從上述編碼模塊4中獲取的音頻幀序列、視頻幀序列分段進(jìn)行封裝,形成所需要的流媒體文件序列(步驟S5)。
[0043]圖7為本發(fā)明實(shí)施方式涉及的音視頻流化裝置的處理過程的步驟S3中的音頻解碼處理的流程圖。下面,參照圖7說明在本實(shí)施方式涉及的音視頻流化裝置中對音頻幀序列解碼的處理過程。
[0044]音頻編碼格式判斷單元311基于所接收的流媒體文件的相關(guān)參數(shù)和基于所接收的音頻幀序列的編碼格式判斷音頻幀序列是否需要解碼(步驟S311)。如果不需要解碼(步驟S311:否),將所接收的音頻幀序列傳輸給上述存儲器316;如果需要解碼(步驟S311:是),將音頻幀序列和判斷結(jié)果傳輸給音頻解碼選擇單元312。音頻解碼器選擇單元312根據(jù)判斷結(jié)果選擇適當(dāng)?shù)囊纛l解碼器(即音頻解碼器323、324、325……中之一)對上述音頻幀序列進(jìn)行解碼(步驟S312)。上述音頻解碼器(即音頻解碼器323、324、325……中之一)將上述音頻幀序列還原成PCM格式的數(shù)據(jù)(步驟S313)。解碼后的音頻數(shù)據(jù)存儲在存儲器316里面(步驟S314)。
[0045]圖8為本發(fā)明實(shí)施方式涉及的音視頻流化裝置的處理過程的步驟S3中視頻幀序列解碼的流程圖。下面,參照圖8說明在本實(shí)施方式涉及的音視頻流化裝置中對視頻幀序列解碼的處理過程。
[0046]視頻編碼格式判斷單元321基于所接收的視頻幀序列的編碼格式,將判斷結(jié)果和視頻幀序列傳輸給視頻解碼器選擇單元322(步驟S321)。上述視頻解碼器選擇單元322基于上述判斷結(jié)果選擇相應(yīng)的解碼器(步驟S322)。上述解碼器(即解碼器323、324、325……中之一)將上述視頻幀序列還原成RAW格式數(shù)據(jù)(步驟S323),并將視頻數(shù)據(jù)存儲在上述存儲器326 (步驟S324)。
[0047]圖9為本發(fā)明實(shí)施方式涉及的音視頻流化裝置的處理過程的步驟S4中音頻數(shù)據(jù)編碼的處理流程圖。下面,參照圖9說明在本實(shí)施方式涉及的音視頻流化裝置中對音頻數(shù)據(jù)編碼的處理過程。
[0048]首先音頻編碼格式判斷單元411基于所接收的音頻數(shù)據(jù)進(jìn)行判斷,判斷接收的音頻數(shù)據(jù)是否需要編碼(步驟S411)。如果接收的數(shù)據(jù)是音頻幀序列,不需要編碼(步驟S411:否),直接將音頻幀序列存儲在上述存儲器415里面。如果接收的數(shù)據(jù)是PCM格式的音頻數(shù)據(jù),是需要編碼的(步驟S411:是)。將基于所接收的流媒體文件的相關(guān)參數(shù)將音頻數(shù)據(jù)傳輸給相應(yīng)的音頻編碼器(即音頻編碼器412、413、414……中之一)進(jìn)行編碼(S412)。上述音頻編碼器(即音頻編碼器412、413、414……中之一)將上述音頻數(shù)據(jù)編碼成所需要格式的音頻幀序列(步驟S413)。最后將編碼好的音頻幀序列存儲在上述存儲器415中(步驟S414)。
[0049]圖10為本發(fā)明實(shí)施方式涉及的音視頻流化裝置的處理過程的步驟S4中視頻數(shù)據(jù)編碼的處理流程圖。下面,參照圖10說明在本實(shí)施方式涉及的音視頻流化裝置中對視頻數(shù)據(jù)編碼的處理過程。
[0050]首先上述視頻編碼器選擇單元421從視頻解碼模塊32獲取解碼后的視頻數(shù)據(jù)并從控制模塊6獲取流媒體文件的相關(guān)參數(shù),確定所需的視頻編碼的格式,(步驟S421 )。視頻編碼器選擇單元421基于所確定的視頻編碼格式將視頻數(shù)據(jù)傳輸給相應(yīng)的視頻編碼器(即視頻編碼器412、413、414……中之一)(步驟S422)。上述Μ值調(diào)整單元426根據(jù)流媒體的相關(guān)參數(shù)確定Μ值(步驟S423)。在本實(shí)施例中,使用與用戶輸入的I幀間隔值最接近的能夠滿足所述條件的值作為編碼時使用的I幀間隔值;將用戶輸入的I幀間隔值依次增減一個由1逐漸增大的值,并將最先能夠滿足所述條件的值作為編碼時使用的I幀間隔值。具體來說,Μ值調(diào)整單元426首先判斷用戶輸入的Μ值與Ν值之間是否滿足N m