實時轉(zhuǎn)碼的實時控制方法及裝置的制造方法
【專利摘要】本發(fā)明實施例提供一種實時轉(zhuǎn)碼的實時控制方法及裝置。在轉(zhuǎn)碼過程中實時獲取當前編碼的反饋信息;根據(jù)所述反饋信息計算當前一定數(shù)量編碼幀的實際耗時;根據(jù)預先計算的期望耗時與所述實際耗時計算所述一定數(shù)量編碼幀的耗時偏差;根據(jù)所述耗時偏差,調(diào)整編碼參數(shù)進行轉(zhuǎn)碼控制。實現(xiàn)了在有限的轉(zhuǎn)碼資源情況下,仍能提供流暢的直播體驗的轉(zhuǎn)碼。
【專利說明】
實時轉(zhuǎn)碼的實時控制方法及裝置
技術(shù)領域
[0001] 本發(fā)明實施例涉及視頻技術(shù)領域,尤其涉及一種實時轉(zhuǎn)碼的實時控制方法及裝 置。
【背景技術(shù)】
[0002] 近年來,廣播以及IP網(wǎng)絡視頻應用的發(fā)展,高清視頻時代正式來臨。對數(shù)字設備來 說,視頻畫面質(zhì)量大幅提升的同時也給視頻內(nèi)容處理帶來不便。
[0003] 隨著云計算及虛擬化技術(shù)越來越多的普及和應用,云端實時轉(zhuǎn)碼已經(jīng)成為目前互 聯(lián)網(wǎng)視頻網(wǎng)站普遍采用的方式。實時轉(zhuǎn)碼是近年來高速發(fā)展和逐步廣泛應用的一種視頻轉(zhuǎn) 碼技術(shù),功能上與離線轉(zhuǎn)碼一致。
[0004] 實時轉(zhuǎn)碼對CPU及內(nèi)存的消耗是巨大的,如何在有限的轉(zhuǎn)碼資源情況下,仍能提供 流暢的直播體驗的轉(zhuǎn)碼是一個亟待解決的技術(shù)問題。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明實施例提供一種實時轉(zhuǎn)碼的實時控制方法及裝置,用以解決現(xiàn)有技術(shù)中, 實時轉(zhuǎn)碼系統(tǒng)資源不足導致轉(zhuǎn)碼不流暢的缺陷,實現(xiàn)視頻轉(zhuǎn)碼的實時控制,保證了直播的 流暢性。
[0006] 本發(fā)明實施例提供一種實時轉(zhuǎn)碼的實時控制方法,包括:
[0007] 在轉(zhuǎn)碼過程中實時獲取當前編碼的反饋信息;
[0008] 根據(jù)所述反饋信息計算當前一定數(shù)量編碼幀的實際耗時;
[0009] 根據(jù)預先計算的期望耗時與所述實際耗時計算所述一定數(shù)量編碼幀的耗時偏差;
[0010] 根據(jù)所述耗時偏差,調(diào)整編碼參數(shù)進行轉(zhuǎn)碼控制。
[0011] 本發(fā)明實施例提供一種實時轉(zhuǎn)碼的實時控制裝置,包括:
[0012] 信息獲取模塊,用于在轉(zhuǎn)碼過程中實時獲取當前編碼的反饋信息;
[0013] 計算模塊,用于根據(jù)所述反饋信息計算當前一定數(shù)量編碼幀的實際耗時;根據(jù)預 先計算的期望耗時與所述實際耗時計算所述一定數(shù)量編碼幀的耗時偏差;
[0014] 轉(zhuǎn)碼控制模塊,用于根據(jù)所述耗時偏差,調(diào)整編碼參數(shù)進行轉(zhuǎn)碼控制。
[0015] 本發(fā)明實施例提供的實時轉(zhuǎn)碼的實時控制方法及裝置,通過對編碼過程進行監(jiān) 控,實時獲取編碼過程的反饋信息,根據(jù)反饋信息對編碼的復雜度參數(shù)進行調(diào)整,從而實現(xiàn) 了轉(zhuǎn)碼系統(tǒng)性能的調(diào)整,使得轉(zhuǎn)碼過程不會因為服務器的負載,而影響直播的流暢性;與此 同時,本發(fā)明實施例提出的技術(shù)方案算法和框架實現(xiàn)較為簡單,很容易擴展至其它的轉(zhuǎn)碼 器,如 H.265。
【附圖說明】
[0016] 為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā) 明的一些實施例,對于本領域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根 據(jù)這些附圖獲得其他的附圖。
[0017]圖1為本發(fā)明實施例一的技術(shù)流程圖;
[0018] 圖2為本發(fā)明實實施例耗時偏差等級與編碼參數(shù)映射示例圖;
[0019] 圖3為本發(fā)明實施例二的裝置結(jié)構(gòu)示意圖。
【具體實施方式】
[0020] 為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例 中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是 本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領域普通技術(shù)人員 在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0021] 實施例一
[0022] 圖1是本發(fā)明實施例一的技術(shù)流程圖,結(jié)合圖1,本發(fā)明實施例一種實時轉(zhuǎn)碼的實 時控制方法主要包括如下的步驟:
[0023] 步驟110:在轉(zhuǎn)碼過程中實時獲取當前編碼的反饋信息;
[0024] 視頻轉(zhuǎn)碼(Video Transcoding)是指將已經(jīng)壓縮編碼的視頻碼流轉(zhuǎn)換成另一個視 頻碼流,以適應不同的網(wǎng)絡帶寬、不同的終端處理能力和不同的用戶需求。轉(zhuǎn)碼本質(zhì)上是一 個先解碼,再編碼的過程,本發(fā)明實施例的核心在于,根據(jù)編碼的反饋信息來控制編碼的編 碼復雜度參數(shù),從而實現(xiàn)轉(zhuǎn)碼的實時控制。
[0025] 本實施例所述的反饋信息包括轉(zhuǎn)碼的幀率值、當前一定數(shù)量編碼幀中每一幀的編 碼耗時等,其中,幀率(Frame rate)即為每秒編碼的幀數(shù)。
[0026] 轉(zhuǎn)碼器以默認編碼參數(shù)進行轉(zhuǎn)碼,在轉(zhuǎn)碼過程中,實時監(jiān)控編碼器的性能。通常編 碼器為了更好的進行幀率控制,通常都會有l(wèi)ookahead buffeHLAB,先行緩沖),來實時分 析輸入內(nèi)容的復雜度。
[0027] 如果設置LAB = 25,那么真正的第一個編碼幀會在25幀之后輸出,同理,若設置LAB = 30,那么真正的第一個編碼幀會在30幀之后輸出。
[0028] 根據(jù)所述幀率值計算所述一定數(shù)量編碼幀的所述期望耗時的計算公式如下:
[0029] time_expected =幀數(shù) / 幀率值
[0030]其中,time_expected為所述期望耗時,幀數(shù)為所述一定數(shù)量編碼幀的總數(shù)。
[0031] 假設當前幀率為25fps/s,設置LAB =幀率值= 25,則編碼器的延時為Is。若LAB = 30,則需根據(jù)幀率換算編碼器編碼完成30幀的耗時時間的換算結(jié)果為(30Xls)/25 = l.2s。
[0032] 步驟120:根據(jù)所述反饋信息計算當前一定數(shù)量編碼幀的實際耗時;
[0033] 從所述反饋信息中獲取所述一定數(shù)量編碼幀中每一幀的編碼耗時,累加得到所述 一定數(shù)量編碼幀的實際耗時。具體計算公式如下所示:
[0034]
[0035] 其中,time_elasped為所述實際耗時,time_frame為所述每一幀的編碼耗時,N為 編碼幀數(shù)量的總和,i為每一幀的序號,其中i e [ 1,N]。
[0036]步驟130:根據(jù)預先計算的期望耗時與所述實際耗時計算所述一定數(shù)量編碼幀的 耗時偏差;
[0037]耗時偏差計算公式如下:
[0038] time_delta= (timeeiasped-timeexpected)/time_expected
[0039] 其中,time_delta為耗時偏差值,time_expected為期望耗時。
[0040] 步驟140:根據(jù)所述耗時偏差,調(diào)整編碼參數(shù)進行轉(zhuǎn)碼控制。
[0041] 本發(fā)明實施例中,預先設置耗時偏差等級,并對每個所述耗時偏差等級預設需調(diào) 整的編碼參數(shù)。
[0042] 本實施例中,耗時偏差等級的示例如下:
[0043] enc_delay_thresh_0 = 10 ;
[0044] enc_delay_thresh_10 = 30 ;
[0045] enc_delay_thresh_30 = 50 ;
[0046] enc_delay_thresh_50 = 70 ;
[0047] enc_delay_thresh_70 = 100 ;
[0048] enc_delay_thresh_100 = 200 ;
[0049] 其中,enc_delay_thresh_0至enc_delay_thresh_100表不編碼器實際編碼耗時與 期望耗時的不同偏差值,本發(fā)明實施例以百分比作為實際編碼耗時與期望耗時的差異,如 enc_delay_thresh_0表示實際編碼耗時與期望耗時偏差為10%,以Is為單位,則表示偏差 為100ms。當然上述數(shù)據(jù)僅供舉例使用,對本發(fā)明實施例并不構(gòu)成限制。
[0050] 當步驟130中,計算出耗時偏差time_delta后,根據(jù)所述耗時偏差,查詢預先設置 的所述耗時偏差等級,獲得相應的編碼參數(shù),并對所述編碼進行相應的參數(shù)調(diào)整。當然對應 每個參數(shù)調(diào)整對整體系統(tǒng)性能的貢獻,預先會做具體的分析。
[0051] 圖2為本發(fā)明實實施例耗時偏差等級與編碼參數(shù)映射示例圖,參考圖2,前一個耗 時偏差等級區(qū)間為下一個耗時偏差等級區(qū)間的子集。圖2中,thresh為不同的耗時偏差等 級,參數(shù)NULL:偏差在10%之內(nèi),認為可以不做調(diào)整;參數(shù)Disable_i8x8:不做i_8x8的幀內(nèi) 預測,只做丨_414和;!_16116 ;參數(shù)Subme-1:亞像素運動估計復雜度,減1為在現(xiàn)有參數(shù)基礎 上減1;參數(shù)Subme-2:亞像素運動估計復雜度,減2為在現(xiàn)有參數(shù)基礎上減2;參數(shù)Subme-3: 亞像素運動估計復雜度,減3為在現(xiàn)有參數(shù)基礎上減3;參數(shù)ME_RANGE:運動估計搜索范圍; 幾個參數(shù)組合在一起表示幾個參數(shù)同時調(diào)整,以此來降低編碼復雜度。
[0052] 本實施例通過對編碼過程進行監(jiān)控,實時獲取編碼過程的反饋信息,根據(jù)反饋信 息對編碼的復雜度參數(shù)進行調(diào)整,從而實現(xiàn)了轉(zhuǎn)碼系統(tǒng)性能的調(diào)整,使得轉(zhuǎn)碼過程不會因 為服務器的負載,而影響直播的流暢性,從而提升了用戶的觀看體驗。
[0053] 實施例二
[0054]圖3是本發(fā)明實施例二的裝置結(jié)構(gòu)示意圖,結(jié)合圖3,本發(fā)明實施例一種實時轉(zhuǎn)碼 的實時控制裝置,主要包括如下模塊:信息獲取模塊310、計算模塊320、轉(zhuǎn)碼控制模塊330。 [0055]所述信息獲取模塊310,用于在轉(zhuǎn)碼過程中實時獲取當前編碼的反饋信息;
[0056]所述計算模塊320,用于根據(jù)所述反饋信息計算當前一定數(shù)量編碼幀的實際耗時; 根據(jù)預先計算的期望耗時與所述實際耗時計算所述一定數(shù)量編碼幀的耗時偏差;
[0057]所述轉(zhuǎn)碼控制模塊330,用于根據(jù)所述耗時偏差,調(diào)整編碼參數(shù)進行轉(zhuǎn)碼控制。
[0058] 具體地,所述計算模塊320進一步用于:從所述反饋信息中獲取所述一定數(shù)量編碼 幀中每一幀的編碼耗時,累加得到所述一定數(shù)量編碼幀的實際耗時。
[0059] 具體地,所述計算模塊320進一步用于:在計算所述一定數(shù)量編碼幀的耗時偏差之 前,獲取所述編碼的幀率值,根據(jù)所述幀率值計算所述一定數(shù)量編碼幀的所述期望耗時。
[0060] 具體地,所述轉(zhuǎn)碼控制模塊330進一步用于:預先設置耗時偏差等級,并對每個所 述耗時偏差等級預設需調(diào)整的編碼參數(shù)。
[0061 ]具體地,所述轉(zhuǎn)碼控制模塊330進一步用于:根據(jù)所述耗時偏差,查詢預先設置的 所述耗時偏差等級,獲得相應的編碼參數(shù),并對所述編碼進行相應的參數(shù)調(diào)整。
[0062] 圖3所示裝置可以執(zhí)行圖1、圖2對應實施例的方法,其實現(xiàn)原理和技術(shù)效果可以參 考圖1、圖2對應的實施例的內(nèi)容,此處不再贅述。
[0063] 以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可 以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單 元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡單元上??梢愿鶕?jù)實際的需要選擇其 中的部分或者全部模塊來實現(xiàn)本實施例方案的目的。本領域普通技術(shù)人員在不付出創(chuàng)造性 的勞動的情況下,即可以理解并實施。
[0064] 通過以上的實施方式的描述,本領域的技術(shù)人員可以清楚地了解到各實施方式可 借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當然也可以通過硬件?;谶@樣的理解,上 述技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該 計算機軟件產(chǎn)品可以存儲在計算機可讀存儲介質(zhì)中,如R0M/RAM、磁碟、光盤等,包括若干指 令用以使得一臺計算機裝置(可以是個人計算機,服務器,或者網(wǎng)絡裝置等)執(zhí)行各個實施 例或者實施例的某些部分所述的方法。
[0065] 最后應說明的是:以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管 參照前述實施例對本發(fā)明進行了詳細的說明,本領域的普通技術(shù)人員應當理解:其依然可 以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分技術(shù)特征進行等同替換; 而這些修改或者替換,并不使相應技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精神和 范圍。
【主權(quán)項】
1. 一種實時轉(zhuǎn)碼的實時控制方法,其特征在于,包括如下步驟: 在轉(zhuǎn)碼過程中實時獲取當前編碼的反饋信息; 根據(jù)所述反饋信息計算當前一定數(shù)量編碼幀的實際耗時; 根據(jù)預先計算的期望耗時與所述實際耗時計算所述一定數(shù)量編碼幀的耗時偏差; 根據(jù)所述耗時偏差,調(diào)整編碼參數(shù)進行轉(zhuǎn)碼控制。2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,根據(jù)所述反饋信息計算當前一定數(shù)量編碼 幀的實際耗時,進一步包括: 從所述反饋信息中獲取所述一定數(shù)量編碼幀中每一幀的編碼耗時,累加得到所述一定 數(shù)量編碼幀的實際耗時。3. 根據(jù)權(quán)利要求1所述的方法,其特征在于,計算所述一定數(shù)量編碼幀的耗時偏差之 前,進一步包括: 獲取所述編碼的幀率值,根據(jù)所述幀率值計算所述一定數(shù)量編碼幀的所述期望耗時。4. 根據(jù)權(quán)利要求1所述的方法,其特征在于,根據(jù)所述耗時偏差,調(diào)整編碼參數(shù),進一步 包括: 預先設置耗時偏差等級,并對每個所述耗時偏差等級預設需調(diào)整的編碼參數(shù)。5. 根據(jù)權(quán)利要求1或4所述的方法,其特征在于,根據(jù)所述耗時偏差,調(diào)整編碼參數(shù),進 一步包括: 根據(jù)所述耗時偏差,查詢預先設置的所述耗時偏差等級,獲得相應的編碼參數(shù),并對所 述編碼進行相應的參數(shù)調(diào)整。6. -種實時轉(zhuǎn)碼的實時控制裝置,其特征在于,包括如下模塊: 信息獲取模塊,用于在轉(zhuǎn)碼過程中實時獲取當前編碼的反饋信息; 計算模塊,用于根據(jù)所述反饋信息計算當前一定數(shù)量編碼幀的實際耗時;根據(jù)預先計 算的期望耗時與所述實際耗時計算所述一定數(shù)量編碼幀的耗時偏差; 轉(zhuǎn)碼控制模塊,用于根據(jù)所述耗時偏差,調(diào)整編碼參數(shù)進行轉(zhuǎn)碼控制。7. 根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述計算模塊進一步用于: 從所述反饋信息中獲取所述一定數(shù)量編碼幀中每一幀的編碼耗時,累加得到所述一定 數(shù)量編碼幀的實際耗時。8. 根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述計算模塊進一步用于: 在計算所述一定數(shù)量編碼幀的耗時偏差之前,獲取所述編碼的幀率值,根據(jù)所述幀率 值計算所述一定數(shù)量編碼幀的所述期望耗時。9. 根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述轉(zhuǎn)碼控制模塊進一步用于: 預先設置耗時偏差等級,并對每個所述耗時偏差等級預設需調(diào)整的編碼參數(shù)。10. 根據(jù)權(quán)利要求6或9所述的裝置,其特征在于,所述轉(zhuǎn)碼控制模塊進一步用于: 根據(jù)所述耗時偏差,查詢預先設置的所述耗時偏差等級,獲得相應的編碼參數(shù),并對所 述編碼進行相應的參數(shù)調(diào)整。
【文檔編號】H04N21/2343GK105898371SQ201510891571
【公開日】2016年8月24日
【申請日】2015年12月7日
【發(fā)明人】白茂生
【申請人】樂視云計算有限公司