本發(fā)明涉及顯示技術(shù)領(lǐng)域,尤其涉及一種字幕顯示方法和字幕顯示裝置。
背景技術(shù):
在播放視頻等可視內(nèi)容時,嘗嘗會伴有臺詞、背景音樂等音頻內(nèi)容,而對于聽力有障礙的用戶,則無法了解到這部分音頻內(nèi)容。因此在一些標(biāo)準(zhǔn)中提供了closed caption技術(shù),也即將可視內(nèi)容中的音頻內(nèi)容通過字幕顯示出來,以便聽力有障礙的用戶能夠了解到這部分音頻內(nèi)容。但是目前顯示字幕的算法存在缺陷,在某些情況下會導(dǎo)致本應(yīng)在較為靠下的行中顯示的字幕卻在較為靠前的行中顯示,導(dǎo)致對觀看者造成困擾。
例如圖1所示,在字幕區(qū)域可顯示字幕的行數(shù)為7行(第0行至第6行),16進(jìn)制的行號范圍是0x00至0x3F,換算為十進(jìn)制就是0至63,當(dāng)行號大于7時,會循環(huán)將字幕填入對應(yīng)行。例如接收到的字幕“nlas”對應(yīng)的行號為0xc,“uNas,sin embargo hay otros”對應(yīng)的行號為0xd,“elementos,como una nsoqa,que”對應(yīng)的行號為0xe,行號換算為十進(jìn)制為12、13和14,行號0xc的字幕位于第5行,行號0xd的字幕位于第6行,行號0xe的字幕位于第7行,而第7行大于最大行數(shù)6,因此會按照循環(huán)的規(guī)則填入第0行進(jìn)行顯示,根據(jù)上述的方式顯示字幕,會導(dǎo)致三行字幕中的最后一行字幕顯示在最上方,影響用戶對字幕的觀看和理解。
技術(shù)實現(xiàn)要素:
本發(fā)明提供一種字幕顯示方法和字幕顯示裝置,以解決相關(guān)技術(shù)中的不足。
根據(jù)本發(fā)明實施例的第一方面,提供一種字幕顯示方法,應(yīng)用于終端中,該方法包括:
在接收到多行字幕時依次獲取每行字幕的行號;
計算所述終端的屏幕的字幕顯示區(qū)域?qū)?yīng)的可顯示字幕的行數(shù);
將每行字幕對應(yīng)的所述行號與所述可顯示字幕的行數(shù)作商并取余數(shù);
確定所述行號對應(yīng)的余數(shù)是否單調(diào)遞增;
若確定不是單調(diào)遞增,調(diào)整所述余數(shù),以使調(diào)整后的余數(shù)單調(diào)遞增,并將調(diào)整后的余數(shù)作為在所述字幕區(qū)域顯示所述字幕的行號。
可選地,所述調(diào)整所述余數(shù)包括:
根據(jù)所述可顯示字幕的行數(shù)對所述余數(shù)中等于零的余數(shù)的數(shù)值進(jìn)行置換;
將所述余數(shù)中的每個余數(shù)數(shù)值減一;
確定調(diào)整后的余數(shù)是否為單調(diào)遞增;
若不是單調(diào)遞增,則繼續(xù)根據(jù)所述可顯示字幕的行數(shù)對所述余數(shù)中等于零的余數(shù)的數(shù)值進(jìn)行置換,直至調(diào)整后的余數(shù)為單調(diào)遞增。
可選地,上述方法還包括:
在接收所述字幕時,接收第一控制字、第二控制字和第三控制字;
所述計算所述終端的屏幕的字幕顯示區(qū)域?qū)?yīng)的可顯示字幕的行數(shù)包括:
根據(jù)第一控制字確定字幕區(qū)域的尺寸,根據(jù)第二控制字確定顯示字幕的字符的尺寸,根據(jù)第三控制字確定所述每行字符的行間距;
將所述字幕區(qū)域的尺寸的高度與所述字符的尺寸和所述行間距之和相除并取整數(shù),將取到的整數(shù)作為所述可顯示字幕的行數(shù)。
根據(jù)本發(fā)明實施例的第二方面,提供一種字幕顯示裝置,應(yīng)用于終端中,該裝置包括:
接收單元,用于在接收到多行字幕時獲取每行字幕的行號;
計算單元,用于計算所述終端的屏幕的字幕顯示區(qū)域?qū)?yīng)的可顯示字幕的行數(shù);
取余單元,用于將每行字幕對應(yīng)的所述行號與所述可顯示字幕的行數(shù)作商并取余數(shù);
確定單元,用于確定所述行號對應(yīng)的余數(shù)是否單調(diào)遞增;
調(diào)整單元,用于在確定不是單調(diào)遞增時,調(diào)整所述余數(shù),以使調(diào)整后的余數(shù)單調(diào)遞增;
顯示單元,用于將調(diào)整后的余數(shù)作為在所述字幕區(qū)域顯示所述字幕的行號。
可選地,所述調(diào)整單元包括:
置數(shù)子單元,用于根據(jù)所述可顯示字幕的行數(shù)對所述余數(shù)中等于零的余數(shù)的數(shù)值進(jìn)行置換;
第一計算子單元,用于將所述余數(shù)中的每個余數(shù)數(shù)值減一;
第一確定子單元,用于確定調(diào)整后的余數(shù)是否為單調(diào)遞增。
可選地,所述接收單元還用于在接收所述字幕時,接收第一控制字、第二控制字和第三控制字;
所述計算單元包括:
第二確定子單元,用于根據(jù)第一控制字確定字幕區(qū)域的尺寸,根據(jù)第二控制字確定顯示字幕的字符的尺寸,根據(jù)第三控制字確定所述每行字符的行間距;
第二計算子單元,用于將所述字幕區(qū)域的尺寸的高度與所述字符的尺寸和所述行間距之和相除并取整數(shù),將取到的整數(shù)作為所述可顯示字幕的行數(shù)。
由上述實施例可知,本發(fā)明通過對字幕的行號與可顯示字幕的行數(shù)作商得到的余數(shù)進(jìn)行自適應(yīng)調(diào)整作為新的行號,并根據(jù)新的行號顯示字幕,可以總是保證先接收到的字幕具有較小的行號從而在靠前的行中顯示,后接收到的字幕具有較大的行號從而在靠后的行中顯示,以避免對用戶的觀看和理解造成困擾,提高用戶的觀看體驗。
應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性和解釋性的,并不能限制本發(fā)明。
附圖說明
此處的附圖被并入說明書中并構(gòu)成本說明書的一部分,示出了符合本發(fā)明的實施例,并與說明書一起用于解釋本發(fā)明的原理。
圖1示出了相關(guān)技術(shù)中顯示字幕的示意圖。
圖2是根據(jù)本發(fā)明一個實施例的字幕顯示方法的示意流程圖。
圖3是根據(jù)本發(fā)明一個實施例的顯示字幕的示意圖。
圖4是根據(jù)本發(fā)明另一個實施例的字幕顯示方法的示意流程圖。
圖5是根據(jù)本發(fā)明又一個實施例的字幕顯示方法的示意流程圖。
圖6是根據(jù)本發(fā)明一個實施例的字幕顯示裝置的示意框圖。
圖7是根據(jù)本發(fā)明另一個實施例的字幕顯示裝置的示意框圖。
圖8是根據(jù)本發(fā)明又一個實施例的字幕顯示裝置的示意框圖。
具體實施方式
這里將詳細(xì)地對示例性實施例進(jìn)行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本發(fā)明相一致的所有實施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本發(fā)明的一些方面相一致的裝置和方法的例子。
在相關(guān)技術(shù)中,在接收圖像或視頻的碼流時,還會接收其中音頻文件對應(yīng)字幕的行號,由于屏幕中字幕區(qū)域可顯示字幕的行數(shù)在顯示字幕之前就已經(jīng)通過計算確定了,因此在顯示字幕時,只需要根據(jù)字幕的行號將字幕顯示在字幕區(qū)域的對應(yīng)行即可。
圖2是根據(jù)本發(fā)明一個實施例的字幕顯示方法的示意流程圖,該實施例可以用于顯示設(shè)備等終端中,包括以下步驟:
步驟S21,在接收到多行字幕時依次獲取每行字幕的行號。
在一個實施例中,接收到行號一般是單調(diào)遞增的,每次接收到的字幕的行數(shù)小于或等于所述可顯示字幕的行數(shù)。
在一個實施例中,由于closed caption技術(shù)中的限定,每次接收到的字幕的行數(shù)小于或等于所述可顯示字幕的行數(shù),例如可顯示字幕的行數(shù)與圖1所示的實施例相同,也為7行,那么每次接收到的字幕最多為7行。
在一個實施例中,例如接收到的字幕和行號與圖1所示的實施例相同,也即接收到的字幕“nlas”對應(yīng)的行號為0xc,“uNas,sin embargo hay otros”對應(yīng)的行號為0xd,“elementos,como una nsoqa,que”對應(yīng)的行號為0xe,那么行號0xc、0xd、0xe是單調(diào)遞增的。而且由于closed caption技術(shù)中的限定,先接收到的字幕的行號較小,后接收到的字幕的行號較大,因此一般無需重新對行號進(jìn)行排列使其單調(diào)遞增。
步驟S22,計算所述終端的屏幕的字幕顯示區(qū)域?qū)?yīng)的可顯示字幕的行數(shù)。
在一個實施例中,可以在接收視頻文件的碼流時,從碼流中提取有關(guān)可顯示字幕的行數(shù)的數(shù)據(jù),并根據(jù)該數(shù)據(jù)計算可顯示字幕的行數(shù)。
步驟S23,將每行字幕對應(yīng)的所述行號與所述可顯示字幕的行數(shù)作商并取余數(shù)。
在一個實施例中,0xc、0xd和0xe行號換算為十進(jìn)制分別為12、13和14,將其與可顯示字幕的行數(shù)7作商并取余數(shù),分別為5、6和0。
步驟S24,確定所述行號對應(yīng)的余數(shù)是否單調(diào)遞增。
在一個實施例中,例如上述余數(shù)為5、6、0,并非單調(diào)遞增。
步驟S25,若確定不是單調(diào)遞增,調(diào)整所述余數(shù),以使調(diào)整后的余數(shù)單調(diào)遞增,并將調(diào)整后的余數(shù)作為在所述字幕區(qū)域顯示所述字幕的行號。
在一個實施例中,在上述余數(shù)不是單調(diào)遞增的情況下,將會導(dǎo)致顯示字幕時,先接收到的字幕“nlas”顯示在第5行,而最后接收到的字幕“elementos,como una nsoqa,que”卻顯示在第0行,造成圖1所示的情況。因此可以對余數(shù)進(jìn)行調(diào)整,使得調(diào)整后的余數(shù)單調(diào)遞增,例如將上述余數(shù)5、6、0調(diào)整為4、5、6,那么將調(diào)整后的余數(shù)作為在所述字幕區(qū)域顯示所述字幕的行號,就可以如圖3所示,字幕“nlas”、“uNas,sin embargo hay otros”、“elementos,como una nsoqa,que”就可以依次顯示在第4行、第5行和第6行,從而解決了圖1所示的問題。
根據(jù)上述實施例,通過對字幕的行號與可顯示字幕的行數(shù)作商得到的余數(shù)進(jìn)行自適應(yīng)調(diào)整作為新的行號,并根據(jù)新的行號顯示字幕,可以總是保證先接收到的字幕具有較小的行號從而在靠前的行中顯示,后接收到的字幕具有較大的行號從而在靠后的行中顯示,以避免對用戶的觀看和理解造成困擾,提高用戶的觀看體驗。
在一個實施例中,若確定行號對應(yīng)的余數(shù)為單調(diào)遞增,那么可以直接將余數(shù)作為在所述字幕區(qū)域顯示所述字幕的行號。
圖4是根據(jù)本發(fā)明另一個實施例的字幕顯示方法的示意流程圖。如圖4所示,在圖1所示實施例的基礎(chǔ)上,所述調(diào)整所述余數(shù)包括:
步驟S251,根據(jù)所述可顯示字幕的行數(shù)對所述余數(shù)中等于零的余數(shù)的數(shù)值進(jìn)行置換;
步驟S252,將所述余數(shù)中的每個余數(shù)數(shù)值減一;
步驟S253,確定調(diào)整后的余數(shù)是否為單調(diào)遞增;
若不是單調(diào)遞增,則繼續(xù)步驟S251,直至調(diào)整后的行號對應(yīng)的余數(shù)為單調(diào)遞增。
在一個實施例中,由于closed caption技術(shù)中的限定,先接收到的字幕的行號較小,后接收到的字幕的行號較大,因此若行號與可顯示字幕的行數(shù)作商得到的余數(shù)非單調(diào)遞增,那么必然存在行號等于可顯示字幕的行數(shù)整數(shù)倍的情況下,也即余數(shù)為0的情況。由于需要對余數(shù)做減法得到新的余數(shù)作為行數(shù),而在余數(shù)等于0的情況下對其做減法將得到負(fù)數(shù),作為行數(shù)是沒有實際意義的,因此在這種情況下,可以將等于0的余數(shù)置為可顯示字幕的行數(shù),然后再進(jìn)行減法操作。
例如對于上述余數(shù)5、6、0,可以先將0置為7,然后再分別將每個余數(shù)減去1,從而得到4、5、6,進(jìn)而可以將顯示在第五行、第六行和第0行的字幕調(diào)整為顯示在第四行、第五行和第六行,保證了先接收到的字幕在靠前的行中顯示,后接收到的字幕在靠后的行中顯示,從而克服了圖1所示的問題。
在一個實施例中,在接收字幕所在的碼流時,碼流中可以包括用于限定字幕在字幕區(qū)域插入位置的控制字,例如控制字APS用于指定字幕在字幕區(qū)域的插入位置,APS為(0,3)是指從第0行第3個字符開始插入字幕。其中,控制字APS中包含行號對應(yīng)的數(shù)據(jù),因此,圖3所示的實施例可以針對控制字APS中與行號對應(yīng)的數(shù)據(jù)進(jìn)行計算。
例如控制字(0xc,0)中行數(shù)據(jù)對應(yīng)的余數(shù)為5,那么可以將該控制字置為(5,0),也即從第5行第0個字符開始插入字幕;例如控制字(0xd,0)中行數(shù)據(jù)對應(yīng)的余數(shù)為6,那么可以將該控制字置為(6,0),也即從第6行第0個字符開始插入字幕;例如控制字(0xe,0)中行數(shù)據(jù)對應(yīng)的余數(shù)為0,那么可以將該控制字置為(0,0),也即從第0行第0個字符開始插入字幕。從而得到新的控制字(5,0)、(6,0)、(0,0)。
而由于在APS為(0,0)時,對其中行數(shù)據(jù)進(jìn)行減法操作會得到(-1,0),而在字幕區(qū)域并不存在負(fù)值的行,因此可以將其中與行數(shù)對應(yīng)的數(shù)據(jù)置為可顯示字幕的行數(shù),例如7,那么調(diào)整后控制字APS為(7,0),而在控制字APS為(5,0)、(6,0)以及(7,0)時,對其中的行號數(shù)據(jù)減一后得到的控制字為(4,0)、(5,0)以及(6,0),從而得到單調(diào)遞增的行數(shù)據(jù),進(jìn)而根據(jù)調(diào)整后的控制字在字幕區(qū)域顯示字幕,可以將字幕“nlas”、“uNas,sin embargo hay otros”、“elementos,como una nsoqa,que”依次顯示在第4行、第5行和第6行,從而解決了圖1所示的問題。
在一個實施例中,例如接收到4行字幕的行號為0xc、0xd、0xe和0xf,那么可以經(jīng)過兩輪步驟S251至S253來將4行字幕依次顯示在第3行、第4行、第5行和第6行。
圖5是根據(jù)本發(fā)明又一個實施例的字幕顯示方法的示意流程圖。如圖5所示,在圖2所示實施例的基礎(chǔ)上,
在步驟S211中,在接收所述字幕時,接收第一控制字、第二控制字和第三控制字;
所述計算所述終端的屏幕的字幕顯示區(qū)域?qū)?yīng)的可顯示字幕的行數(shù)包括:
步驟S221,根據(jù)第一控制字確定字幕區(qū)域的尺寸,根據(jù)第二控制字確定顯示字幕的字符的尺寸,根據(jù)第三控制字確定所述每行字符的行間距;
步驟S222,將所述字幕區(qū)域的尺寸的高度與所述字符的尺寸和所述行間距之和相除并取整數(shù),將取到的整數(shù)作為所述可顯示字幕的行數(shù)。
在一個實施例中,在接收視頻文件的碼流時,碼流中除了可以包含字幕,還可以包括多種控制字。例如控制字SDF可以用于指定字幕區(qū)域的尺寸,例如為608*390;控制字SSM可以用于指定字幕中字符的尺寸,例如為36*36;控制字SVS可以用于指定每行字符的間距,例如為16,上述尺寸的單位為平方毫米,間距的單位為毫米。
進(jìn)而做除法SDF/(SSM+SVS)=390/(36+16),取整數(shù)為7,也即在字幕區(qū)域可以顯示字幕的行數(shù)為7行。
與前述的字幕顯示方法的實施例相對應(yīng),本公開還提供了字幕顯示裝置的實施例。
圖6是根據(jù)本發(fā)明一個實施例的字幕顯示裝置的示意框圖,該裝置可以應(yīng)用于顯示設(shè)備等終端中。如圖6所示,該裝置包括:
接收單元61,用于在接收到多行字幕時獲取每行字幕的行號;
計算單元62,用于計算所述終端的屏幕的字幕顯示區(qū)域?qū)?yīng)的可顯示字幕的行數(shù);
取余單元63,用于將每行字幕對應(yīng)的所述行號與所述可顯示字幕的行數(shù)作商并取余數(shù);
確定單元64,用于確定所述行號對應(yīng)的余數(shù)是否單調(diào)遞增;
調(diào)整單元65,用于在確定不是單調(diào)遞增時,調(diào)整所述余數(shù),以使調(diào)整后的余數(shù)單調(diào)遞增;
顯示單元66,用于將調(diào)整后的余數(shù)作為在所述字幕區(qū)域顯示所述字幕的行號。
圖7是根據(jù)本發(fā)明另一個實施例的字幕顯示裝置的示意框圖。如圖7所示,在圖6所示實施例的基礎(chǔ)上,所述調(diào)整單元55包括:
置數(shù)子單元551,用于根據(jù)所述可顯示字幕的行數(shù)對所述余數(shù)中等于零的余數(shù)的數(shù)值進(jìn)行置換;
第一計算子單元552,用于將所述余數(shù)中的每個余數(shù)數(shù)值減一;
第一確定子單元553,用于確定調(diào)整后的余數(shù)是否為單調(diào)遞增。
圖8是根據(jù)本發(fā)明又一個實施例的字幕顯示裝置的示意框圖。如圖8所示,在圖6所示實施例的基礎(chǔ)上,所述接收單元51還用于在接收所述字幕時,接收第一控制字、第二控制字和第三控制字;
所述計算單元52包括:
第二確定子單元521,用于根據(jù)第一控制字確定字幕區(qū)域的尺寸,根據(jù)第二控制字確定顯示字幕的字符的尺寸,根據(jù)第三控制字確定所述每行字符的行間距;
第二計算子單元522,用于將所述字幕區(qū)域的尺寸的高度與所述字符的尺寸和所述行間距之和相除并取整數(shù),將取到的整數(shù)作為所述可顯示字幕的行數(shù)。
關(guān)于上述實施例中的裝置,其中各個模塊執(zhí)行操作的具體方式已經(jīng)在有關(guān)該方法的實施例中進(jìn)行了詳細(xì)描述,此處將不做詳細(xì)闡述說明。
對于裝置實施例而言,由于其基本對應(yīng)于方法實施例,所以相關(guān)之處參見方法實施例的部分說明即可。以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本發(fā)明方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。
本領(lǐng)域技術(shù)人員在考慮說明書及實踐這里公開的公開后,將容易想到本發(fā)明的其它實施方案。本發(fā)明旨在涵蓋本發(fā)明的任何變型、用途或者適應(yīng)性變化,這些變型、用途或者適應(yīng)性變化遵循本發(fā)明的一般性原理并包括本發(fā)明未公開的本技術(shù)領(lǐng)域中的公知常識或慣用技術(shù)手段。說明書和實施例僅被視為示例性的,本發(fā)明的真正范圍和精神由下面的權(quán)利要求指出。
應(yīng)當(dāng)理解的是,本發(fā)明并不局限于上面已經(jīng)描述并在附圖中示出的精確結(jié)構(gòu),并且可以在不脫離其范圍進(jìn)行各種修改和改變。本發(fā)明的范圍僅由所附的權(quán)利要求來限制。