本發(fā)明涉及音視頻播放領(lǐng)域,尤其涉及一種音視頻播放方法及系統(tǒng)。
背景技術(shù):
目前,音視頻播放已經(jīng)是電視等設(shè)備必備的功能,用戶在播放音視頻時(shí),有時(shí)會(huì)發(fā)現(xiàn)圖像與聲音出現(xiàn)異常,即圖像與聲音不同步,如人物已經(jīng)開始講話了,但聲音還沒有出來,或者聲音出來了,人物還沒有開始講話,這樣用戶看起來特別的別扭。
產(chǎn)生音像異常的原因,主要是由于音視頻制作的工具各種各樣,所編輯成的音視頻文件也各不相同,甚至是不符合標(biāo)準(zhǔn)的。如此一來,電視在音視頻解碼時(shí)容易產(chǎn)生了錯(cuò)誤,如圖像或聲音在解碼時(shí)跳過某些數(shù)據(jù)幀,從而使得圖像與聲音播放時(shí)的時(shí)間軸沒有對(duì)齊,導(dǎo)致了音像不同步的問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的主要目的在于提出一種音視頻播放方法及系統(tǒng),旨在解決傳統(tǒng)的音視頻播放方式,容易出現(xiàn)音像不同步的技術(shù)問題。
為實(shí)現(xiàn)上述目的,本發(fā)明提供的一種音視頻播放方法,所述音視頻播放方法包括:
在音視頻文件邊解碼邊播放的過程中,若檢測(cè)到當(dāng)前正在播放的音視頻異常,則獲取當(dāng)前解碼的視頻對(duì)應(yīng)的時(shí)間點(diǎn);
在獲取的所述時(shí)間點(diǎn)為預(yù)設(shè)的跳轉(zhuǎn)時(shí)間點(diǎn)時(shí),跳轉(zhuǎn)至獲取的所述時(shí)間點(diǎn)所在音視頻文件位置,對(duì)音頻文件和視頻文件進(jìn)行解碼;
從獲取的所述時(shí)間點(diǎn)播放解碼后的音視頻。
優(yōu)選地,所述檢測(cè)到當(dāng)前正在播放的音視頻異常的步驟包括:
判斷當(dāng)前正在播放的所述音視頻對(duì)應(yīng)的異常數(shù)據(jù)標(biāo)志位是否為預(yù)設(shè)值時(shí);
若當(dāng)前正在播放的所述音視頻對(duì)應(yīng)的異常數(shù)據(jù)標(biāo)志位為預(yù)設(shè)值,則確定當(dāng)前正在播放的所述音視頻異常。
優(yōu)選地,所述跳轉(zhuǎn)至獲取的所述時(shí)間點(diǎn)所在音視頻文件位置,對(duì)音頻文件和視頻文件進(jìn)行解碼的同時(shí),執(zhí)行以下步驟:
根據(jù)獲取的所述時(shí)間點(diǎn)調(diào)整音頻文件的時(shí)間點(diǎn),以使所述音頻文件與所述視頻文件的時(shí)間軸對(duì)齊。
優(yōu)選地,所述音視頻播放方法還包括:
在音視頻文件邊解碼邊播放的過程中,實(shí)時(shí)檢測(cè)解碼后的音頻片段和視頻片段的時(shí)間軸是否對(duì)齊;
在音頻片段和視頻片段的時(shí)間軸沒有對(duì)齊時(shí),將異常數(shù)據(jù)標(biāo)志位設(shè)為所述預(yù)設(shè)值,并將當(dāng)前播放時(shí)間點(diǎn)增加預(yù)設(shè)時(shí)間間隔,以得到所述跳轉(zhuǎn)時(shí)間點(diǎn)。
優(yōu)選地,所述從獲取的所述時(shí)間點(diǎn)播放解碼后的音視頻的步驟之后,所述音視頻播放方法還包括:
清除所述異常數(shù)據(jù)標(biāo)志位的所述預(yù)設(shè)值,并清除所述跳轉(zhuǎn)時(shí)間點(diǎn)。
此外,為實(shí)現(xiàn)上述目的,本發(fā)明還提出一種音視頻播放系統(tǒng),所述音視頻播放系統(tǒng)包括:
獲取模塊,用于在音視頻文件邊解碼邊播放的過程中,若檢測(cè)到當(dāng)前正在播放的音視頻異常,則獲取當(dāng)前解碼的視頻對(duì)應(yīng)的時(shí)間點(diǎn);
跳轉(zhuǎn)模塊,用于在獲取的所述時(shí)間點(diǎn)為預(yù)設(shè)的跳轉(zhuǎn)時(shí)間點(diǎn)時(shí),跳轉(zhuǎn)至獲取的所述時(shí)間點(diǎn)所在音視頻文件位置;
解碼模塊,用于對(duì)音頻文件和視頻文件進(jìn)行解碼;
播放模塊,用于從獲取的所述時(shí)間點(diǎn)播放解碼后的音視頻。
優(yōu)選地,所述音視頻播放系統(tǒng)包括:
判斷模塊,用于判斷當(dāng)前正在播放的所述音視頻對(duì)應(yīng)的異常數(shù)據(jù)標(biāo)志位是否為預(yù)設(shè)值時(shí);
確定模塊,用于若當(dāng)前正在播放的所述音視頻對(duì)應(yīng)的異常數(shù)據(jù)標(biāo)志位為預(yù)設(shè)值,則確定當(dāng)前正在播放的所述音視頻異常。
優(yōu)選地,所述音視頻播放系統(tǒng)還包括:
調(diào)整模塊,用于在所述跳轉(zhuǎn)模塊跳轉(zhuǎn)至獲取的所述時(shí)間點(diǎn)所在音視頻文件位置,對(duì)音頻文件和視頻文件進(jìn)行解碼的同時(shí),根據(jù)獲取的所述時(shí)間點(diǎn)調(diào)整音頻文件的時(shí)間點(diǎn),以使所述音頻文件與所述視頻文件的時(shí)間軸對(duì)齊。
優(yōu)選地,所述音視頻播放系統(tǒng)還包括:
檢測(cè)模塊,用于在音視頻文件邊解碼邊播放的過程中,實(shí)時(shí)檢測(cè)解碼后的音頻片段和視頻片段的時(shí)間軸是否對(duì)齊;
處理模塊,用于在音頻片段和視頻片段的時(shí)間軸沒有對(duì)齊時(shí),將異常數(shù)據(jù)標(biāo)志位設(shè)為所述預(yù)設(shè)值,并將當(dāng)前播放時(shí)間點(diǎn)增加預(yù)設(shè)時(shí)間間隔,以得到所述跳轉(zhuǎn)時(shí)間點(diǎn)。
優(yōu)選地,所述音視頻播放系統(tǒng)還包括:
清除模塊,用于清除所述異常數(shù)據(jù)標(biāo)志位的所述預(yù)設(shè)值,并清除所述跳轉(zhuǎn)時(shí)間點(diǎn)。
本發(fā)明提出的音視頻播放方法及系統(tǒng),在檢測(cè)到當(dāng)前正在播放的音視頻異常時(shí),獲取當(dāng)前解碼的視頻對(duì)應(yīng)的時(shí)間點(diǎn),然后在獲取的所述時(shí)間點(diǎn)為預(yù)設(shè)的跳轉(zhuǎn)時(shí)間點(diǎn)時(shí),跳轉(zhuǎn)至獲取的所述時(shí)間點(diǎn)所在音視頻文件位置,對(duì)音頻文件和視頻文件進(jìn)行解碼,并從獲取的所述時(shí)間點(diǎn)播放解碼后的音視頻,實(shí)現(xiàn)了解碼后的音視頻中,音頻片段和視頻片段的時(shí)間點(diǎn)保持一致,使得最終輸出的音視頻也保持音像同步。
附圖說明
圖1為本發(fā)明音視頻播放方法第一實(shí)施例的流程示意圖;
圖2為本發(fā)明音視頻播放方法第二實(shí)施例的流程示意圖;
圖3為本發(fā)明音視頻播放方法第三實(shí)施例的流程示意圖;
圖4為本發(fā)明音視頻播放系統(tǒng)第一實(shí)施例的功能模塊示意圖;
圖5為本發(fā)明音視頻播放系統(tǒng)第二實(shí)施例的功能模塊示意圖;
圖6為本發(fā)明音視頻播放系統(tǒng)第三實(shí)施例的功能模塊示意圖。
本發(fā)明目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做進(jìn)一步說明。
具體實(shí)施方式
應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
本發(fā)明提供一種音視頻播放方法。
參照?qǐng)D1,圖1為本發(fā)明音視頻播放方法第一實(shí)施例的流程示意圖。
在本實(shí)施例中,所述音視頻播放方法包括:
步驟S10,在音視頻文件邊解碼邊播放的過程中,若檢測(cè)到當(dāng)前正在播放的音視頻異常,則獲取當(dāng)前解碼的視頻對(duì)應(yīng)的時(shí)間點(diǎn);
在本實(shí)施例中,所述音視頻文件邊解碼邊播放,具體是終端先解碼一部分音視頻,然后播放解碼后的音視頻,并在播放解碼后的音視頻時(shí),繼續(xù)解碼音視頻文件的剩余部分。在音視頻文件邊解碼邊播放的過程中,若檢測(cè)到當(dāng)前正在播放的音視頻有異常,則獲取當(dāng)前剛解碼的音視頻對(duì)應(yīng)的時(shí)間點(diǎn)。值得注意的是,所述檢測(cè)到當(dāng)前正在播放的音視頻異常的方式包括:
a、方式一、分離出當(dāng)前正在播放的音視頻對(duì)應(yīng)的音頻和視頻,確定分離出的音頻和視頻在同一時(shí)刻的時(shí)間點(diǎn),若音頻和視頻在同一時(shí)刻的時(shí)間點(diǎn)不同,可確定當(dāng)前正在播放的音視頻異常。
其中,同一時(shí)刻表示具體的時(shí)間,如10點(diǎn);時(shí)間點(diǎn)表示音頻或視頻播放的具體時(shí)間,如播放12分整,或者是12分25秒。
值得注意的是,音視頻文件從音頻數(shù)據(jù)流編碼成音頻文件,從視頻數(shù)據(jù)流編碼成視頻文件時(shí),都記錄了對(duì)應(yīng)的時(shí)間點(diǎn),并且,同一個(gè)音視頻文件的同一幀畫面中,圖像和音頻也是相互符合的,如某一幀圖像對(duì)應(yīng)的時(shí)間點(diǎn)是12分12秒,與這一幀圖像匹配的音頻也是12分12秒,這樣后續(xù)在播放該音視頻時(shí),才能音像同步。雖然現(xiàn)有的音視頻播放過程,會(huì)出現(xiàn)音像不同步的問題,但也是由于一個(gè)畫面的圖像與另一個(gè)畫面的音頻同時(shí)出現(xiàn),導(dǎo)致音像不同步。因此,現(xiàn)有的音像不同步,實(shí)際上是音頻和視頻的時(shí)間軸沒有對(duì)齊,時(shí)間軸出現(xiàn)了偏差導(dǎo)致音像不同步,但是,音頻和視頻實(shí)際的時(shí)間點(diǎn)并沒有改變。因此,若音頻和視頻在同一播放時(shí)刻的時(shí)間點(diǎn)不同,即可確定當(dāng)前正在播放的音視頻異常。
b、方式二、判斷當(dāng)前正在播放的所述音視頻對(duì)應(yīng)的異常數(shù)據(jù)標(biāo)志位是否為預(yù)設(shè)值時(shí);
若當(dāng)前正在播放的所述音視頻對(duì)應(yīng)的異常數(shù)據(jù)標(biāo)志位為預(yù)設(shè)值,則確定當(dāng)前正在播放的所述音視頻異常。
在本實(shí)施方式中,終端在音視頻文件邊解碼邊播放的過程中,可實(shí)時(shí)或定時(shí)檢測(cè)剛解碼的音視頻中的音頻和視頻,當(dāng)音頻和視頻在同一時(shí)刻的時(shí)間點(diǎn)不一致時(shí),認(rèn)為所述音視頻異常,并將異常數(shù)據(jù)標(biāo)志位設(shè)為預(yù)設(shè)值,所述預(yù)設(shè)值根據(jù)具體情況進(jìn)行設(shè)置,此處不做限定,例如,設(shè)置為1。
若終端是實(shí)時(shí)檢測(cè)剛解碼的音視頻中的音頻和視頻,那么在檢測(cè)到音視頻中的音頻和視頻在同一時(shí)刻的時(shí)間點(diǎn)不一致時(shí),即可將異常數(shù)據(jù)標(biāo)志位設(shè)為預(yù)設(shè)值,并將所述異常數(shù)據(jù)標(biāo)志位與該音視頻關(guān)聯(lián)存儲(chǔ),后續(xù)在播放到該音視頻時(shí),若檢測(cè)到異常數(shù)據(jù)標(biāo)志位為預(yù)設(shè)值,可直接確定當(dāng)前正在播放的所述音視頻異常。當(dāng)然,這種情況下,一有音頻和視頻在同一時(shí)刻的時(shí)間點(diǎn)不一致,后續(xù)連著的音頻和視頻的時(shí)間點(diǎn)可能都會(huì)不一致,因此,也可直接將所述異常數(shù)據(jù)標(biāo)志位與后續(xù)的音視頻關(guān)聯(lián)存儲(chǔ)。直到獲取當(dāng)前解碼的視頻對(duì)應(yīng)的時(shí)間點(diǎn),并跳轉(zhuǎn)到至獲取的所述時(shí)間點(diǎn)所在音視頻文件位置,對(duì)音頻文件和視頻文件進(jìn)行解碼,才將上述異常數(shù)據(jù)標(biāo)志位的預(yù)設(shè)值清除。
若終端是定時(shí)檢測(cè)剛解碼的音視頻中的音頻和視頻,那么即可將所述異常數(shù)據(jù)標(biāo)志位與定時(shí)檢測(cè)的音視頻關(guān)聯(lián)存儲(chǔ),每次檢測(cè)到音視頻的音頻和視頻在同一時(shí)刻的時(shí)間點(diǎn)不一致,就將所述異常數(shù)據(jù)標(biāo)志位與檢測(cè)到的音視頻關(guān)聯(lián)存儲(chǔ)。后續(xù),在播放到音視頻時(shí),若檢測(cè)到異常數(shù)據(jù)標(biāo)志位為預(yù)設(shè)值,可直接確定播放的音視頻異常。
在本實(shí)施例中,由于異常數(shù)據(jù)標(biāo)志位的數(shù)值是在音視頻解碼時(shí)就標(biāo)記了,后續(xù)在音視頻播放時(shí),根據(jù)異常數(shù)據(jù)標(biāo)志位的值即可確定音視頻是否異常,而不用去提出音視頻的音頻和視頻,再去分析時(shí)間點(diǎn)是否相同,縮短了音視頻異常確定的時(shí)間,有效的提高了音視頻異常確定的效率,并且也提高了音視頻播放的智能性,因此,本實(shí)施例中,優(yōu)選采用方式二確定當(dāng)前正在播放的音視頻是否異常。
在本實(shí)施例中,在音視頻文件邊解碼邊播放的過程中,優(yōu)選對(duì)當(dāng)前正在播放的音視頻進(jìn)行檢測(cè),所述檢測(cè)的方式可以是實(shí)時(shí)檢測(cè),也可以是定時(shí)檢測(cè),以檢測(cè)當(dāng)前正在播放的音視頻是否異常,若檢測(cè)到正在播放的音視頻異常,此時(shí),獲取當(dāng)前解碼的視頻對(duì)應(yīng)的時(shí)間點(diǎn),也就是獲取剛解碼的視頻對(duì)應(yīng)的時(shí)間點(diǎn),后續(xù)可根據(jù)該視頻的時(shí)間點(diǎn),調(diào)整音頻的時(shí)間點(diǎn),以使得視頻的時(shí)間點(diǎn)與音頻在同一時(shí)刻的時(shí)間點(diǎn)同步,如在10:00時(shí),若視頻對(duì)應(yīng)的時(shí)間點(diǎn)是25:00,音頻對(duì)應(yīng)的時(shí)間點(diǎn)也應(yīng)該是25:00,這樣才能保持音視頻的同步播放,其中,所述25:00表示音視頻正常播放到該位置時(shí),需要25分鐘。
步驟S20,在獲取的所述時(shí)間點(diǎn)為預(yù)設(shè)的跳轉(zhuǎn)時(shí)間點(diǎn)時(shí),跳轉(zhuǎn)至獲取的所述時(shí)間點(diǎn)所在音視頻文件位置,對(duì)音頻文件和視頻文件進(jìn)行解碼;
在本實(shí)施例中,在獲取所述時(shí)間點(diǎn)后,將所述時(shí)間點(diǎn)與預(yù)設(shè)的跳轉(zhuǎn)時(shí)間點(diǎn)進(jìn)行比對(duì),以確定所述時(shí)間點(diǎn)與預(yù)設(shè)的跳轉(zhuǎn)時(shí)間點(diǎn)是否相同,若獲取的所述時(shí)間點(diǎn)與預(yù)設(shè)的跳轉(zhuǎn)時(shí)間點(diǎn)相同,則直接跳轉(zhuǎn)至獲取的所述時(shí)間點(diǎn)所在音視頻文件位置,對(duì)音頻文件和視頻文件進(jìn)行解碼。
當(dāng)然,可以理解的是,若獲取的所述時(shí)間點(diǎn)不是預(yù)設(shè)的跳轉(zhuǎn)時(shí)間點(diǎn),則所述終端會(huì)繼續(xù)解碼視頻,直到解碼的視頻的時(shí)間點(diǎn)與預(yù)設(shè)的跳轉(zhuǎn)時(shí)間點(diǎn)一致。
在本實(shí)施例中,所述執(zhí)行“跳轉(zhuǎn)至獲取的所述時(shí)間點(diǎn)所在音視頻文件位置,對(duì)音頻文件和視頻文件進(jìn)行解碼”的同時(shí),執(zhí)行以下步驟:
根據(jù)獲取的所述時(shí)間點(diǎn)調(diào)整音頻文件的時(shí)間點(diǎn),以使所述音頻文件與所述視頻文件的時(shí)間軸對(duì)齊。
也就是說,在獲取解碼的視頻對(duì)應(yīng)的時(shí)間點(diǎn)為預(yù)設(shè)的跳轉(zhuǎn)時(shí)間點(diǎn)時(shí),此時(shí),根據(jù)獲取的所述時(shí)間點(diǎn),對(duì)音頻文件的時(shí)間點(diǎn)進(jìn)行調(diào)整,以使所述音頻文件與所述視頻文件的時(shí)間軸對(duì)齊,也就是說,同一時(shí)刻,視頻對(duì)應(yīng)25:00,音頻也要對(duì)應(yīng)25:00;視頻對(duì)應(yīng)29:00,音頻也要對(duì)應(yīng)29:00。
步驟S30,從獲取的所述時(shí)間點(diǎn)播放解碼后的音視頻。
在本實(shí)施例中,對(duì)音頻文件和視頻文件進(jìn)行解碼,其實(shí)就是從同一個(gè)時(shí)間點(diǎn)開始,對(duì)音頻文件和視頻文件進(jìn)行解碼,那么解碼后的音視頻中,音頻和視頻的時(shí)間軸就一致了,后續(xù)所述終端可以從獲取的所述時(shí)間點(diǎn)播放解碼后的音視頻,使得最終播放的音視頻音像同步。
本實(shí)施例中,播放解碼后的音視頻,可在終端的顯示屏進(jìn)行播放顯示,也可以由終端輸出其它顯示設(shè)備中進(jìn)行播放顯示。
本實(shí)施例中,可以是在整個(gè)音視頻文件的解碼播放過程中,執(zhí)行上述操作,也可以是在音視頻文件中,提取出部分的音視頻文件進(jìn)行解碼播放過程,在提取的音視頻數(shù)據(jù)解碼成功,并播放了預(yù)設(shè)比值的音視頻片段之后,才繼續(xù)在音視頻文件中繼續(xù)進(jìn)行上述的解碼播放操作。
本實(shí)施例提出的音視頻播放方法,在檢測(cè)到當(dāng)前正在播放的音視頻異常時(shí),獲取當(dāng)前解碼的視頻對(duì)應(yīng)的時(shí)間點(diǎn),然后在獲取的所述時(shí)間點(diǎn)為預(yù)設(shè)的跳轉(zhuǎn)時(shí)間點(diǎn)時(shí),跳轉(zhuǎn)至獲取的所述時(shí)間點(diǎn)所在音視頻文件位置,對(duì)音頻文件和視頻文件進(jìn)行解碼,并從獲取的所述時(shí)間點(diǎn)播放解碼后的音視頻,實(shí)現(xiàn)了解碼后的音視頻中,音頻片段和視頻片段的時(shí)間點(diǎn)保持一致,使得最終輸出的音視頻也保持音像同步。
進(jìn)一步地,為了提高音視頻播放的智能性,基于第一實(shí)施例提出本發(fā)明音視頻播放方法的第二實(shí)施例,在本實(shí)施例中,參照?qǐng)D2,所述音視頻播放方法還包括:
步驟S40,在音視頻文件邊解碼邊播放的過程中,實(shí)時(shí)檢測(cè)解碼后的音頻片段和視頻片段的時(shí)間軸是否對(duì)齊;
步驟S50,在音頻片段和視頻片段的時(shí)間軸沒有對(duì)齊時(shí),將異常數(shù)據(jù)標(biāo)志位設(shè)為所述預(yù)設(shè)值,并將當(dāng)前播放時(shí)間點(diǎn)增加預(yù)設(shè)時(shí)間間隔,以得到所述跳轉(zhuǎn)時(shí)間點(diǎn)。
在本實(shí)施例中,在音視頻文件邊解碼邊播放的過程中,所述終端實(shí)時(shí)檢測(cè)解碼后的音頻片段和視頻片段的時(shí)間軸是否對(duì)齊,也就是說,檢測(cè)解碼后的音頻片段和視頻片段在每一個(gè)時(shí)刻對(duì)應(yīng)的兩個(gè)時(shí)間點(diǎn)是否一致,若音頻片段和視頻片段的時(shí)間軸沒有對(duì)齊,即解碼后的音頻片段和視頻片段在某一個(gè)時(shí)刻對(duì)應(yīng)的兩個(gè)時(shí)間點(diǎn)沒有一致。此時(shí),可認(rèn)為該音視頻有異常了,出現(xiàn)了音像不同步的問題,所述終端可先對(duì)異常的音頻片段和視頻片段進(jìn)行處理,所述處理方式包括:將音頻片段和視頻片段歸類起來,然后將異常數(shù)據(jù)標(biāo)志位設(shè)為所述預(yù)設(shè)值。第一實(shí)施例中已經(jīng)提到,所述預(yù)設(shè)值根據(jù)具體情況進(jìn)行設(shè)置,具體數(shù)值不做限定,在設(shè)置好了異常數(shù)據(jù)標(biāo)志位之后,將所述異常數(shù)據(jù)標(biāo)志位與歸類后的音頻片段和視頻片段關(guān)聯(lián)起來,便于后續(xù)終端在播放音視頻時(shí),根據(jù)所述異常數(shù)據(jù)標(biāo)志位即可快速確定音視頻有異常,并執(zhí)行相應(yīng)的時(shí)間軸調(diào)節(jié)操作。而不用再去提取出音視頻中的音頻和視頻,再去分析時(shí)間點(diǎn)等等操作,才能確定音視頻有異常,從而提高了音視頻異常確定的效率和智能性。
進(jìn)一步地,所述終端將當(dāng)前播放時(shí)間點(diǎn)增加預(yù)設(shè)時(shí)間間隔,以得到所述跳轉(zhuǎn)時(shí)間點(diǎn),并存儲(chǔ)記錄的所述跳轉(zhuǎn)時(shí)間點(diǎn),同樣便于后續(xù)跳轉(zhuǎn)到所述跳轉(zhuǎn)時(shí)間點(diǎn)中,重新進(jìn)行音視頻的解碼和播放,增加預(yù)設(shè)時(shí)間間隔,相當(dāng)于是丟棄了中間一小段不同步的音視頻。當(dāng)然,所述預(yù)設(shè)時(shí)間間隔應(yīng)當(dāng)是一個(gè)比較小的數(shù)值,如0.5秒,這些才能避免音視頻片段丟棄過多。
在本實(shí)施例中,所述音視頻文件邊解碼邊播放的過程中,實(shí)時(shí)檢測(cè)解碼后的音頻片段和視頻片段的時(shí)間軸是否對(duì)齊,在音頻片段和視頻片段的時(shí)間軸沒有對(duì)齊時(shí),將異常數(shù)據(jù)標(biāo)志位設(shè)為所述預(yù)設(shè)值,并將當(dāng)前播放時(shí)間點(diǎn)增加預(yù)設(shè)時(shí)間間隔,以得到所述跳轉(zhuǎn)時(shí)間點(diǎn),便于后續(xù)終端在播放音視頻時(shí),快速執(zhí)行音視頻的播放調(diào)整,使得音視頻音像同步的效率提高,并且音視頻播放的智能性也提高。
進(jìn)一步地,為了提高音視頻播放的靈活性,基于第一或第二實(shí)施例提出本發(fā)明音視頻播放方法的第三實(shí)施例,在本實(shí)施例中,參照?qǐng)D3,所述步驟S30之后,所述音視頻播放方法還包括:
步驟S60,清除所述異常數(shù)據(jù)標(biāo)志位的所述預(yù)設(shè)值,并清除所述跳轉(zhuǎn)時(shí)間點(diǎn)。
在本實(shí)施例中,當(dāng)終端可以正常播放音視頻時(shí),即可將所述異常數(shù)據(jù)標(biāo)志位對(duì)應(yīng)的所述預(yù)設(shè)值進(jìn)行清除,防止了正常播放音視頻時(shí),由于異常數(shù)據(jù)標(biāo)志位的所述預(yù)設(shè)值,對(duì)音視頻播放造成的誤導(dǎo)。同時(shí),清除所述跳轉(zhuǎn)時(shí)間點(diǎn),有效的釋放了存儲(chǔ)空間的占用,提高了音視頻播放的靈活性。
本發(fā)明進(jìn)一步提供一種音視頻播放系統(tǒng)。
參照?qǐng)D4,圖4為本發(fā)明音視頻播放系統(tǒng)較佳實(shí)施例的功能模塊示意圖。
需要強(qiáng)調(diào)的是,對(duì)本領(lǐng)域的技術(shù)人員來說,圖4所示功能模塊圖僅僅是一個(gè)較佳實(shí)施例的示例圖,本領(lǐng)域的技術(shù)人員圍繞圖4所示的音視頻播放系統(tǒng)的功能模塊,可輕易進(jìn)行新的功能模塊的補(bǔ)充;各功能模塊的名稱是自定義名稱,僅用于輔助理解該音視頻播放系統(tǒng)的各個(gè)程序功能塊,不用于限定本發(fā)明的技術(shù)方案,本發(fā)明技術(shù)方案的核心是,各自定義名稱的功能模塊所要達(dá)成的功能。
在本實(shí)施例中,所述音視頻播放系統(tǒng)包括:
獲取模塊10,用于在音視頻文件邊解碼邊播放的過程中,若檢測(cè)到當(dāng)前正在播放的音視頻異常,則獲取當(dāng)前解碼的視頻對(duì)應(yīng)的時(shí)間點(diǎn);
在本實(shí)施例中,所述音視頻文件邊解碼邊播放,具體是終端先解碼一部分音視頻,然后播放解碼后的音視頻,并在播放解碼后的音視頻時(shí),繼續(xù)解碼音視頻文件的剩余部分。在音視頻文件邊解碼邊播放的過程中,若檢測(cè)到當(dāng)前正在播放的音視頻有異常,則獲取模塊10獲取當(dāng)前剛解碼的音視頻對(duì)應(yīng)的時(shí)間點(diǎn)。值得注意的是,所述檢測(cè)當(dāng)前正在播放的音視頻異常的方式包括:
a、方式一、所述音視頻播放系統(tǒng)包括:
分離模塊,用于分離出當(dāng)前正在播放的音視頻對(duì)應(yīng)的音頻和視頻;
確定模塊,用于確定分離出的音頻和視頻在同一時(shí)刻的時(shí)間點(diǎn);
所述確定模塊,還用于若音頻和視頻在同一時(shí)刻的時(shí)間點(diǎn)不同,可確定當(dāng)前正在播放的音視頻異常。
其中,同一時(shí)刻表示具體的時(shí)間,如10點(diǎn);時(shí)間點(diǎn)表示音頻或視頻播放的具體時(shí)間,如播放12分整,或者是12分25秒。
值得注意的是,音視頻文件從音頻數(shù)據(jù)流編碼成音頻文件,從視頻數(shù)據(jù)流編碼成視頻文件時(shí),都記錄了對(duì)應(yīng)的時(shí)間點(diǎn),并且,同一個(gè)音視頻文件的同一幀畫面中,圖像和音頻也是相互符合的,如某一幀圖像對(duì)應(yīng)的時(shí)間點(diǎn)是12分12秒,與這一幀圖像匹配的音頻也是12分12秒,這樣后續(xù)在播放該音視頻時(shí),才能音像同步。雖然現(xiàn)有的音視頻播放過程,會(huì)出現(xiàn)音像不同步的問題,但也是由于一個(gè)畫面的圖像與另一個(gè)畫面的音頻同時(shí)出現(xiàn),導(dǎo)致音像不同步。因此,現(xiàn)有的音像不同步,實(shí)際上是音頻和視頻的時(shí)間軸沒有對(duì)齊,時(shí)間軸出現(xiàn)了偏差導(dǎo)致音像不同步,但是,音頻和視頻實(shí)際的時(shí)間點(diǎn)并沒有改變。因此,若音頻和視頻在同一播放時(shí)刻的時(shí)間點(diǎn)不同,即可確定當(dāng)前正在播放的音視頻異常。
b、方式二、所述音視頻播放系統(tǒng)包括:
判斷模塊,用于判斷當(dāng)前正在播放的所述音視頻對(duì)應(yīng)的異常數(shù)據(jù)標(biāo)志位是否為預(yù)設(shè)值時(shí);
確定模塊,用于若當(dāng)前正在播放的所述音視頻對(duì)應(yīng)的異常數(shù)據(jù)標(biāo)志位為預(yù)設(shè)值,則確定當(dāng)前正在播放的所述音視頻異常。
在本實(shí)施方式中,終端在音視頻文件邊解碼邊播放的過程中,可實(shí)時(shí)或定時(shí)檢測(cè)剛解碼的音視頻中的音頻和視頻,當(dāng)音頻和視頻在同一時(shí)刻的時(shí)間點(diǎn)不一致時(shí),認(rèn)為所述音視頻異常,并將異常數(shù)據(jù)標(biāo)志位設(shè)為預(yù)設(shè)值,所述預(yù)設(shè)值根據(jù)具體情況進(jìn)行設(shè)置,此處不做限定,例如,設(shè)置為1。
若終端是實(shí)時(shí)檢測(cè)剛解碼的音視頻中的音頻和視頻,那么在檢測(cè)到音視頻中的音頻和視頻在同一時(shí)刻的時(shí)間點(diǎn)不一致時(shí),即可將異常數(shù)據(jù)標(biāo)志位設(shè)為預(yù)設(shè)值,并將所述異常數(shù)據(jù)標(biāo)志位與該音視頻關(guān)聯(lián)存儲(chǔ),后續(xù)在播放到該音視頻時(shí),若檢測(cè)到異常數(shù)據(jù)標(biāo)志位為預(yù)設(shè)值,可直接確定當(dāng)前正在播放的所述音視頻異常。當(dāng)然,這種情況下,一有音頻和視頻在同一時(shí)刻的時(shí)間點(diǎn)不一致,后續(xù)連著的音頻和視頻的時(shí)間點(diǎn)可能都會(huì)不一致,因此,也可直接將所述異常數(shù)據(jù)標(biāo)志位與后續(xù)的音視頻關(guān)聯(lián)存儲(chǔ)。直到獲取當(dāng)前解碼的視頻對(duì)應(yīng)的時(shí)間點(diǎn),并跳轉(zhuǎn)到至獲取的所述時(shí)間點(diǎn)所在音視頻文件位置,對(duì)音頻文件和視頻文件進(jìn)行解碼,才將上述異常數(shù)據(jù)標(biāo)志位的預(yù)設(shè)值清除。
若終端是定時(shí)檢測(cè)剛解碼的音視頻中的音頻和視頻,那么即可將所述異常數(shù)據(jù)標(biāo)志位與定時(shí)檢測(cè)的音視頻關(guān)聯(lián)存儲(chǔ),每次檢測(cè)到音視頻的音頻和視頻在同一時(shí)刻的時(shí)間點(diǎn)不一致,就將所述異常數(shù)據(jù)標(biāo)志位與檢測(cè)到的音視頻關(guān)聯(lián)存儲(chǔ)。后續(xù),在播放到音視頻時(shí),若檢測(cè)到異常數(shù)據(jù)標(biāo)志位為預(yù)設(shè)值,可直接確定播放的音視頻異常。
在本實(shí)施例中,由于異常數(shù)據(jù)標(biāo)志位的數(shù)值是在音視頻解碼時(shí)就標(biāo)記了,后續(xù)在音視頻播放時(shí),根據(jù)異常數(shù)據(jù)標(biāo)志位的值即可確定音視頻是否異常,而不用去提出音視頻的音頻和視頻,再去分析時(shí)間點(diǎn)是否相同,縮短了音視頻異常確定的時(shí)間,有效的提高了音視頻異常確定的效率,并且也提高了音視頻播放的智能性,因此,本實(shí)施例中,優(yōu)選采用方式二確定當(dāng)前正在播放的音視頻是否異常。
在本實(shí)施例中,在音視頻文件邊解碼邊播放的過程中,優(yōu)選對(duì)當(dāng)前正在播放的音視頻進(jìn)行檢測(cè),所述檢測(cè)的方式可以是實(shí)時(shí)檢測(cè),也可以是定時(shí)檢測(cè),以檢測(cè)當(dāng)前正在播放的音視頻是否異常,若檢測(cè)到正在播放的音視頻異常,此時(shí),獲取模塊10獲取當(dāng)前解碼的視頻對(duì)應(yīng)的時(shí)間點(diǎn),也就是獲取剛解碼的視頻對(duì)應(yīng)的時(shí)間點(diǎn),后續(xù)可根據(jù)該視頻的時(shí)間點(diǎn),調(diào)整音頻的時(shí)間點(diǎn),以使得視頻的時(shí)間點(diǎn)與音頻在同一時(shí)刻的時(shí)間點(diǎn)同步,如在10:00時(shí),若視頻對(duì)應(yīng)的時(shí)間點(diǎn)是25:00,音頻對(duì)應(yīng)的時(shí)間點(diǎn)也應(yīng)該是25:00,這樣才能保持音視頻的同步播放,其中,所述25:00表示音視頻正常播放到該位置時(shí),需要25分鐘。
跳轉(zhuǎn)模塊20,用于在獲取的所述時(shí)間點(diǎn)為預(yù)設(shè)的跳轉(zhuǎn)時(shí)間點(diǎn)時(shí),跳轉(zhuǎn)至獲取的所述時(shí)間點(diǎn)所在音視頻文件位置;
解碼模塊30,用于對(duì)音頻文件和視頻文件進(jìn)行解碼;
在本實(shí)施例中,在獲取模塊10獲取所述時(shí)間點(diǎn)后,將所述時(shí)間點(diǎn)與預(yù)設(shè)的跳轉(zhuǎn)時(shí)間點(diǎn)進(jìn)行比對(duì),以確定所述時(shí)間點(diǎn)與預(yù)設(shè)的跳轉(zhuǎn)時(shí)間點(diǎn)是否相同,若獲取的所述時(shí)間點(diǎn)與預(yù)設(shè)的跳轉(zhuǎn)時(shí)間點(diǎn)相同,則跳轉(zhuǎn)模塊20直接跳轉(zhuǎn)至獲取的所述時(shí)間點(diǎn)所在音視頻文件位置,解碼模塊30對(duì)音頻文件和視頻文件進(jìn)行解碼。
當(dāng)然,可以理解的是,若獲取模塊10獲取的所述時(shí)間點(diǎn)不是預(yù)設(shè)的跳轉(zhuǎn)時(shí)間點(diǎn),則解碼模塊30會(huì)繼續(xù)解碼視頻,直到解碼的視頻的時(shí)間點(diǎn)與預(yù)設(shè)的跳轉(zhuǎn)時(shí)間點(diǎn)一致。
在本實(shí)施例中,所述音視頻播放系統(tǒng)還包括:
調(diào)整模塊,用于在所述跳轉(zhuǎn)模塊20跳轉(zhuǎn)至獲取的所述時(shí)間點(diǎn)所在音視頻文件位置,對(duì)音頻文件和視頻文件進(jìn)行解碼的同時(shí),根據(jù)獲取的所述時(shí)間點(diǎn)調(diào)整音頻文件的時(shí)間點(diǎn),以使所述音頻文件與所述視頻文件的時(shí)間軸對(duì)齊。
也就是說,在獲取解碼的視頻對(duì)應(yīng)的時(shí)間點(diǎn)為預(yù)設(shè)的跳轉(zhuǎn)時(shí)間點(diǎn)時(shí),此時(shí),調(diào)整模塊根據(jù)獲取的所述時(shí)間點(diǎn),對(duì)音頻文件的時(shí)間點(diǎn)進(jìn)行調(diào)整,以使所述音頻文件與所述視頻文件的時(shí)間軸對(duì)齊,也就是說,同一時(shí)刻,視頻對(duì)應(yīng)25:00,音頻也要對(duì)應(yīng)25:00;視頻對(duì)應(yīng)29:00時(shí),音頻也要對(duì)應(yīng)29:00。
播放模塊40,用于從獲取的所述時(shí)間點(diǎn)播放解碼后的音視頻。
在本實(shí)施例中,解碼模塊30對(duì)音頻文件和視頻文件進(jìn)行解碼,其實(shí)就是從同一個(gè)時(shí)間點(diǎn)開始,對(duì)音頻文件和視頻文件進(jìn)行解碼,那么解碼后的音視頻中,音頻和視頻的時(shí)間軸就一致了,后續(xù)播放模塊40可以從獲取的所述時(shí)間點(diǎn)播放解碼后的音視頻,使得最終播放的音視頻音像同步。
本實(shí)施例中,播放模塊40播放解碼后的音視頻,可在終端的顯示屏進(jìn)行播放顯示,也可以輸出至其它顯示設(shè)備中進(jìn)行播放顯示。
本實(shí)施例中,可以是在整個(gè)音視頻文件的解碼播放過程中,執(zhí)行上述操作,也可以是在音視頻文件中,提取出部分的音視頻文件進(jìn)行解碼播放過程,在提取的音視頻數(shù)據(jù)解碼成功,并播放了預(yù)設(shè)比值的音視頻片段之后,才繼續(xù)在音視頻文件中繼續(xù)進(jìn)行上述的解碼播放操作。
本實(shí)施例提出的音視頻播放系統(tǒng),在檢測(cè)到當(dāng)前正在播放的音視頻異常時(shí),獲取當(dāng)前解碼的視頻對(duì)應(yīng)的時(shí)間點(diǎn),然后在獲取的所述時(shí)間點(diǎn)為預(yù)設(shè)的跳轉(zhuǎn)時(shí)間點(diǎn)時(shí),跳轉(zhuǎn)至獲取的所述時(shí)間點(diǎn)所在音視頻文件位置,對(duì)音頻文件和視頻文件進(jìn)行解碼,并從獲取的所述時(shí)間點(diǎn)播放解碼后的音視頻,實(shí)現(xiàn)了解碼后的音視頻中,音頻片段和視頻片段的時(shí)間點(diǎn)保持一致,使得最終輸出的音視頻也保持音像同步。
進(jìn)一步地,為了提高音視頻播放的智能性,基于第一實(shí)施例提出本發(fā)明音視頻播放系統(tǒng)的第二實(shí)施例,在本實(shí)施例中,參照?qǐng)D5,所述音視頻播放系統(tǒng)還包括:
檢測(cè)模塊50,用于在音視頻文件邊解碼邊播放的過程中,實(shí)時(shí)檢測(cè)解碼后的音頻片段和視頻片段的時(shí)間軸是否對(duì)齊;
處理模塊60,用于在音頻片段和視頻片段的時(shí)間軸沒有對(duì)齊時(shí),將異常數(shù)據(jù)標(biāo)志位設(shè)為所述預(yù)設(shè)值,并將當(dāng)前播放時(shí)間點(diǎn)增加預(yù)設(shè)時(shí)間間隔,以得到所述跳轉(zhuǎn)時(shí)間點(diǎn)。
在本實(shí)施例中,在音視頻文件邊解碼邊播放的過程中,檢測(cè)模塊50實(shí)時(shí)檢測(cè)解碼后的音頻片段和視頻片段的時(shí)間軸是否對(duì)齊,也就是說,檢測(cè)模塊50檢測(cè)解碼后的音頻片段和視頻片段在每一個(gè)時(shí)刻對(duì)應(yīng)的兩個(gè)時(shí)間點(diǎn)是否一致,若音頻片段和視頻片段的時(shí)間軸沒有對(duì)齊,即解碼后的音頻片段和視頻片段在某一個(gè)時(shí)刻對(duì)應(yīng)的兩個(gè)時(shí)間點(diǎn)沒有一致。此時(shí),可認(rèn)為該音視頻有異常了,出現(xiàn)了音像不同步的問題,處理模塊60可先對(duì)異常的音頻片段和視頻片段進(jìn)行處理,所述處理方式包括:將音頻片段和視頻片段歸類起來,然后將異常數(shù)據(jù)標(biāo)志位設(shè)為所述預(yù)設(shè)值。第一實(shí)施例中已經(jīng)提到,所述預(yù)設(shè)值根據(jù)具體情況進(jìn)行設(shè)置,具體數(shù)值不做限定,在設(shè)置好了異常數(shù)據(jù)標(biāo)志位之后,處理模塊60將所述異常數(shù)據(jù)標(biāo)志位與歸類后的音頻片段和視頻片段關(guān)聯(lián)起來,便于后續(xù)終端在播放音視頻時(shí),根據(jù)所述異常數(shù)據(jù)標(biāo)志位即可快速確定音視頻有異常,并執(zhí)行相應(yīng)的時(shí)間軸調(diào)節(jié)操作。而不用再去提取出音視頻中的音頻和視頻,再去分析時(shí)間點(diǎn)等等操作,才能確定音視頻有異常,從而提高了音視頻異常確定的效率和智能性。
進(jìn)一步地,處理模塊60將當(dāng)前播放時(shí)間點(diǎn)增加預(yù)設(shè)時(shí)間間隔,以得到所述跳轉(zhuǎn)時(shí)間點(diǎn),并存儲(chǔ)記錄的所述跳轉(zhuǎn)時(shí)間點(diǎn),同樣便于后續(xù)跳轉(zhuǎn)到所述跳轉(zhuǎn)時(shí)間點(diǎn)中,重新進(jìn)行音視頻的解碼和播放,增加預(yù)設(shè)時(shí)間間隔,相當(dāng)于是丟棄了中間一小段不同步的音視頻。當(dāng)然,所述預(yù)設(shè)時(shí)間間隔應(yīng)當(dāng)是一個(gè)比較小的數(shù)值,如0.5秒,這些才能避免音視頻片段丟棄過多。
在本實(shí)施例中,所述音視頻文件邊解碼邊播放的過程中,實(shí)時(shí)檢測(cè)解碼后的音頻片段和視頻片段的時(shí)間軸是否對(duì)齊,在音頻片段和視頻片段的時(shí)間軸沒有對(duì)齊時(shí),將異常數(shù)據(jù)標(biāo)志位設(shè)為所述預(yù)設(shè)值,并將當(dāng)前播放時(shí)間點(diǎn)增加預(yù)設(shè)時(shí)間間隔,以得到所述跳轉(zhuǎn)時(shí)間點(diǎn),便于后續(xù)終端在播放音視頻時(shí),快速執(zhí)行音視頻的播放調(diào)整,使得音視頻音像同步的效率提高,并且音視頻播放的智能性也提高。
進(jìn)一步地,為了提高音視頻播放的靈活性,基于第一或第二實(shí)施例提出本發(fā)明音視頻播放系統(tǒng)的第三實(shí)施例,在本實(shí)施例中,參照?qǐng)D6,所述音視頻播放系統(tǒng)還包括:
清除模塊70,用于清除所述異常數(shù)據(jù)標(biāo)志位的所述預(yù)設(shè)值,并清除所述跳轉(zhuǎn)時(shí)間點(diǎn)。
在本實(shí)施例中,當(dāng)終端可以正常播放音視頻時(shí),清除模塊70即可將所述異常數(shù)據(jù)標(biāo)志位對(duì)應(yīng)的所述預(yù)設(shè)值進(jìn)行清除,防止了正常播放音視頻時(shí),由于異常數(shù)據(jù)標(biāo)志位的所述預(yù)設(shè)值,對(duì)音視頻播放造成的誤導(dǎo)。同時(shí),清除模塊70清除所述跳轉(zhuǎn)時(shí)間點(diǎn),有效的釋放了存儲(chǔ)空間的占用,提高了音視頻播放的靈活性。
需要說明的是,在本文中,術(shù)語“包括”、“包含”或者其任何其它變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者裝置不僅包括那些要素,而且還包括沒有明確列出的其它要素,或者是還包括為這種過程、方法、物品或者裝置所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括該要素的過程、方法、物品或者裝置中還存在另外的相同要素。
上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
以上僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其它相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。