本發(fā)明涉及視頻編碼技術(shù)領(lǐng)域,尤其涉及一種視頻圖像幀發(fā)送方法及裝置、。
背景技術(shù):
隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,用戶上網(wǎng)的帶寬越來越大,因此涌現(xiàn)了越來越多的在線視頻網(wǎng)站。用戶無需下載,即可通過瀏覽器或其他視頻應(yīng)用客戶端在線觀看視頻。視頻網(wǎng)站的服務(wù)器為了減少視頻傳輸中無謂的數(shù)據(jù)重復(fù),通常會(huì)使用視頻壓縮算法對(duì)視頻流進(jìn)行壓縮后再進(jìn)行傳輸(例如現(xiàn)有的H.264或H.265視頻壓縮算法),從而使得傳輸?shù)臄?shù)據(jù)量較小,提高帶寬利用率。
然而,發(fā)明人經(jīng)研究發(fā)現(xiàn),傳統(tǒng)技術(shù)中的視頻圖像幀發(fā)送方法至少存在以下問題:
傳統(tǒng)的視頻傳輸中的數(shù)據(jù)壓縮算法通常采用差值編碼,即對(duì)于一個(gè)圖像組,先將位于圖像組(Group of pictures,GOP)首位的圖像幀進(jìn)行幀內(nèi)壓縮編碼生成關(guān)鍵幀(即I幀,I frame,幀內(nèi)編碼幀),對(duì)于圖像序列中后續(xù)的圖像幀,通過計(jì)算其與圖像組前序或后序的圖像幀的差值生成差別幀(即P幀或B幀,P幀為前向估計(jì)差別幀,B幀為雙向估計(jì)差別幀)。因此,關(guān)鍵幀的數(shù)據(jù)量通常比較大(直接編碼原始圖像幀中的每個(gè)像素),而差別幀的數(shù)據(jù)量則較小(僅對(duì)差值部分的像素進(jìn)行編碼),如圖1所示,得到的編碼數(shù)據(jù)通常為的數(shù)據(jù)流量波動(dòng)起伏較大的波浪形數(shù)據(jù),由于在線視頻播放的連續(xù)性,導(dǎo)致關(guān)鍵幀的傳輸速度將低于視頻播放的碼率,因此帶寬利用率較低,對(duì)傳輸?shù)膸捥岢隽溯^高的要求,且在網(wǎng)絡(luò)質(zhì)量較差時(shí),較容易出現(xiàn)視頻卡頓的情況。
技術(shù)實(shí)現(xiàn)要素:
基于此,為了解決上述視頻數(shù)據(jù)傳輸?shù)膸捓寐瘦^低的技術(shù)問題,特提供了一種視頻圖像幀發(fā)送方法。
一種視頻圖像幀發(fā)送方法,包括:
采集原始圖像幀,將所述采集的原始圖像幀依次編碼成差別幀;
獲取預(yù)設(shè)的分軌序列位置,并行地將處于所述分軌序列位置的原始圖像幀編碼成下一個(gè)圖像組的關(guān)鍵幀;
切分所述關(guān)鍵幀,并將切分得到的數(shù)據(jù)作為附加數(shù)據(jù)添加到關(guān)鍵幀對(duì)應(yīng)的原始圖像幀的分軌序列位置后序的差別幀上;
依次發(fā)送所述差別幀和所述添加了附加數(shù)據(jù)的差別幀。
此外,為了解決上述視頻數(shù)據(jù)傳輸?shù)膸捓寐瘦^低的技術(shù)問題,特提供了一種視頻圖像幀發(fā)送裝置。
一種視頻圖像幀發(fā)送裝置,包括:
圖像采集模塊,用于采集原始圖像幀,將所述采集的原始圖像幀依次編碼成差別幀;
關(guān)鍵幀編碼模塊,用于獲取預(yù)設(shè)的分軌序列位置,并行地將處于所述分軌序列位置的原始圖像幀編碼成下一個(gè)圖像組的關(guān)鍵幀;
關(guān)鍵幀切分模塊,用于切分所述關(guān)鍵幀,并將切分得到的數(shù)據(jù)作為附加數(shù)據(jù)添加到關(guān)鍵幀對(duì)應(yīng)的原始圖像幀的分軌序列位置后序的差別幀上;
圖像幀發(fā)送模塊,用于依次發(fā)送所述差別幀和所述添加了附加數(shù)據(jù)的差別幀。
相應(yīng)的,為了解決上述視頻數(shù)據(jù)傳輸?shù)膸捓寐瘦^低的技術(shù)問題,特提供了一種視頻圖像幀接收方法。
一種視頻圖像幀接收方法,所述方法還包括:
依次接收差別幀,提取所述接收的差別幀包含的附加數(shù)據(jù)并緩存;
根據(jù)所述緩存的附加數(shù)據(jù)還原關(guān)鍵幀;
獲取接收到的差別幀的序列位置;
在該序列位置為圖像組起始的序列位置時(shí),根據(jù)所述還原的關(guān)鍵幀解碼得到原始圖像幀。
相應(yīng)的,為了解決上述視頻數(shù)據(jù)傳輸?shù)膸捓寐瘦^低的技術(shù)問題,特提供了一種視頻圖像幀接收裝置。
一種視頻圖像幀接收裝置,所述裝置還包括:
圖像幀接收模塊,用于依次接收差別幀,提取所述接收的差別幀包含的附加數(shù)據(jù)并緩存
關(guān)鍵幀還原模塊,用于根據(jù)所述緩存的附加數(shù)據(jù)還原關(guān)鍵幀;
序列位置獲取模塊,用于獲取接收到的差別幀的序列位置;
圖像組起始圖像幀解碼模塊,用于在該序列位置為圖像組起始的序列位置時(shí),根據(jù)所述還原的關(guān)鍵幀解碼得到原始圖像幀。
實(shí)施本發(fā)明實(shí)施例,將具有如下有益效果:
采用了上述視頻發(fā)送和接收方法之后,數(shù)據(jù)量較大的關(guān)鍵幀被平攤到了數(shù)據(jù)量相對(duì)較小的差別幀上進(jìn)行發(fā)送,發(fā)送方在傳輸位于關(guān)鍵幀前序的連續(xù)的差別幀時(shí),即可將該關(guān)鍵幀的數(shù)據(jù)作為差別幀的附加數(shù)據(jù)發(fā)送給接收方,接收方則可通過將該差別幀上附帶的附加數(shù)據(jù)進(jìn)行拼接還原得到數(shù)據(jù)量較大的關(guān)鍵幀。使得傳輸過程的數(shù)據(jù)流量波動(dòng)更加平滑,無需根據(jù)接收端的播放碼率而在短時(shí)間內(nèi)傳輸大量數(shù)據(jù),因此對(duì)帶寬的要求較小,提高了帶寬利用率,從而減少了在線視頻播放過程中的卡頓現(xiàn)象。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
其中:
圖1為傳統(tǒng)技術(shù)中視頻圖像幀差值編碼前后幀數(shù)據(jù)量大小對(duì)比圖;
圖2為一個(gè)實(shí)施例中一種視頻圖像幀發(fā)送方法的流程圖;
圖3為一個(gè)實(shí)施例中切分關(guān)鍵幀并添加到其前序差別幀進(jìn)行發(fā)送的過程示意圖;
圖4為一個(gè)實(shí)施例中兩路并發(fā)地對(duì)原始圖像序列編碼后切分關(guān)鍵幀并添加到其前序差別幀進(jìn)行發(fā)送的過程示意圖;
圖5為一個(gè)實(shí)施例中一種視頻圖像幀發(fā)送裝置的結(jié)構(gòu)示意圖;
圖6為一個(gè)實(shí)施例中一種視頻圖像幀接收方法的流程圖;
圖7為一個(gè)實(shí)施例中一種視頻圖像幀接收裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
視頻文件或視頻流由圖像序列組成,未經(jīng)過壓縮編碼的視頻文件或視頻流原始圖像在編碼前,每一幀的數(shù)據(jù)量均較大。如圖1所示,經(jīng)過壓縮編碼后,視頻文件或視頻流中的僅關(guān)鍵幀(即圖1中的I幀)的數(shù)據(jù)量較大,而差別幀的數(shù)據(jù)量較小,如圖1中P幀所示(P幀也就是前向估計(jì)差別幀)。
需要說明的是,根據(jù)壓縮算法的不同,差別幀也可以是B幀,即雙向估計(jì)差別幀,由于區(qū)分P幀和B幀對(duì)本發(fā)明的實(shí)際效果沒有實(shí)際影響,因此,為方便描述,在后續(xù)實(shí)施例中,僅以P幀為例表示差別幀,而在實(shí)際應(yīng)用中,根據(jù)壓縮算法的不同,差別幀既可以是P幀也可以是B幀)。
傳統(tǒng)技術(shù)中,在實(shí)時(shí)的視頻文件或視頻流傳輸時(shí),為了保證實(shí)時(shí)性,發(fā)送方通常將采集的原始圖像幀編碼后立即發(fā)送,接收方則在接收到數(shù)據(jù)后,立刻解碼然后播放。因此,由圖1即可看出,在單位時(shí)間(播放每一幀的時(shí)間)內(nèi)傳輸?shù)臄?shù)據(jù)量在傳輸I幀時(shí)較大,而在傳輸P幀時(shí)較小,造成數(shù)據(jù)的傳輸過程的數(shù)據(jù)流量波動(dòng)不平滑。且在當(dāng)帶寬限定,接收端播放碼率較高時(shí),若I幀的數(shù)據(jù)量過大,大于接收端播放碼率對(duì)應(yīng)的單位時(shí)間的數(shù)據(jù)傳輸量時(shí)(如圖1中虛線位置),則在I幀無法在規(guī)定的時(shí)間內(nèi)傳輸完畢,從而會(huì)造成視頻在播放時(shí)卡頓。
為解決上述傳統(tǒng)技術(shù)中視頻數(shù)據(jù)的傳輸過程的數(shù)據(jù)流量波動(dòng)起伏較大,導(dǎo)致帶寬利用率較低,從而容易造成播放時(shí)卡頓的技術(shù)問題,在一個(gè)實(shí)施例中,特提出了一種新的視頻圖像幀發(fā)送方法,該方法的執(zhí)行可依賴于計(jì)算機(jī)程序,可運(yùn)行于馮諾依曼體系的計(jì)算機(jī)系統(tǒng)之上。該計(jì)算機(jī)系統(tǒng)則可以是在線視頻點(diǎn)播系統(tǒng)的服務(wù)器、監(jiān)控系統(tǒng)的實(shí)時(shí)圖像采集設(shè)備等可接入網(wǎng)絡(luò)用于發(fā)送視頻數(shù) 據(jù)的計(jì)算機(jī)設(shè)備。
具體的,在本實(shí)施例中,該視頻圖像幀發(fā)送方法如圖2所示,包括:
步驟S102:采集原始圖像幀,將采集的原始圖像幀依次編碼成差別幀。
如圖3所示,原始圖像幀序列即為攝像頭采集的圖像幀,攝像頭采集的視頻由按照時(shí)間順序依次采集的圖像幀構(gòu)成(如圖1中的A序列)。由于攝像頭采集的圖像幀為通過光學(xué)成像得到原始圖像,未經(jīng)過編碼,因此數(shù)據(jù)量通常較大。而在圖1中,攝像頭每采集一幅原始圖像幀,則對(duì)其進(jìn)行差值編碼。如圖3中的C序列。也就是說,采集圖像幀和編碼圖像中的工作并行執(zhí)行,B序列伴隨著A序列生成。
需要說明的是,在本實(shí)施例中,總是會(huì)將原始圖像幀編碼成差別幀,而編碼差別幀時(shí)作為參考的圖像幀可以是前序的差別幀,也可以是并發(fā)編碼得到的關(guān)鍵幀(后續(xù)的步驟將詳細(xì)介紹)。且在本實(shí)施例中,采集原始圖像幀,將采集的原始圖像幀依次編碼成差別幀的步驟為持續(xù)的過程,伴隨著攝像頭開始工作進(jìn)行視頻采集而啟動(dòng),伴隨著攝像頭結(jié)束工作停止視頻采集而終止,對(duì)于后續(xù)的步驟S104至步驟S108并沒有嚴(yán)格的執(zhí)行先后順序的限定。
步驟S104:獲取預(yù)設(shè)的分軌序列位置,并行地將處于分軌序列位置的原始圖像幀編碼成下一個(gè)圖像組的關(guān)鍵幀。
步驟S106:切分關(guān)鍵幀,并將切分得到的數(shù)據(jù)作為附加數(shù)據(jù)添加到關(guān)鍵幀對(duì)應(yīng)的原始圖像幀的分軌序列位置后序的差別幀上。
步驟S108:依次發(fā)送差別幀和添加了附加數(shù)據(jù)的差別幀。
如圖3所示,在傳統(tǒng)技術(shù)中,若設(shè)定了圖像組長度固定為5,則依次每編碼一個(gè)關(guān)鍵幀,則后序相應(yīng)地編碼4個(gè)差別幀。例如請(qǐng)參考圖3中的B序列。
而在本實(shí)施例中,請(qǐng)參考圖3中的C序列,若預(yù)設(shè)的分軌序列位置為6(分軌序列位置即為需要并行編碼得到關(guān)鍵幀的序列位置),圖像組長度為9,則對(duì)于圖3中A序列的序列位置為6的原始圖像幀,則不僅需要執(zhí)行前述步驟S102,即根據(jù)前序的差別幀編碼該位置的原始圖像幀得到差別幀的步驟,還需要并行地將該序列位置為6的原始圖像幀編碼成下一個(gè)圖像組的關(guān)鍵幀。
也就是說,參考圖3所示,由于預(yù)設(shè)的圖像組長度為9,則當(dāng)攝像頭采集到序列位置為10的原始圖像幀,對(duì)其進(jìn)行差值編碼生成差別幀時(shí),將以根據(jù)序列位置為6的原始圖像幀并行編碼得到的關(guān)鍵幀作為參考,也就是說,該序列位 置為10的差別幀已屬于下一個(gè)圖像組,而該下一個(gè)圖像組的關(guān)鍵幀即為并行地對(duì)序列位置為6的原始圖像進(jìn)行編碼得到的關(guān)鍵幀(每個(gè)圖像組均包含一個(gè)作為參考的關(guān)鍵幀和依次排列的差別幀)。
該分軌序列位置可設(shè)置為周期性的值。例如,若圖像組長度設(shè)置為固定的L,則該分軌序列位置可設(shè)置為n×(L-1)+K。如上例中,若圖像組長度設(shè)置為固定的9,K設(shè)置為6,則該分軌序列位置即為6、14、22….等。
在另一個(gè)實(shí)施例中,分軌序列位置也可以是伴隨著編碼過程變化的值,可由編碼程序根據(jù)對(duì)原始圖像幀的數(shù)據(jù)量進(jìn)行預(yù)分析后設(shè)定。例如,將采集的原始圖像幀依次編碼成差別幀的步驟還包括:
通過判斷生成差別幀數(shù)據(jù)量是否大于或等于閾值,若是,則將該差別幀對(duì)應(yīng)的原始圖像并行地編碼成下一個(gè)圖像組的關(guān)鍵幀。
也就是說,可根據(jù)差別幀的數(shù)據(jù)量確定需要并行編碼得到關(guān)鍵幀的序列位置。如圖3所示,如在序列位置為6時(shí),通過預(yù)分析判斷得到該差別幀的數(shù)據(jù)量較大,則可將該序列位置6設(shè)置為需要并行編碼得到關(guān)鍵幀的序列位置(即分軌序列位置),從而在編碼序列位置6的原始圖像幀時(shí),可并行地再進(jìn)行幀內(nèi)編碼得到作為下一個(gè)圖像組的關(guān)鍵幀。
需要說明的是,上述方案也可結(jié)合執(zhí)行,可預(yù)先設(shè)置初始的需要進(jìn)行并行編碼關(guān)鍵幀的分軌序列位置,在編碼過程中,再根據(jù)差別幀的數(shù)據(jù)量調(diào)整需要進(jìn)行并行編碼關(guān)鍵幀的分軌序列位置,兩者并不矛盾。
如前述介紹,為了保證視頻聊天或監(jiān)控應(yīng)用的實(shí)時(shí)性,每采集一幀圖像即對(duì)其進(jìn)行編碼,每編碼一幀圖像即將其進(jìn)行傳輸,發(fā)送給接收方。參考圖3所示,對(duì)于分軌序列位置為6的圖像幀并行編碼得到的關(guān)鍵幀和差別幀,差別幀照常發(fā)送,而關(guān)鍵幀I則被切分成多個(gè)數(shù)據(jù)段,如圖3中的I1、I2、I3和I4,并附加在后續(xù)的序列位置為6、7、8、9的差別幀上(需要說明的是,若編碼關(guān)鍵幀的時(shí)間較長,也可附加在后續(xù)的7、8、9位置或者8、9位置的差別幀上,并不限于該分軌序列位置后序的所有的差別幀),得到添加了附加數(shù)據(jù)的差別幀上進(jìn)行發(fā)送,也就是說,隨著攝像頭采集原始圖像幀的進(jìn)行,時(shí)刻依次抵達(dá)序列位置為6、7、8、9時(shí),不僅發(fā)送依次進(jìn)行差值編碼得到的P幀,在每個(gè)時(shí)刻還同時(shí)發(fā)送該附加數(shù)據(jù),即隨著時(shí)刻的抵達(dá)依次發(fā)送P6+I1、P7+I2、P8+I3和P9+I4(P6、P7、P8和P9為序列位置6、7、8、9原始圖像幀編碼得到的差別幀)。
將關(guān)鍵幀附加在差別幀上時(shí),可在差別幀的數(shù)據(jù)段后先添加分隔符(自定義的一段標(biāo)識(shí)性數(shù)據(jù)),然后繼續(xù)附加切分得到的關(guān)鍵幀的字?jǐn)?shù)據(jù)段。
接收方在接收到該差別幀后,判斷其是否包含該分隔符,若包含,則表示該差別幀包含附加數(shù)據(jù),從而提取該附加數(shù)據(jù),直至檢測到接收了不包含分隔符的差別幀,即表示附加數(shù)據(jù)已接收完畢,然后可按照順序?qū)⒏郊訑?shù)據(jù)進(jìn)行拼接,即可還原該關(guān)鍵幀。而對(duì)于該未添加附加數(shù)據(jù)的差別幀,則意味著已進(jìn)入下一圖像組,可參考該還原的關(guān)鍵幀對(duì)其進(jìn)行解碼,從而得到解碼后的圖像幀。
如圖3中,接收的終端在連續(xù)接收到P6+I1、P7+I2、P8+I3和P9+I4后,即可提取得到I1、I2、I3和I4的數(shù)據(jù),從而還原得到下一圖像組的關(guān)鍵幀,而在接收P10時(shí),由于其沒有附加數(shù)據(jù),則可根據(jù)判定已進(jìn)入下一圖像組,可根據(jù)前述還原得到的關(guān)鍵幀對(duì)其進(jìn)行解碼(參考前述的編碼過程可知,P10的編碼過程也并不是參考的其前序的P9,而是參考該關(guān)鍵幀,因此圖像能夠順利解碼),從而得到解碼的圖像幀。
經(jīng)上述編碼后進(jìn)行傳輸,由圖3所示,發(fā)送方并不需要在實(shí)時(shí)播放速率限定的狹小時(shí)間區(qū)間內(nèi)將數(shù)據(jù)量較大的關(guān)鍵幀全部傳輸完畢,而可伴隨著多個(gè)數(shù)據(jù)量較小的差別幀進(jìn)行傳輸,因此瞬時(shí)傳輸?shù)臄?shù)據(jù)得到了分散,實(shí)時(shí)播放速率限定的狹小時(shí)間區(qū)間內(nèi)傳輸?shù)臄?shù)據(jù)量也可低于限定值,在實(shí)時(shí)播放時(shí),則不容易引起卡頓。也就是說,為了避免播放卡頓,需要的帶寬可減小,而不用為了在實(shí)時(shí)播放速率限定的狹小時(shí)間區(qū)間傳輸完成關(guān)鍵幀而浪費(fèi)較多的帶寬,從而提高了帶寬利用率。
具體的,在本實(shí)施例中,將采集的原始圖像幀依次編碼成差別幀的步驟還包括:
判斷切分得到的數(shù)據(jù)是否作為附加數(shù)據(jù)發(fā)送完畢,若是,則根據(jù)生成的下一個(gè)圖像組的關(guān)鍵幀將采集的原始圖像幀依次編碼成差別幀。
也就是說,可將生成的關(guān)鍵幀存儲(chǔ)在緩存中;在判斷添加了附加數(shù)據(jù)的差別幀是否發(fā)送完畢時(shí),可判斷緩存中是否剩余切分關(guān)鍵幀得到的數(shù)據(jù),若否,則發(fā)送完畢。
如前所述,為了保證視頻聊天或監(jiān)控應(yīng)用的實(shí)時(shí)性,每采集一幀圖像即對(duì)其進(jìn)行編碼,每編碼一幀圖像即將其進(jìn)行傳輸,發(fā)送給接收方。因此,可將并行編碼得到的關(guān)鍵幀存儲(chǔ)在緩存中,在發(fā)送后序的差別幀時(shí),則依次切分緩存 中的關(guān)鍵幀的部分?jǐn)?shù)據(jù)段作為附加數(shù)據(jù)添加到該差別幀上進(jìn)行發(fā)送,若在某時(shí)刻檢測到緩存中的被切分的關(guān)鍵幀的數(shù)據(jù)已發(fā)送完畢,則根據(jù)該作為下一個(gè)圖像組的關(guān)鍵幀對(duì)當(dāng)前序列位置的原始圖像幀進(jìn)行編碼。
如圖3中,在序列位置為6時(shí),并行編碼的到了作為下一圖像組的關(guān)鍵幀,可將其拷貝切分為I1、I2、I3和I4的數(shù)據(jù)緩存在緩存中,隨著攝像頭的采集,在序列位置為6、7、8和9的時(shí)刻,則依次取出I1、I2、I3和I4的數(shù)據(jù)作為附加數(shù)據(jù)發(fā)送P6+I1、P7+I2、P8+I3和P9+I4。到序列位置為10的時(shí)刻,由于檢測到緩存中的I1、I2、I3和I4的數(shù)據(jù)已發(fā)送完畢,則在序列位置為10的原始圖像幀進(jìn)行編碼時(shí),可參考該作為下一圖像組的關(guān)鍵幀(即I1+I2+I3+I4的數(shù)據(jù))進(jìn)行差值編碼。
進(jìn)一步的,并行地將處于分軌序列位置的原始圖像幀編碼成下一個(gè)圖像組的關(guān)鍵幀的步驟包括:
啟動(dòng)并發(fā)線程/進(jìn)程對(duì)分軌序列位置的原始圖像幀編碼;
根據(jù)生成的下一個(gè)圖像組的關(guān)鍵幀將采集的原始圖像幀依次編碼成差別幀的步驟包括:
通過該并發(fā)線程/進(jìn)程將采集的原始圖像幀依次編碼成差別幀。
在本實(shí)施例中,可由多路線程/進(jìn)程對(duì)原始圖像幀進(jìn)行編碼。如圖3中,隨著攝像頭的采集抵達(dá)序列位置為1至5時(shí),由線程/進(jìn)程A持續(xù)對(duì)原始圖像幀進(jìn)行編碼,而隨著攝像頭的采集抵達(dá)序列位置為6的時(shí)刻時(shí),可創(chuàng)建線程/進(jìn)程B,或者由線程池/進(jìn)程池中申請(qǐng)線程/進(jìn)程B,然后由線程/進(jìn)程B并行地對(duì)序列位置為6的原始圖像幀進(jìn)行幀內(nèi)編碼得到下一個(gè)圖像組的關(guān)鍵幀,而線程/進(jìn)程A仍然繼續(xù)對(duì)原始圖像幀進(jìn)行幀間編碼得到后續(xù)的P6、P7、P8和P9,而抵達(dá)序列位置為10的時(shí)刻時(shí),線程/進(jìn)程A經(jīng)判斷下一個(gè)圖像組的關(guān)鍵幀已發(fā)送完畢后,即I1、I2、I3和I4的數(shù)據(jù)已發(fā)送完畢后,則可將其注銷或者由線程池/進(jìn)程池回收,轉(zhuǎn)而由線程/進(jìn)程B繼續(xù)根據(jù)其編碼得到的下一個(gè)圖像組的關(guān)鍵幀對(duì)序列位置為10的原始圖像幀進(jìn)行幀間編碼得到P10。當(dāng)下一個(gè)需要并行編碼的分軌序列位置到來時(shí),則可創(chuàng)建或申請(qǐng)線程/進(jìn)程C,以此類推。
優(yōu)選的,并行地將處于所述分軌序列位置的原始圖像幀編碼成下一個(gè)圖像組的關(guān)鍵幀的步驟還包括:
獲取分軌序列位置對(duì)應(yīng)的編碼參數(shù),根據(jù)編碼參數(shù)將處于序列位置的原始 圖像幀編碼成下一個(gè)圖像組的關(guān)鍵幀。
如上例中,可為線程/進(jìn)程設(shè)定各自對(duì)應(yīng)的編碼參數(shù),由于線程/進(jìn)程總是在需要并行編碼成關(guān)鍵幀的序列位置時(shí)創(chuàng)建或申請(qǐng),因此該編碼參數(shù)也與分軌序列位置對(duì)應(yīng)。
編碼參數(shù)可包括碼率、壓縮比和/或圖像組長度等參數(shù)??筛鶕?jù)帶寬和差別幀的數(shù)據(jù)量大小來調(diào)節(jié)編碼參數(shù)。如上例中,在創(chuàng)建或申請(qǐng)線程/進(jìn)程B時(shí),若檢測到帶寬減小,則可為線程/進(jìn)程B設(shè)置較大的壓縮比的編碼參數(shù),而在創(chuàng)建或申請(qǐng)線程/進(jìn)程C時(shí),檢測到帶寬恢復(fù),則可設(shè)置較小的壓縮比的編碼參數(shù)。
在本實(shí)施例中,將切分得到的數(shù)據(jù)作為附加數(shù)據(jù)添加到關(guān)鍵幀對(duì)應(yīng)的原始圖像幀的序列位置后序的差別幀上的步驟還包括:
獲取預(yù)設(shè)的圖像組長度,根據(jù)圖像組長度確定分軌序列位置后序的差別幀的數(shù)目,將切分得到的數(shù)據(jù)作為附加數(shù)據(jù)添加到關(guān)鍵幀對(duì)應(yīng)的原始圖像幀的分軌序列位置后序的該數(shù)目的差別幀上。
如前所述,圖像組長度可預(yù)先設(shè)定,也可由為編碼線程/進(jìn)程設(shè)置的編碼參數(shù)設(shè)定,也可在編碼過程中根據(jù)具體的編碼算法設(shè)定。如圖3所示,若圖像組長度為9,而分軌序列位置為6,則可將根據(jù)分軌序列位置編碼得到的關(guān)鍵幀平均切分成I1、I2、I3和I4四份,然后附加在P6、P7、P8和P9上。
在一個(gè)實(shí)施例中,切分關(guān)鍵幀的步驟還可包括:獲取帶寬參數(shù),根據(jù)帶寬參數(shù)和分軌序列位置后序的差別幀的數(shù)據(jù)量切分關(guān)鍵幀。
可根據(jù)帶寬參數(shù)計(jì)算播放的時(shí)間區(qū)間內(nèi)最大可傳輸?shù)臄?shù)據(jù)量的大小,然后再獲取被附加的差別幀的大小,然后根據(jù)兩者的差值設(shè)置切分關(guān)鍵幀的數(shù)據(jù)量的大小,從而可更高效地利用帶寬資源,也可盡快的將下一個(gè)圖像組的關(guān)鍵幀傳輸至接收方,從而避免編碼關(guān)鍵幀的原始圖像幀和以其作為參考編碼差別幀的原始圖像幀相隔時(shí)間過長(如圖3中,序列位置為10的圖像幀編碼得到的差別幀其參考為序列位置為6的圖像幀,期間需要經(jīng)歷7、8、9三個(gè)圖像幀,若序列位置為6的圖像幀并行編碼得到的關(guān)鍵幀能夠快速傳輸完畢,則可調(diào)整圖像組的大小,提前對(duì)后序的圖像幀根據(jù)該關(guān)鍵幀編碼差別幀,如圖4中,切分成I1、I2和I3即可將該關(guān)鍵幀數(shù)據(jù)傳輸完,因此在9位置即可根據(jù)該關(guān)鍵幀編碼差別幀,即可縮小該時(shí)間差距)而導(dǎo)致編碼的差別幀數(shù)據(jù)量較大。
在一個(gè)實(shí)施例中,為解決上述傳統(tǒng)技術(shù)中視頻數(shù)據(jù)的傳輸過程的數(shù)據(jù)流量波動(dòng)起伏較大,導(dǎo)致帶寬利用率較低,從而容易造成播放時(shí)卡頓的技術(shù)問題,還相應(yīng)地提出了一種視頻圖像幀發(fā)送裝置,如圖5所示,該包括圖像采集模塊102、關(guān)鍵幀編碼模塊104、關(guān)鍵幀切分模塊106和圖像幀發(fā)送模塊108,其中:
圖像采集模塊102,用于采集原始圖像幀,將所述采集的原始圖像幀依次編碼成差別幀。
關(guān)鍵幀編碼模塊104,用于獲取預(yù)設(shè)的分軌序列位置,并行地將處于所述分軌序列位置的原始圖像幀編碼成下一個(gè)圖像組的關(guān)鍵幀。
關(guān)鍵幀切分模塊106,用于切分所述關(guān)鍵幀,并將切分得到的數(shù)據(jù)作為附加數(shù)據(jù)添加到關(guān)鍵幀對(duì)應(yīng)的原始圖像幀的分軌序列位置后序的差別幀上。
圖像幀發(fā)送模塊108,用于依次發(fā)送所述差別幀和所述添加了附加數(shù)據(jù)的差別幀。
在本實(shí)施例中,圖像采集模塊102還用于判斷所述切分得到的數(shù)據(jù)是否作為附加數(shù)據(jù)是否發(fā)送完畢,若是,則根據(jù)所述生成的下一個(gè)圖像組的關(guān)鍵幀將所述采集的原始圖像幀依次編碼成差別幀。
在本實(shí)施例中,關(guān)鍵幀編碼模塊104還用于啟動(dòng)并發(fā)線程/進(jìn)程對(duì)所述分軌序列位置的原始圖像幀編碼;
圖像采集模塊102還用于通過該并發(fā)線程/進(jìn)程將所述采集的原始圖像幀依次編碼成差別幀。
在本實(shí)施例中,關(guān)鍵幀編碼模塊104還用于將所述生成的關(guān)鍵幀存儲(chǔ)在緩存中。
圖像采集模塊102還用于判斷所述緩存中是否剩余切分所述關(guān)鍵幀得到的數(shù)據(jù),若否,則判定發(fā)送完畢。
在本實(shí)施例中,關(guān)鍵幀編碼模塊104還用于通過判斷生成差別幀數(shù)據(jù)量是否大于或等于閾值,若是,則將該差別幀對(duì)應(yīng)的原始圖像并行地編碼成下一個(gè)圖像組的關(guān)鍵幀。
在本實(shí)施例中,關(guān)鍵幀切分模塊106還用于獲取預(yù)設(shè)的圖像組長度,根據(jù)所述圖像組長度確定所述分軌序列位置后序的差別幀的數(shù)目,將切分得到的數(shù)據(jù)作為附加數(shù)據(jù)添加到關(guān)鍵幀對(duì)應(yīng)的原始圖像幀的分軌序列位置后序的該數(shù)目的差別幀上。
在本實(shí)施例中,關(guān)鍵幀編碼模塊104還用于獲取所述分軌序列位置對(duì)應(yīng)的編碼參數(shù),根據(jù)所述編碼參數(shù)將處于所述分軌序列位置的原始圖像幀編碼成下一個(gè)圖像組的關(guān)鍵幀。
在本實(shí)施例中,關(guān)鍵幀切分模塊106還用于獲取帶寬參數(shù),根據(jù)所述帶寬參數(shù)和所述分軌序列位置后序的差別幀的數(shù)據(jù)量切分所述關(guān)鍵幀。
為解決上述傳統(tǒng)技術(shù)中視頻數(shù)據(jù)的傳輸過程數(shù)據(jù)流量波動(dòng)起伏較大,導(dǎo)致帶寬利用率較低,從而容易造成播放時(shí)卡頓的技術(shù)問題,在一個(gè)實(shí)施例中,還相應(yīng)地提出了一種新的視頻圖像幀發(fā)送方法,該方法的執(zhí)行可依賴于計(jì)算機(jī)程序,可運(yùn)行于馮諾依曼體系的計(jì)算機(jī)系統(tǒng)之上。
具體的,如圖6所示,該方法包括:
步驟S202,依次接收差別幀,提取所述接收的差別幀包含的附加數(shù)據(jù)并緩存。
步驟S204,根據(jù)所述緩存的附加數(shù)據(jù)還原關(guān)鍵幀。
步驟S206,獲取接收到的差別幀的序列位置。
步驟S208,在該序列位置為圖像組起始的序列位置時(shí),根據(jù)所述還原的關(guān)鍵幀解碼得到原始圖像幀。
接收的終端在接收到差別幀后,則判斷其是否包含附加數(shù)據(jù),若是,則將其提取并緩存。如圖3所示,若接收的終端在依次接收了序列位置為6、7、8和9的圖像幀后,即可提取到附加的I1、I2、I3和I4的數(shù)據(jù),從而可根據(jù)緩存中的數(shù)據(jù)還原得到完整的關(guān)鍵幀。在接收序列位置為10的差別幀時(shí),由于該序列位置已為下一個(gè)圖像組的起始位置,則可根據(jù)還原得到的關(guān)鍵幀對(duì)序列位置為10的差別幀進(jìn)行解碼得到圖像幀。而在接收到序列位置為11的差別幀時(shí),則可根據(jù)序列位置為10的差別幀和該關(guān)鍵幀解碼得到圖像幀。
在一個(gè)實(shí)施例中,為解決上述傳統(tǒng)技術(shù)中視頻數(shù)據(jù)的傳輸過程數(shù)據(jù)流量波動(dòng)起伏較大,導(dǎo)致帶寬利用率較低,從而容易造成播放時(shí)卡頓的技術(shù)問題,還相應(yīng)地提出了一種視頻圖像幀接收裝置,如圖7所示,該包括圖像幀接收模塊102、附加數(shù)據(jù)提取模塊104、關(guān)鍵幀還原模塊106和原始圖像解碼模塊108,其中:
圖像幀接收模塊202,用于圖像幀接收模塊,用于依次接收差別幀,提取所述接收的差別幀包含的附加數(shù)據(jù)并緩存
關(guān)鍵幀還原模塊204,用于根據(jù)所述緩存的附加數(shù)據(jù)還原關(guān)鍵幀;
序列位置獲取模塊206,用于獲取接收到的差別幀的序列位置;
圖像組起始圖像幀解碼模塊208,用于在該序列位置為圖像組起始的序列位置時(shí),根據(jù)還原的關(guān)鍵幀解碼得到原始圖像幀。
綜上所述,實(shí)施本發(fā)明實(shí)施例,將具有如下有益效果:
采用了上述視頻發(fā)送和接收方法之后,數(shù)據(jù)量較大的關(guān)鍵幀被平攤到了數(shù)據(jù)量相對(duì)較小的差別幀上進(jìn)行發(fā)送,發(fā)送方在傳輸位于關(guān)鍵幀前序的連續(xù)的差別幀時(shí),即可將該關(guān)鍵幀的數(shù)據(jù)作為差別幀的附加數(shù)據(jù)發(fā)送給接收方,接收方則可通過將該差別幀上附帶的附加數(shù)據(jù)進(jìn)行拼接還原得到數(shù)據(jù)量較大的關(guān)鍵幀。使得傳輸過程的過程數(shù)據(jù)流量波動(dòng)更加平滑,無需根據(jù)接收端的播放碼率而在短時(shí)間內(nèi)傳輸大量數(shù)據(jù),因此對(duì)帶寬的要求較小,提高了帶寬利用率,從而減少了在線視頻播放過程中的卡頓現(xiàn)象。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過計(jì)算機(jī)程序來指令相關(guān)的硬件來完成,所述的程序可存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁碟、光盤、只讀存儲(chǔ)記憶體(Read-Only Memory,ROM)或隨機(jī)存儲(chǔ)記憶體(Random Access Memory,RAM)等。
以上所揭露的僅為本發(fā)明較佳實(shí)施例而已,當(dāng)然不能以此來限定本發(fā)明之權(quán)利范圍,因此依本發(fā)明權(quán)利要求所作的等同變化,仍屬本發(fā)明所涵蓋的范圍。