一種流媒體處理方法及裝置的制造方法
【專利摘要】本發(fā)明實施例提供一種流媒體處理方法及裝置,其中的方法可包括:獲取待解碼視頻流中的視頻幀,所述視頻幀包括數(shù)據(jù)幀和非數(shù)據(jù)幀;對所述視頻幀進行幀選擇處理,提取所述視頻流中的數(shù)據(jù)幀;解析所述視頻流中的媒體文件頭數(shù)據(jù),獲取視頻配置信息;將提取得到的所述數(shù)據(jù)幀整合為待解碼碼流,并利用所述視頻配置信息對所述待解碼碼流進行解碼處理。本發(fā)明可對待解碼視頻流進行重新提取和整合,減少待解碼碼流中的幀類型,提高解碼成功率,增強兼容性。
【專利說明】
一種流媒體處理方法及裝置
技術領域
[0001]本發(fā)明涉及電子技術領域,具體涉及流媒體處理技術領域,尤其一種流媒體處理方法及裝置。
【背景技術】
[0002]隨著流媒體技術的發(fā)展,用戶可以通過各種設備播放視頻,通常視頻播放都是將待解碼視頻流進行解碼播放,即是原始的視頻文件需要經(jīng)過編碼后形成待播放視頻流,待播放視頻流即是待解碼視頻流。當前主流視頻編碼格式是H264,在H264中規(guī)定了 32種不同的幀類型,在這32種幀類型中可以分為數(shù)據(jù)幀和非數(shù)據(jù)幀。其中,數(shù)據(jù)幀中包含視頻中各個圖像的數(shù)據(jù),非數(shù)據(jù)幀包含視頻配置信息,在H264算法中,待解碼視頻流中非數(shù)據(jù)幀間插進各個數(shù)據(jù)幀之間形成視頻幀。在對待解碼視頻流進行解碼處理時,解碼器必須能夠適應所有的幀類型才能夠成功解碼,但是由于設備機型各不相同,可能存在很多兼容性問題,例如,有些機型的設備中的芯片無法對某一個類型的幀進行識別解碼,就會出現(xiàn)解碼錯誤,從而導致視頻無法播放。
【發(fā)明內容】
[0003]本發(fā)明實施例提供一種流媒體處理方法及裝置,可對待解碼視頻流進行重新提取和整合,減少待解碼碼流中的幀類型,提高解碼成功率,增強兼容性。
[0004]本發(fā)明第一方面提供一種流媒體處理方法,可包括:
[0005]獲取待解碼視頻流中的視頻幀,所述視頻幀包括數(shù)據(jù)幀和非數(shù)據(jù)幀;
[0006]對所述視頻幀進行幀選擇處理,提取所述視頻流中的數(shù)據(jù)幀;
[0007]解析所述視頻流中的媒體文件頭數(shù)據(jù),獲取視頻配置信息;
[0008]將提取得到的所述數(shù)據(jù)幀整合為待解碼碼流,并利用所述視頻配置信息對所述待解碼碼流進行解碼處理。
[0009]本發(fā)明第二方面提供一種流媒體處理裝置,可包括:
[0010]第一獲取模塊,用于獲取待解碼視頻流中的視頻幀,所述視頻幀包括數(shù)據(jù)幀和非數(shù)據(jù)幀;
[0011 ] 提取模塊,用于對所述視頻幀進行幀選擇處理,提取所述視頻流中的數(shù)據(jù)幀;
[0012]解析模塊,用于解析所述視頻流中的媒體文件頭數(shù)據(jù),獲取視頻配置信息;
[0013]整合解碼模塊,用于將提取得到的所述數(shù)據(jù)幀整合為待解碼碼流,并利用所述視頻配置信息對所述待解碼碼流進行解碼處理。
[0014]實施本發(fā)明實施例,具有如下有益效果:
[0015]本發(fā)明實施例,獲取待解碼碼流中的視頻幀,該視頻幀包括數(shù)據(jù)幀和非數(shù)據(jù)幀,對該視頻幀進行幀選擇處理,提取視頻流中的數(shù)據(jù)幀,解析該視頻流中的媒體文件頭數(shù)據(jù),獲取視頻配置信息,將提取得到的數(shù)據(jù)幀整合為待解碼碼流,并利用視頻配置信息對待解碼碼流進行解碼處理。這種方式可以在進行解碼之前,將待解碼視頻流中的視頻幀進行重新提取和整合,只保留視頻幀中的數(shù)據(jù)幀,從而減少待解碼碼流中的幀類型,提高解碼成功率,增強兼容性。
【附圖說明】
[0016]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0017]圖1為本發(fā)明實施例提供的一種流媒體處理方法的流程圖;
[0018]圖2為本發(fā)明實施例提供的另一種流媒體處理方法的流程圖;
[0019]圖3為本發(fā)明實施例提供的一種瀏覽器中視頻流處理流程圖;
[0020]圖4為本發(fā)明實施例提供的一種幀選擇流程圖;
[0021]圖5為本發(fā)明實施例提供的一種流媒體處理裝置的結構示意圖;
[0022]圖6為本發(fā)明實施例提供的一種整合解碼模塊的結構示意圖;
[0023]圖7為本發(fā)明實施例提供的另一種流媒體處理裝置的結構示意圖。
【具體實施方式】
[0024]下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0025]本發(fā)明實施例的流媒體處理方法可以應用于用戶利用智能手機、個人電腦、個人數(shù)字助手等終端中的媒體播放軟件播放視頻的場景中,也可以應用于用戶在瀏覽器中播放視頻的應用場景中。在具體的應用場景中,在對待解碼視頻流進行解碼時,可以進行硬件解碼,即是利用終端的芯片中的多媒體處理單元進行解碼,也可以利用軟件解碼,即是編程序通過主處理器進行解碼。通常硬件解碼會使得播放視頻更加省電和流暢,因此在具體應用中通常采用硬件解碼。由于各種終端機型不同,因此并不是每種終端都能穩(wěn)定地支持硬件解碼。在當前主流的視頻編碼格式是H264,在H264中規(guī)定了 32種不同的幀類型,終端中的硬件解碼器應當能夠適應所有的幀類型才能穩(wěn)定地支持硬件解碼,由于不同品牌的芯片,加上安卓開放式的系統(tǒng),對待解碼視頻流可能存在兼容性問題,表現(xiàn)為解碼不正常,畫面有大塊的馬賽克現(xiàn)象,有些情況下會導致無法解碼卡死,甚至導致硬件崩潰等等,為解決此問題,本發(fā)明在對待解碼視頻流進行解碼之前,對待解碼視頻流進行流媒體處理,即是采用本發(fā)明提供的流媒體處理方法進行提取過濾后再進行解碼。這樣可以減少待解碼視頻流中的幀類型,提高解碼成功率,并且增強硬件解碼的兼容性。
[0026]下面將結合附圖1-附圖4,對本發(fā)明實施例提供的流媒體處理方法進行詳細介紹。
[0027]請參照圖1,為本發(fā)明實施例提供的一種流媒體處理方法的流程圖;該方法可包括以下步驟S100-步驟S103。
[0028]S100,獲取待解碼視頻流中的視頻幀,所述視頻幀包括數(shù)據(jù)幀和非數(shù)據(jù)幀;
[0029]具體實施例中,待解碼視頻流為進行編碼后的視頻流,當需要播放視頻時,需要對進行編碼后的視頻流進行解碼處理。待解碼視頻流中包括媒體文件頭數(shù)據(jù)以及視頻幀,其中視頻幀包括數(shù)據(jù)幀和非數(shù)據(jù)幀,數(shù)據(jù)幀中包含圖像數(shù)據(jù),非數(shù)據(jù)幀包含視頻配置信息。例如,在當前主流視頻編碼格式H264中規(guī)定了 32種不同的幀類型,在這32種不同的幀類型中,也分為數(shù)據(jù)幀和非數(shù)據(jù)幀,其中,數(shù)據(jù)幀包含關鍵幀和預測幀,關鍵幀為立即刷新圖像(instantaneous decoding refresh picture,I DR)幀,預測幀為 non IDR 幀,非數(shù)據(jù)幀包括的幀類型比較多,例如,序列參數(shù)集(sequence parameter set,SPS)幀,圖像參數(shù)集(picture parameter set,PPS)幀,補充增強信息(Supplemental EnhancementInformat1n, SEI)幀以及訪問單元分隔符(access unit delimiter, AUD)幀等等。
[0030]SlOl,對所述視頻幀進行幀選擇處理,提取所述視頻流中的數(shù)據(jù)幀;
[0031]具體實施例中,在對待解碼視頻流進行解碼處理時,解碼器應當能夠適應所有的幀類型,才能夠成功進行解碼,但是在解碼器中,由于不同品牌的芯片,加上安卓開放式系統(tǒng),對待解碼視頻流可能存在兼容性問題。對某一些幀類型無法進行正常解碼,具體表現(xiàn)為解碼不正常,畫面有大塊的馬賽克現(xiàn)象,有些情況下,會導致無法解碼卡死,甚至會導致硬件崩潰。因此,在本發(fā)明實施例中,在進行硬件解碼處理之前,先對待解碼視頻流中的視頻幀進行幀選擇處理,提取視頻流中包含圖像數(shù)據(jù)的數(shù)據(jù)幀。
[0032]可選的,在H264編碼格式中,即是從待解碼視頻流的視頻幀中第一個IDR幀開始提取視頻幀中所有的IDR幀和non IDR幀,去除其中的SPS幀和PPS幀,在進行幀選擇過濾處理后,減少了幀類型,以提高解碼成功率。
[0033]S102,解析所述視頻流中的媒體文件頭數(shù)據(jù),獲取視頻配置信息;
[0034]具體實施例中,在進行具體的解碼處理之前,需要解析視頻流中的媒體文件頭數(shù)據(jù),媒體文件頭數(shù)據(jù)存在于視頻文件的頭信息中。解析視頻流中的媒體文件頭數(shù)據(jù)可以獲取視頻配置信息。該視頻配置信息可以用于后續(xù)進行解碼處理的過程中。
[0035]S103,將提取得到的所述數(shù)據(jù)幀整合為待解碼碼流,并利用所述視頻配置信息對所述待解碼碼流進行解碼處理。
[0036]具體實施例中,將進行幀選擇處理后,所提取的數(shù)據(jù)幀整合為待解碼碼流,具體的整合方法可以是按照所提取的數(shù)據(jù)幀的原有順序進行整合。并利用通過解析視頻流中媒體文件頭數(shù)據(jù)所獲取的視頻配置信息對待解碼碼流進行解碼處理。
[0037]可選的,利用視頻配置信息對待解碼碼流進行解碼處理可以包括步驟SlO-Sll:
[0038]S10,利用所述視頻配置信息對硬件解碼器進行初始化;
[0039]具體實施例中,在利用硬件解碼器進行解碼處理之前,利用所獲取的視頻配置信息對硬件解碼器進行初始化。需要說明的是,若視頻配置信息的數(shù)據(jù)存在格式是H264協(xié)議中規(guī)定的字節(jié)流格式,需要將數(shù)據(jù)轉換為IS0-1EC-14496-12,IS0-1EC-14496-15中規(guī)定的格式,此格式為硬件解碼器初始化使用的格式。
[0040]S11,控制進行初始化的所述硬件解碼器對所述待解碼碼流進行解碼處理。
[0041]具體實施例中,利用視頻配置信息對硬件解碼器進行初始化處理后,控制進行初始化的硬件解碼器對待解碼碼流進行解碼處理。
[0042]需要說明的是,當用戶出現(xiàn)拖拉動作時,例如快進或者快退,則將最終拖拉停止的時間點最近的一個關鍵幀作為待解碼視頻流的起點,從該時間點的視頻流開始進行幀選擇處理,最后將所提取的數(shù)據(jù)幀整合為待解碼碼流。
[0043]本發(fā)明實施例,獲取待解碼碼流中的視頻幀,該視頻幀包括數(shù)據(jù)幀和非數(shù)據(jù)幀,對該視頻幀進行幀選擇處理,提取視頻流中的數(shù)據(jù)幀,解析該視頻流中的媒體文件頭數(shù)據(jù),獲取視頻配置信息,將提取得到的數(shù)據(jù)幀整合為待解碼碼流,并利用視頻配置信息對待解碼碼流進行解碼處理。這種方式可以在進行解碼之前,將待解碼視頻流中的視頻幀進行重新提取和整合,只保留視頻幀中的數(shù)據(jù)幀,從而減少待解碼碼流中的幀類型,提高解碼成功率,增強兼容性。
[0044]請參照圖2,為本發(fā)明實施例提供的另一種流媒體處理方法的流程圖;該方法可包括以下步驟S200-步驟S206。
[0045]S200,獲取待解碼視頻文件,并判斷所述待解碼視頻文件中的數(shù)據(jù)是否以字節(jié)流形式存在;
[0046]若是,則將所述待解碼視頻文件中的數(shù)據(jù)確定為待解碼視頻流;
[0047]若否,則將所述待解碼視頻文件進行格式轉換,獲得以字節(jié)流形式存在的待解碼視頻流。
[0048]具體實施例中,在進行幀選擇處理之前,獲取待解碼視頻文件,該視頻文件為進行編碼處理后的視頻文件,視頻文件中視頻幀的各個幀類型在不同的文件格式中以不同的形式存在,例如,可能是以IS0-1EC-14496-15中規(guī)定的格式,也可能是H264協(xié)議中規(guī)定的字節(jié)流格式,由于本發(fā)明實施例中進行幀選擇處理的過程主要是針對于字節(jié)流格式的數(shù)據(jù),因此需要判斷該待解碼視頻文件中的數(shù)據(jù)是否以字節(jié)流形式存在,若待解碼視頻文件是以字節(jié)流形式存在,則直接將待解碼視頻流中數(shù)據(jù)確定為待解碼視頻流。若待解碼視頻文件不是以字節(jié)流形式存在,則對該視頻文件進行格式轉換,獲得以字節(jié)流形式存在的待解碼視頻流,具體的轉換方法不作限定。
[0049]S201,獲取待解碼視頻流中的視頻幀,所述視頻幀包括數(shù)據(jù)幀和非數(shù)據(jù)幀;
[0050]可選的,所述數(shù)據(jù)幀包括關鍵幀和預測幀;所述視頻幀中包括多個組幀,其中每一個組幀包括一個關鍵幀和至少一個預測幀。
[0051]具體實施例中,視頻幀中各個幀的組成方式可以是以組幀的形式進行組合,習慣上也成為圖像組(group of picture,GOP),在每一個組幀中包括一個關鍵幀、至少一個預測幀以及非數(shù)據(jù)幀,例如,在H264的格式中,非數(shù)據(jù)幀可以包括SPS,PPS幀,組幀的形式可以為 SPS,PPS,SEI,IDR,non IDR, non IDR, non IDR, non IDR, non IDR, non IDR,視頻幀可以是多個組幀的組合。
[0052]S202,從所述視頻流中的第一個組幀中的關鍵幀開始提取所述視頻流中的數(shù)據(jù)幀。
[0053]具體實施例中,所提取的數(shù)據(jù)幀的首幀必須為關鍵幀,即是IDR幀,其它幀類型過濾。因此從視頻流中第一個組幀中的關鍵幀開始提取視頻流中的所有數(shù)據(jù)幀,即是IDR幀和 non IDR 幀。
[0054]S203,解析所述視頻流中的媒體文件頭數(shù)據(jù),獲取視頻配置信息;
[0055]本發(fā)明實施例步驟S203請參照圖1的實施例步驟S102,在此不再贅述。
[0056]S204,根據(jù)所述媒體文件頭數(shù)據(jù)生成序列參數(shù)集幀和圖像參數(shù)集幀;
[0057]具體實施例中,從待解碼視頻流中獲取媒體文件頭數(shù)據(jù),再對媒體文件頭數(shù)據(jù)進行流轉換生成序列參數(shù)集幀和圖像參數(shù)集幀。媒體文件頭數(shù)據(jù)包含的內容與視頻幀中的圖像參數(shù)集幀和序列參數(shù)集幀所包含的內容相同,只是所處位置不同,因此可以通過媒體文件頭數(shù)據(jù)生成序列參數(shù)集幀和圖像參數(shù)集幀。
[0058]S205,將提取得到的所述數(shù)據(jù)幀整合為待解碼碼流,在所述待解碼碼流的首幀之前插入所生成的所述序列參數(shù)集幀和所述圖像參數(shù)集幀;
[0059]具體實施例中,提取得到的數(shù)據(jù)幀整合為待解碼碼流,該待解碼碼流的首幀為IDR幀,在待解碼碼流的首幀之前插入所生成的序列參數(shù)集幀和圖像參數(shù)集幀。需要說明的是,某些機型的硬件解碼器不需要插入。
[0060]S206,利用所述視頻配置信息對進行插入處理后的所述待解碼碼流進行解碼處理。
[0061]具體實施例中,利用視頻配置信息對進行插入處理后的待解碼碼流進行解碼處理,具體的,可以是利用視頻配置信息對硬件解碼器進行初始化,控制進行初始化的硬件解碼器對進行插入處理后的待解碼碼流進行解碼處理。
[0062]本發(fā)明實施例,獲取待解碼碼流中的視頻幀,該視頻幀包括數(shù)據(jù)幀和非數(shù)據(jù)幀,對該視頻幀進行幀選擇處理,提取視頻流中的數(shù)據(jù)幀,解析該視頻流中的媒體文件頭數(shù)據(jù),獲取視頻配置信息,將提取得到的數(shù)據(jù)幀整合為待解碼碼流,并利用視頻配置信息對待解碼碼流進行解碼處理。這種方式可以在進行解碼之前,將待解碼視頻流中的視頻幀進行重新提取和整合,只保留視頻幀中的數(shù)據(jù)幀,從而減少待解碼碼流中的幀類型,提高解碼成功率,增強兼容性。
[0063]請參照圖3,為本發(fā)明實施例提供的一種瀏覽器中視頻處理流程圖,如圖所示,本發(fā)明實施例中的視頻處理流程包括以下步驟:
[0064]獲取待播放的視頻文件,判斷該視頻文件是否是以字節(jié)流形式存在;
[0065]若不是以字節(jié)流形式存在,則進行格式轉換,處理為字節(jié)流形式存在的待解碼視頻流;
[0066]若是字節(jié)流,則直接將該視頻文件確定為待解碼視頻流;
[0067]然后對待解碼視頻流利用流處理策略進行幀選擇處理,具體的可以是利用幀選擇方案進行幀選擇處理,幀選擇方案的具體內容請參照圖4 ;
[0068]進行幀選擇方案所提取的數(shù)據(jù)幀整合為待解碼碼流,并送入硬件解碼器;
[0069]控制硬件解碼器對待解碼碼流進行解碼處理。
[0070]進一步的請參照圖4,圖4為幀選擇方案的具體闡述;
[0071]提取待解碼視頻流中的meta數(shù)據(jù),進行流轉換獲得視頻配置信息,并利用視頻配置信息對硬件解碼器進行初始化;
[0072]同時根據(jù)meta數(shù)據(jù)生成非數(shù)據(jù)幀,非數(shù)據(jù)幀包括SEI,SPS,PPS幀,去除SEI幀,保留SPS,PPS幀,并將SPS,PPS幀插入首次IDR幀之前;
[0073]對待解碼視頻流中的視頻幀進行幀選擇過濾,從視頻幀的第一次IDR幀開始提取,并且在第一次IDR幀的前面插入根據(jù)meta數(shù)據(jù)所生成的SPS,PPS幀;
[0074]非首次IDR幀,則不需要插入SPS,PPS幀,且只需要提取IDR幀;
[0075]其它類型幀過濾,提取non IDR幀,將所提取的幀以及插入的幀整合為待解碼碼流送入硬件解碼器進行硬件解碼。
[0076]下面將結合附圖5-附圖7,對本發(fā)明實施例提供的一種流媒體處理裝置進行詳細介紹。
[0077]請參閱圖5,為本發(fā)明實施例提供的一種流媒體處理裝置的結構示意圖;該裝置可包括:第一獲取模塊100、提取模塊101、解析模塊102以及整合模塊103 ;
[0078]第一獲取模塊100,用于獲取待解碼視頻流中的視頻幀,所述視頻幀包括數(shù)據(jù)幀和非數(shù)據(jù)幀;
[0079]具體實施例中,待解碼視頻流為進行編碼后的視頻流,當需要播放視頻時,需要對進行編碼后的視頻流進行解碼處理。待解碼視頻流中包括媒體文件頭數(shù)據(jù)以及視頻幀,其中視頻幀包括數(shù)據(jù)幀和非數(shù)據(jù)幀,數(shù)據(jù)幀中包含圖像數(shù)據(jù),非數(shù)據(jù)幀包含視頻配置信息。例如,在當前主流視頻編碼格式H264中規(guī)定了 32種不同的幀類型,在這32種不同的幀類型中,也分為數(shù)據(jù)幀和非數(shù)據(jù)幀,其中,數(shù)據(jù)幀包含關鍵幀和預測幀,關鍵幀為立即刷新圖像(instantaneous decoding refresh picture,IDR)幀,預測幀為 non IDR 幀,非數(shù)據(jù)幀包括的幀類型比較多,例如,序列參數(shù)集(sequence parameter set,SPS)幀,圖像參數(shù)集(picture parameter set,PPS)幀,補充增強信息(Supplemental EnhancementInformat1n, SEI)幀以及訪問單元分隔符(access unit delimiter, AUD)幀等等。
[0080]提取模塊101,用于對所述視頻幀進行幀選擇處理,提取所述視頻流中的數(shù)據(jù)幀;
[0081]具體實施例中,在對待解碼視頻流進行解碼處理時,解碼器應當能夠適應所有的幀類型,才能夠成功進行解碼,但是在解碼器中,由于不同品牌的芯片,加上安卓開放式系統(tǒng),對待解碼視頻流可能存在兼容性問題。對某一些幀類型無法進行正常解碼,具體表現(xiàn)為解碼不正常,畫面有大塊的馬賽克現(xiàn)象,有些情況下,會導致無法解碼卡死,甚至會導致硬件崩潰。因此,在本發(fā)明實施例中,在進行硬件解碼處理之前,提取模塊101先對待解碼視頻流中的視頻幀進行幀選擇處理,提取視頻流中包含圖像數(shù)據(jù)的數(shù)據(jù)幀。
[0082]可選的,在H264編碼格式中,提取模塊101即是從待解碼視頻流的視頻幀中第一個IDR幀開始提取視頻幀中所有的IDR幀和non IDR幀,去除其中的SPS幀和PPS幀,在進行幀選擇過濾處理后,減少了幀類型,以提高解碼成功率。
[0083]解析模塊102,用于解析所述視頻流中的媒體文件頭數(shù)據(jù),獲取視頻配置信息;
[0084]具體實施例中,在進行具體的解碼處理之前,需要解析視頻流中的媒體文件頭數(shù)據(jù),媒體文件頭數(shù)據(jù)存在于視頻文件的頭信息中。解析模塊102解析視頻流中的媒體文件頭數(shù)據(jù)可以獲取視頻配置信息。該視頻配置信息可以用于后續(xù)進行解碼處理的過程中。
[0085]整合解碼模塊103,用于將提取得到的所述數(shù)據(jù)幀整合為待解碼碼流,并利用所述視頻配置信息對所述待解碼碼流進行解碼處理。
[0086]具體實施例中,整合解碼模塊103將進行幀選擇處理后,所提取的數(shù)據(jù)幀整合為待解碼碼流,整合解碼模塊103具體的整合方法可以是按照所提取的數(shù)據(jù)幀的原有順序進行整合。并利用通過解析視頻流中媒體文件頭數(shù)據(jù)所獲取的視頻配置信息對待解碼碼流進行解碼處理。
[0087]可選的,如圖6所示,整合解碼模塊103可以包括整合單元1030、初始化單元1031和控制單元1032 ;
[0088]整合單元1030,用于將提取得到的所述數(shù)據(jù)幀整合為待解碼碼流;
[0089]初始化單元1031,用于利用所述視頻配置信息對硬件解碼器進行初始化;
[0090]具體實施例中,在利用硬件解碼器進行解碼處理之前,初始化單元1031利用所獲取的視頻配置信息對硬件解碼器進行初始化。需要說明的是,若視頻配置信息的數(shù)據(jù)存在格式是H264協(xié)議中規(guī)定的字節(jié)流格式,需要將數(shù)據(jù)轉換為IS0-1EC-14496-12,IS0-1EC-14496-15中規(guī)定的格式,此格式為硬件解碼器初始化使用的格式。
[0091]控制單元1032,用于控制進行初始化的所述硬件解碼器對所述待解碼碼流進行解碼處理。
[0092]具體實施例中,利用視頻配置信息對硬件解碼器進行初始化處理后,控制單元1032控制進行初始化的硬件解碼器對待解碼碼流進行解碼處理。
[0093]需要說明的是,當用戶出現(xiàn)拖拉動作時,例如快進或者快退,則將最終拖拉停止的時間點最近的一個關鍵幀作為待解碼視頻流的起點,從該時間點的視頻流開始進行幀選擇處理,最后將所提取的數(shù)據(jù)幀整合為待解碼碼流。
[0094]本發(fā)明實施例,獲取待解碼碼流中的視頻幀,該視頻幀包括數(shù)據(jù)幀和非數(shù)據(jù)幀,對該視頻幀進行幀選擇處理,提取視頻流中的數(shù)據(jù)幀,解析該視頻流中的媒體文件頭數(shù)據(jù),獲取視頻配置信息,將提取得到的數(shù)據(jù)幀整合為待解碼碼流,并利用視頻配置信息對待解碼碼流進行解碼處理。這種方式可以在進行解碼之前,將待解碼視頻流中的視頻幀進行重新提取和整合,只保留視頻幀中的數(shù)據(jù)幀,從而減少待解碼碼流中的幀類型,提高解碼成功率,增強兼容性。
[0095]請參照圖7,為本發(fā)明實施例提供的另一種流媒體處理裝置的結構示意圖;本實施例的流媒體處理裝置是在圖6所示的流媒體處理裝置基礎上優(yōu)化得到的,如圖7所示,該裝置可包括第一獲取模塊200、提取模塊201、解析模塊202、整合解碼模塊203、第二獲取模塊204以及生成模塊205:
[0096]第二獲取模塊204,用于獲取待解碼視頻文件,并判斷所述待解碼視頻文件中的數(shù)據(jù)是否以字節(jié)流形式存在;若是,則將所述待解碼視頻文件中的數(shù)據(jù)確定為待解碼視頻流;若否,則將所述待解碼視頻文件進行格式轉換,獲得以字節(jié)流形式存在的待解碼視頻流。
[0097]具體實施例中,在進行幀選擇處理之前,第二獲取模塊204獲取待解碼視頻文件,該視頻文件為進行編碼處理后的視頻文件,視頻文件中視頻幀的各個幀類型在不同的文件格式中以不同的形式存在,例如,可能是以IS0-1EC-14496-15中規(guī)定的格式,也可能是H264協(xié)議中規(guī)定的字節(jié)流格式,由于本發(fā)明實施例中進行幀選擇處理的過程主要是針對于字節(jié)流格式的數(shù)據(jù),因此需要判斷該待解碼視頻文件中的數(shù)據(jù)是否以字節(jié)流形式存在,若待解碼視頻文件是以字節(jié)流形式存在,則直接將待解碼視頻流中數(shù)據(jù)確定為待解碼視頻流。若待解碼視頻文件不是以字節(jié)流形式存在,則對該視頻文件進行格式轉換,獲得以字節(jié)流形式存在的待解碼視頻流,具體的轉換方法不作限定。
[0098]第一獲取模塊200,用于獲取待解碼視頻流中的視頻幀,所述視頻幀包括數(shù)據(jù)幀和非數(shù)據(jù)幀;
[0099]可選的,所述數(shù)據(jù)幀包括關鍵幀和預測幀;所述視頻幀中包括多個組幀,其中每一個組幀包括一個關鍵幀和至少一個預測幀。
[0100]具體實施例中,視頻幀中各個幀的組成方式可以是以組幀的形式進行組合,習慣上也成為圖像組(group of picture,GOP),在每一個組幀中包括一個關鍵幀、至少一個預測幀以及非數(shù)據(jù)幀,例如,在H264的格式中,非數(shù)據(jù)幀可以包括SPS,PPS幀,組幀的形式可以為 SPS,PPS,SEI,IDR,non IDR, non IDR, non IDR, non IDR, non IDR, non IDR,視頻幀可以是多個組幀的組合。
[0101]提取模塊201具體用于從所述視頻流中的第一個組幀中的關鍵幀開始提取所述視頻流中的數(shù)據(jù)幀。
[0102]具體實施例中,所提取的數(shù)據(jù)幀的首幀必須為關鍵幀,即是IDR幀,其它幀類型過濾。因此提取模塊201從視頻流中第一個組幀中的關鍵幀開始提取視頻流中的所有數(shù)據(jù)幀,即是IDR幀和non IDR幀。
[0103]解析模塊202,用于解析所述視頻流中的媒體文件頭數(shù)據(jù),獲取視頻配置信息;
[0104]生成模塊205,用于根據(jù)所述媒體文件頭數(shù)據(jù)生成序列參數(shù)集幀和圖像參數(shù)集幀;
[0105]具體實施例中,從待解碼視頻流中獲取媒體文件頭數(shù)據(jù),生成模塊205再對媒體文件頭數(shù)據(jù)進行流轉換生成序列參數(shù)集幀和圖像參數(shù)集幀。媒體文件頭數(shù)據(jù)包含的內容與視頻幀中的圖像參數(shù)集幀和序列參數(shù)集幀所包含的內容相同,只是所處位置不同,因此可以通過媒體文件頭數(shù)據(jù)生成序列參數(shù)集幀和圖像參數(shù)集幀。
[0106]所述整合解碼模塊203具體用于將提取得到的所述數(shù)據(jù)幀整合為待解碼碼流,在所述待解碼碼流的首幀之前插入所生成的所述序列參數(shù)集幀和所述圖像參數(shù)集幀;并利用所述視頻配置信息對進行插入處理后的所述待解碼碼流進行解碼處理。
[0107]具體實施例中,提取得到的數(shù)據(jù)幀整合為待解碼碼流,該待解碼碼流的首幀為IDR幀,整合解碼模塊203在待解碼碼流的首幀之前插入所生成的序列參數(shù)集幀和圖像參數(shù)集幀。需要說明的是,某些機型的硬件解碼器不需要插入。
[0108]具體實施例中,利用視頻配置信息對進行插入處理后的待解碼碼流進行解碼處理,具體的,可以是利用視頻配置信息對硬件解碼器進行初始化,控制進行初始化的硬件解碼器對進行插入處理后的待解碼碼流進行解碼處理。
[0109]本發(fā)明實施例,獲取待解碼碼流中的視頻幀,該視頻幀包括數(shù)據(jù)幀和非數(shù)據(jù)幀,對該視頻幀進行幀選擇處理,提取視頻流中的數(shù)據(jù)幀,解析該視頻流中的媒體文件頭數(shù)據(jù),獲取視頻配置信息,將提取得到的數(shù)據(jù)幀整合為待解碼碼流,并利用視頻配置信息對待解碼碼流進行解碼處理。這種方式可以在進行解碼之前,將待解碼視頻流中的視頻幀進行重新提取和整合,只保留視頻幀中的數(shù)據(jù)幀,從而減少待解碼碼流中的幀類型,提高解碼成功率,增強兼容性。
[0110]本領域普通技術人員可以理解實現(xiàn)上述實施例方法中的全部或部分流程,是可以通過計算機程序來指令相關的硬件來完成,所述的程序可存儲于一計算機可讀取存儲介質中,附圖5-附圖7所示流媒體處理裝置的模塊或單元對應的程序可存儲在終端設備或服務器的可讀存儲介質內,并被該終端設備或服務器中的至少一個處理器執(zhí)行,以實現(xiàn)上述流媒體處理方法,該方法包括圖1至圖4中各方法實施例所述的流程。其中,所述的存儲介質可為磁碟、光盤、只讀存儲記憶體(Read-Only Memory, ROM)或隨機存儲記憶體(RandomAccess Memory, RAM)等。
[0111]以上所揭露的僅為本發(fā)明較佳實施例而已,當然不能以此來限定本發(fā)明之權利范圍,因此依本發(fā)明權利要求所作的等同變化,仍屬本發(fā)明所涵蓋的范圍。
【主權項】
1.一種流媒體處理方法,其特征在于,包括: 獲取待解碼視頻流中的視頻幀,所述視頻幀包括數(shù)據(jù)幀和非數(shù)據(jù)幀; 對所述視頻幀進行幀選擇處理,提取所述視頻流中的數(shù)據(jù)幀; 解析所述視頻流中的媒體文件頭數(shù)據(jù),獲取視頻配置信息; 將提取得到的所述數(shù)據(jù)幀整合為待解碼碼流,并利用所述視頻配置信息對所述待解碼碼流進行解碼處理。2.如權利要求1所述的方法,其特征在于,所述利用所述視頻配置信息對所述待解碼碼流進行解碼處理,包括: 利用所述視頻配置信息對硬件解碼器進行初始化; 控制進行初始化的所述硬件解碼器對所述待解碼碼流進行解碼處理。3.如權利要求1所述的方法,其特征在于,所述數(shù)據(jù)幀包括關鍵幀和預測幀; 所述視頻幀中包括多個組幀,其中每一個組幀包括一個關鍵幀和至少一個預測幀。4.如權利要求3所述的方法,其特征在于,所述對所述視頻幀進行幀選擇處理,提取所述視頻流中的數(shù)據(jù)幀,包括: 從所述視頻流中的第一個組幀中的關鍵幀開始提取所述視頻流中的數(shù)據(jù)幀。5.如權利要求4所述的方法,其特征在于,所述方法還包括: 根據(jù)所述媒體文件頭數(shù)據(jù)生成序列參數(shù)集幀和圖像參數(shù)集幀; 所述利用所述視頻配置信息對所述待解碼碼流進行解碼處理,包括: 在所述待解碼碼流的首幀之前插入所生成的所述序列參數(shù)集幀和所述圖像參數(shù)集幀; 利用所述視頻配置信息對進行插入處理后的所述待解碼碼流進行解碼處理。6.如權利要求1至5任一項所述的方法,其特征在于,所述獲取待解碼視頻流中的視頻幀之前,還包括: 獲取待解碼視頻文件,并判斷所述待解碼視頻文件中的數(shù)據(jù)是否以字節(jié)流形式存在; 若是,則將所述待解碼視頻文件中的數(shù)據(jù)確定為待解碼視頻流; 若否,則將所述待解碼視頻文件進行格式轉換,獲得以字節(jié)流形式存在的待解碼視頻流。7.一種流媒體處理裝置,其特征在于,包括: 第一獲取模塊,用于獲取待解碼視頻流中的視頻幀,所述視頻幀包括數(shù)據(jù)幀和非數(shù)據(jù)幀; 提取模塊,用于對所述視頻幀進行幀選擇處理,提取所述視頻流中的數(shù)據(jù)幀; 解析模塊,用于解析所述視頻流中的媒體文件頭數(shù)據(jù),獲取視頻配置信息; 整合解碼模塊,用于將提取得到的所述數(shù)據(jù)幀整合為待解碼碼流,并利用所述視頻配置信息對所述待解碼碼流進行解碼處理。8.如權利要求7所述的裝置,其特征在于,所述整合解碼模塊包括: 整合單元,用于將提取得到的所述數(shù)據(jù)幀整合為待解碼碼流; 初始化單元,用于利用所述視頻配置信息對硬件解碼器進行初始化; 控制單元,用于控制進行初始化的所述硬件解碼器對所述待解碼碼流進行解碼處理。9.如權利要求7所述的裝置,其特征在于,所述數(shù)據(jù)幀包括關鍵幀和預測幀; 所述視頻幀中包括多個組幀,其中每一個組幀包括一個關鍵幀和至少一個預測幀。10.如權利要求9所述的裝置,其特征在于,所述提取模塊具體用于從所述視頻流中的第一個組幀中的關鍵幀開始提取所述視頻流中的數(shù)據(jù)幀。11.如權利要求10所述的裝置,其特征在于,所述裝置還包括: 生成模塊,用于根據(jù)所述媒體文件頭數(shù)據(jù)生成序列參數(shù)集幀和圖像參數(shù)集幀; 所述整合解碼模塊具體用于將提取得到的所述數(shù)據(jù)幀整合為待解碼碼流,在所述待解碼碼流的首幀之前插入所生成的所述序列參數(shù)集幀和所述圖像參數(shù)集幀;并利用所述視頻配置信息對進行插入處理后的所述待解碼碼流進行解碼處理。12.如權利要求7至11任一項所述的裝置,其特征在于,所述裝置還包括: 第二獲取模塊,用于獲取待解碼視頻文件,并判斷所述待解碼視頻文件中的數(shù)據(jù)是否以字節(jié)流形式存在;若是,則將所述待解碼視頻文件中的數(shù)據(jù)確定為待解碼視頻流;若否,則將所述待解碼視頻文件進行格式轉換,獲得以字節(jié)流形式存在的待解碼視頻流。
【文檔編號】H04N21/4402GK106034252SQ201510110136
【公開日】2016年10月19日
【申請日】2015年3月12日
【發(fā)明人】陳俊峰
【申請人】深圳市騰訊計算機系統(tǒng)有限公司