本發(fā)明涉及視頻播放技術(shù)領(lǐng)域,特別是涉及一種圖片字幕顯示方法和裝置。
背景技術(shù):
字幕分為文本字幕和圖片字幕兩種格式。文本字幕指字幕信息以文本的形式進(jìn)行存儲(chǔ),圖片字幕則指字幕信息以圖片的形式進(jìn)行存儲(chǔ)。在播放本地視頻(通過USB、SD卡進(jìn)行播放)時(shí),這兩種格式都會(huì)經(jīng)常遇到。
已有技術(shù)中,如圖1所示,為已有技術(shù)的顯示圖片字幕數(shù)據(jù)的具體過程:在原生的字幕處理架構(gòu)中,圖片字幕數(shù)據(jù)解析完之后,要通過MediaplayerService傳給應(yīng)用所在線程的native的播放器mediaplayer,然后上傳到Java層的播放器mediaplayer,再上傳到應(yīng)用,再由應(yīng)用傳給java層surface,最后再下發(fā)到native層surface進(jìn)行顯示。
因此,采用圖1的已有技術(shù)在顯示圖片字幕時(shí),該圖片字幕數(shù)據(jù)需要在native層、java層和應(yīng)用層之間多次傳遞圖片字幕數(shù)據(jù),才能使得native層的surface可獲得該圖片字幕數(shù)據(jù)并進(jìn)行顯示;此外,該已有技術(shù)每顯示一個(gè)圖片字幕時(shí),都需要按照上述的流程處理,從而使得整個(gè)過程較為繁瑣,使得圖片字幕顯示效率比較低。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例所要解決的技術(shù)問題是提供一種圖片字幕顯示方法,可在native層的surface直接顯示圖片字幕數(shù)據(jù),提高了圖片字幕數(shù)據(jù)的顯示效率。
相應(yīng)的,本發(fā)明實(shí)施例還提供了一種圖片字幕顯示裝置,用以保證上述方法的實(shí)現(xiàn)及應(yīng)用。
為了解決上述問題,本發(fā)明公開了一種圖片字幕顯示方法,包括:
在視頻播放前,將native層的surface通過應(yīng)用發(fā)送到所述native層的播放器;
在所述視頻播放時(shí),將所述圖片字幕數(shù)據(jù)從所述native層的播放器發(fā)送到所述native層的surface;
在所述native層的surface顯示所述圖片字幕數(shù)據(jù)。
優(yōu)選地,所述在所述視頻播放時(shí),將所述圖片字幕數(shù)據(jù)從所述native層的播放器發(fā)送到所述native層的surface的步驟之前,所述方法還包括:
通過所述native層的播放器對(duì)待播放的視頻文件解封裝得到所述圖片字幕數(shù)據(jù);
通過所述native層的播放器將獲取的所述圖片字幕數(shù)據(jù)加入到緩沖隊(duì)列中。
優(yōu)選地,在所述視頻播放時(shí),將所述圖片字幕數(shù)據(jù)從所述native層的播放器發(fā)送到所述native層的surface的步驟,包括:
根據(jù)所述視頻的當(dāng)前播放時(shí)間,通過所述native層的播放器讀取所述緩沖隊(duì)列中的所述圖片字幕數(shù)據(jù);
通過所述native層的播放器設(shè)置讀取的所述圖片字幕數(shù)據(jù)在所述視頻的播放窗口中的顯示坐標(biāo)和縮放比例;
將設(shè)置后的所述圖片字幕數(shù)據(jù)從所述native層的播放器發(fā)送到所述native層的surface。
優(yōu)選地,所述native層的surface由java層的surface創(chuàng)建,所述java層的surface由所述應(yīng)用創(chuàng)建。
優(yōu)選地,所述方法應(yīng)用于android系統(tǒng)。
本發(fā)明實(shí)施例還公開了一種圖片字幕顯示裝置,包括:
第一發(fā)送模塊,用于在視頻播放前,將native層的surface通過應(yīng)用發(fā)送到所述native層的播放器;
第二發(fā)送模塊,用于在所述視頻播放時(shí),將所述圖片字幕數(shù)據(jù)從所述native層的播放器發(fā)送到所述native層的surface;
顯示模塊,用于在所述native層的surface顯示所述圖片字幕數(shù)據(jù)。
優(yōu)選地,所述圖片字幕顯示裝置還包括:
獲取模塊,用于在所述視頻播放時(shí),將所述圖片字幕數(shù)據(jù)從所述native層的播放器發(fā)送到所述native層的surface的步驟之前,通過所述native層的播放器對(duì)待播放的視頻文件解封裝得到所述圖片字幕數(shù)據(jù);
加入緩沖隊(duì)列模塊,用于通過所述native層的播放器將獲取的所述圖片字幕數(shù)據(jù)加入到緩沖隊(duì)列中。
優(yōu)選地,所述第二發(fā)送模塊包括:
讀取子模塊,用于根據(jù)所述視頻的當(dāng)前播放時(shí)間,通過所述native層的播放器讀取所述緩沖隊(duì)列中的所述圖片字幕數(shù)據(jù);
設(shè)置子模塊,用于通過所述native層的播放器設(shè)置讀取的所述圖片字幕數(shù)據(jù)在所述視頻的播放窗口中的顯示坐標(biāo)和縮放比例;
發(fā)送子模塊,用于將設(shè)置后的所述圖片字幕數(shù)據(jù)從所述native層的播放器發(fā)送到所述native層的surface。
優(yōu)選地,所述native層的surface由java層的surface創(chuàng)建,所述java層的surface由所述應(yīng)用創(chuàng)建。
優(yōu)選地,所述裝置應(yīng)用于android系統(tǒng)。
與背景技術(shù)相比,本發(fā)明實(shí)施例包括以下優(yōu)點(diǎn):
本發(fā)明實(shí)施例,可通過應(yīng)用將native層的surface發(fā)送到native層的播放器,從而使得native層的播放器可直接將圖片字幕數(shù)據(jù)發(fā)送到native層的surface,以便在native層的surface顯示圖片字幕數(shù)據(jù),避免了在native層、java層和應(yīng)用層之間多次傳遞圖片字幕數(shù)據(jù);并且,只需在視頻播放前,發(fā)送一次native層的surface到native層的播放器,就可以顯示所有的圖片字幕數(shù)據(jù),無需每顯示一個(gè)圖片字幕數(shù)據(jù)就發(fā)送一次native層的surface,從而可提高該圖片字幕數(shù)據(jù)的顯示效率。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)本發(fā)明實(shí)施例的描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是已有技術(shù)的圖片字幕顯示的流程圖;
圖2是本發(fā)明的一種圖片字幕顯示方法實(shí)施例1的步驟流程圖;
圖3是本發(fā)明的一種圖片字幕顯示方法實(shí)施例2的步驟流程圖;
圖4是本發(fā)明的一種圖片字幕顯示方法實(shí)施例3的結(jié)構(gòu)框圖。
具體實(shí)施方式
為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說明。
參照?qǐng)D2,示出了本發(fā)明的一種圖片字幕顯示方法實(shí)施例1的步驟流程圖。該方法應(yīng)用于android系統(tǒng)。該android系統(tǒng)可以安裝在手機(jī)、平板電腦、MP3/MP4、智能手表、智能手環(huán)、計(jì)算機(jī)等智能終端中。該實(shí)施例1的方法具體可以包括如下步驟:
步驟101:在視頻播放前,將native層的surface通過應(yīng)用發(fā)送到native層的播放器。
其中,應(yīng)用指的是應(yīng)用層的播放器,即安裝的視頻播放軟件。
其中,native層的surface由java層的surface創(chuàng)建,java層的surface由應(yīng)用創(chuàng)建。
步驟102:在視頻播放時(shí),將圖片字幕數(shù)據(jù)從native層的播放器發(fā)送到native層的surface。
由于native層的播放器接收到了native層的surface,因此,native層的播放器和native層的surface之間可以傳遞圖片字幕數(shù)據(jù)。
步驟103:在native層的surface顯示圖片字幕數(shù)據(jù)。
視頻播放時(shí),在native層的surface中同步顯示匹配視頻的圖片字幕數(shù)據(jù),并且,該視頻的所有的圖片字幕數(shù)據(jù)都可在該native層的surface中顯示,不需要每播放一個(gè)圖片字幕數(shù)據(jù)就發(fā)送一個(gè)native層的surface。
由于native層的surface由java層的surface創(chuàng)建,java層的surface由應(yīng)用創(chuàng)建,因此,native層的surface可與java層的surface、應(yīng)用傳遞圖片字幕數(shù)據(jù)。而native層的播放器只能與java層的播放器、應(yīng)用之間傳遞圖片字幕數(shù)據(jù)?;谏鲜龅脑颍延屑夹g(shù)中無法將圖片字幕數(shù)據(jù)由native層的播放器直接傳遞到native層的surface。但是,由于應(yīng)用可與native層的播放器之間傳遞數(shù)據(jù),因此,應(yīng)用可直接將native層的surface傳遞給native層的播放器。此外,圖片字幕數(shù)據(jù)并不需要應(yīng)用進(jìn)行顏色等參數(shù)設(shè)置,因此,圖片字幕數(shù)據(jù)并不需要發(fā)送到應(yīng)用處理。
因此,本發(fā)明實(shí)施例1的圖片字幕顯示方法正是基于上述的原理,將native層的surface發(fā)送到native層的播放器,從而使得native層的播放器可直接將圖片字幕數(shù)據(jù)發(fā)送到native層的surface,以便在native層的surface顯示圖片字幕數(shù)據(jù),提高了圖片字幕數(shù)據(jù)的顯示效率。
參照?qǐng)D3,示出了本發(fā)明的一種圖片字幕顯示方法實(shí)施例2的步驟流程圖。該方法應(yīng)用于android系統(tǒng)。該android系統(tǒng)可以安裝在手機(jī)、平板電腦、MP3/MP4、智能手表、智能手環(huán)、計(jì)算機(jī)等智能終端中。該實(shí)施例2的方法具體可以包括如下步驟:
步驟201:在視頻播放前,將native層的surface通過應(yīng)用發(fā)送到native層的播放器。
其中,應(yīng)用指的是應(yīng)用層的播放器,即安裝的視頻播放軟件。
其中,native層的surface由java層的surface創(chuàng)建,java層的surface由應(yīng)用創(chuàng)建。
步驟202:通過native層的播放器對(duì)待播放的視頻文件解封裝得到圖片字幕數(shù)據(jù)。
常見的視頻文件封裝格式有AVI、RMVB、MKV、ASF、WMV、MP4、3GP、FLV等等。將視頻文件解封裝后可以提取視頻、音頻、字幕等等。本步驟將視頻文件解封裝后以便獲取圖片字幕數(shù)據(jù)。
步驟203:通過native層的播放器將獲取的圖片字幕數(shù)據(jù)加入到緩沖隊(duì)列中。
獲取的圖片字幕數(shù)據(jù)可能有很多個(gè),因此,將圖片字幕數(shù)據(jù)先放入到緩沖隊(duì)列里,以便對(duì)圖片字幕數(shù)據(jù)依次處理,并按時(shí)顯示圖片字幕數(shù)據(jù),避免該圖片字幕數(shù)據(jù)同時(shí)顯示造成無法正確顯示圖片字幕數(shù)據(jù)的問題。
步驟204:在視頻播放時(shí),將圖片字幕數(shù)據(jù)從native層的播放器發(fā)送到native層的surface。
由于native層的播放器接收到了native層的surface,因此,native層的播放器和native層的surface之間可以傳遞圖片字幕數(shù)據(jù)。
在本發(fā)明一優(yōu)選的實(shí)施例中,步驟204包括如下的子步驟:
步驟S41:根據(jù)視頻的當(dāng)前播放時(shí)間,通過native層的播放器讀取緩沖隊(duì)列中的圖片字幕數(shù)據(jù)。
該步驟是為了實(shí)現(xiàn)圖片字幕與視頻同步顯示。例如,當(dāng)視頻播到第3秒,那么讀取第3秒要顯示的圖片字幕數(shù)據(jù)。
步驟S42:通過native層的播放器設(shè)置讀取的圖片字幕數(shù)據(jù)在視頻的播放窗口中的顯示坐標(biāo)和縮放比例。
每個(gè)圖片字幕數(shù)據(jù)的尺寸可能不同,每次都要設(shè)置圖片字幕數(shù)據(jù)的顯示坐標(biāo)和縮放的比例,以保證圖片字幕數(shù)據(jù)能在播放該視頻的智能終端的合適的位置顯示。
步驟S43:將設(shè)置后的圖片字幕數(shù)據(jù)從native層的播放器發(fā)送到native層的surface。
將經(jīng)過上述步驟處理的圖片字幕數(shù)據(jù)發(fā)送到native層的surface,保證了該圖片字幕數(shù)據(jù)可與視頻同步顯示,并且可在合適的位置顯示。
步驟205:在native層的surface顯示圖片字幕數(shù)據(jù)。
綜上,本發(fā)明實(shí)施例2的圖片字幕顯示方法,將native層的surface發(fā)送到native層的播放器,從而使得native層的播放器可直接將圖片字幕數(shù)據(jù)發(fā)送到native層的surface,以便在native層的surface顯示圖片字幕數(shù)據(jù),提高了圖片字幕數(shù)據(jù)的顯示效率;此外,通過將獲取的圖片字幕數(shù)據(jù)先放入緩沖隊(duì)列中,避免獲取的大量的圖片字幕數(shù)據(jù)同時(shí)在播放的視頻中顯示,造成顯示的圖片字幕與視頻不匹配的問題,可控制該圖片字幕顯示的過程。
參照?qǐng)D4示出了本發(fā)明的一種圖片字幕顯示裝置實(shí)施例3的結(jié)構(gòu)框圖。該實(shí)施例3的裝置應(yīng)用于android系統(tǒng)。該android系統(tǒng)可以安裝在手機(jī)、平板電腦、MP3/MP4、智能手表、智能手環(huán)、計(jì)算機(jī)等智能終端中。該實(shí)施例3的裝置具體包括如下的結(jié)構(gòu):
第一發(fā)送模塊401,用于在視頻播放前,將native層的surface通過應(yīng)用發(fā)送到native層的播放器。
其中,native層的surface由java層的surface創(chuàng)建,java層的surface由應(yīng)用創(chuàng)建。
第二發(fā)送模塊402,用于在視頻播放時(shí),將圖片字幕數(shù)據(jù)從native層的播放器發(fā)送到native層的surface。
顯示模塊403,用于在native層的surface中顯示圖片字幕數(shù)據(jù)。
優(yōu)選地,該實(shí)施例3的裝置還包括:
獲取模塊,用于在視頻播放時(shí),將圖片字幕數(shù)據(jù)從native層的播放器發(fā)送到native層的surface的步驟之前,通過native層的播放器對(duì)待播放的視頻文件解封裝得到圖片字幕數(shù)據(jù)。
加入緩沖隊(duì)列模塊,用于通過native層的播放器將獲取的圖片字幕數(shù)據(jù)加入到緩沖隊(duì)列中。
優(yōu)選地,該第二發(fā)送模塊402包括:
讀取子模塊,用于根據(jù)視頻的當(dāng)前播放時(shí)間,通過native層的播放器讀取緩沖隊(duì)列中的圖片字幕數(shù)據(jù)。
設(shè)置子模塊,用于通過native層的播放器設(shè)置讀取的圖片字幕數(shù)據(jù)在視頻的播放窗口中的顯示坐標(biāo)和縮放比例。
發(fā)送子模塊,用于將設(shè)置后的圖片字幕數(shù)據(jù)從native層的播放器發(fā)送到native層的surface。
綜上,本發(fā)明實(shí)施例3的圖片字幕顯示裝置,將native層的surface發(fā)送到native層的播放器,從而使得native層的播放器可直接將圖片字幕數(shù)據(jù)發(fā)送到native層的surface,以便在native層的surface顯示圖片字幕數(shù)據(jù),提高了圖片字幕數(shù)據(jù)的顯示效率;此外,通過將獲取的圖片字幕數(shù)據(jù)先放入緩沖隊(duì)列中,避免獲取的大量的圖片字幕數(shù)據(jù)同時(shí)在播放的視頻中顯示,造成顯示的圖片字幕與視頻不匹配的問題,可控制該圖片字幕顯示的過程。。
需要說明的是,對(duì)于方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明實(shí)施例并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明實(shí)施例,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作并不一定是本發(fā)明實(shí)施例所必須的。
對(duì)于裝置實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法實(shí)施例的部分說明即可。
本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見即可。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明實(shí)施例的實(shí)施例可提供為方法、裝置、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明實(shí)施例可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明實(shí)施例可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
本發(fā)明實(shí)施例是參照根據(jù)本發(fā)明實(shí)施例的方法、終端設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備上,使得在計(jì)算機(jī)或其他可編程終端設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程終端設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
盡管已描述了本發(fā)明實(shí)施例的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例做出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本發(fā)明實(shí)施例范圍的所有變更和修改。
最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者終端設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者終端設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者終端設(shè)備中還存在另外的相同要素。
以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以權(quán)利要求的保護(hù)范圍為準(zhǔn)。