本技術(shù)涉及音頻數(shù)據(jù)處理領(lǐng)域,特別涉及一種音頻播放方法、存儲(chǔ)介質(zhì)、設(shè)備和程序產(chǎn)品。
背景技術(shù):
1、傳統(tǒng)的k歌軟件中的片段唱功能支持用戶自定義選擇演唱范圍,往往是在下載整首歌曲的伴奏文件后定位到用戶自定義演唱范圍進(jìn)行演唱與錄制,導(dǎo)致用戶進(jìn)入演唱前的等待時(shí)間變長,用戶體驗(yàn)差。
2、因此,如何提升音頻的加載效率是本領(lǐng)域技術(shù)人員亟需解決的技術(shù)問題。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)的目的是提供一種音頻播放方法、計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)、電子設(shè)備和計(jì)算機(jī)程序產(chǎn)品,能夠快速響應(yīng)用戶的音頻片段播放請(qǐng)求,減少伴奏文件的加載緩存時(shí)長。
2、為解決上述技術(shù)問題,本技術(shù)提供一種音頻播放方法,具體技術(shù)方案如下:
3、獲取音頻片段播放請(qǐng)求;
4、確定所述音頻片段播放請(qǐng)求包含的請(qǐng)求音頻片段的片段時(shí)間范圍,以及所述請(qǐng)求音頻片段所屬的伴奏文件;
5、獲取所述伴奏文件的伴奏音頻頭信息;
6、根據(jù)所述伴奏音頻頭信息,從所述伴奏文件的音頻數(shù)據(jù)內(nèi)容中確定與所述片段時(shí)間范圍對(duì)應(yīng)的目標(biāo)數(shù)據(jù)范圍;
7、獲取所述伴奏文件的音頻數(shù)據(jù)內(nèi)容中與所述目標(biāo)數(shù)據(jù)范圍對(duì)應(yīng)的數(shù)據(jù)內(nèi)容,得到所述請(qǐng)求音頻片段,并播放所述請(qǐng)求音頻片段。
8、可選的,獲取所述伴奏文件的伴奏音頻頭信息包括:
9、若本地設(shè)備存在伴奏緩存文件,從所述伴奏緩存文件中獲取所述伴奏文件的伴奏音頻頭信息;
10、若所述本地設(shè)備無所述伴奏緩存文件,下載所述伴奏文件的伴奏音頻頭信息。
11、可選的,根據(jù)所述伴奏音頻頭信息,從所述伴奏文件的音頻數(shù)據(jù)內(nèi)容中確定與所述片段時(shí)間范圍對(duì)應(yīng)的目標(biāo)數(shù)據(jù)范圍包括:
12、根據(jù)所述伴奏音頻頭信息中的音頻采樣率、音頻包幀數(shù),以及所述片段時(shí)間范圍的開始時(shí)間計(jì)算得到開始音頻包位置;
13、根據(jù)所述伴奏音頻頭信息中流媒體數(shù)據(jù)段在所述伴奏文件中的偏移值、音頻流媒體獲取指定音頻包在數(shù)據(jù)段中的偏移位置函數(shù)和所述開始音頻包位置,確定所述片段時(shí)間范圍的開始時(shí)文件偏位置;
14、根據(jù)所述音頻采樣率、所述音頻包幀數(shù),以及所述片段時(shí)間范圍的結(jié)束時(shí)間計(jì)算得到結(jié)束音頻包位置;
15、根據(jù)所述伴奏音頻頭信息中流媒體數(shù)據(jù)段在所述伴奏文件中的偏移值、音頻流媒體獲取指定音頻包在數(shù)據(jù)段中的偏移位置函數(shù)和所述結(jié)束音頻包位置,確定所述片段時(shí)間范圍的結(jié)束時(shí)文件偏位置;
16、根據(jù)所述偏移值、所述開始時(shí)文件偏位置和所述結(jié)束時(shí)文件偏位置確定目標(biāo)數(shù)據(jù)范圍。
17、可選的,獲取所述伴奏文件的音頻數(shù)據(jù)內(nèi)容中與所述目標(biāo)數(shù)據(jù)范圍對(duì)應(yīng)的數(shù)據(jù)內(nèi)容,得到所述請(qǐng)求音頻片段包括:
18、若所述伴奏緩存文件包含全部所述片段時(shí)間范圍對(duì)應(yīng)的目標(biāo)數(shù)據(jù)范圍,從所述伴奏緩存文件中獲取所述伴奏文件的音頻數(shù)據(jù)內(nèi)容中與所述目標(biāo)數(shù)據(jù)范圍對(duì)應(yīng)的數(shù)據(jù)內(nèi)容,得到所述請(qǐng)求音頻片段;
19、若所述伴奏緩存文件包含所述片段時(shí)間范圍對(duì)應(yīng)的目標(biāo)數(shù)據(jù)范圍中的部分?jǐn)?shù)據(jù)范圍,根據(jù)所述伴奏緩存文件包含的已緩存時(shí)間范圍和所述片段時(shí)間范圍確定額外時(shí)間范圍,下載所述額外時(shí)間范圍對(duì)應(yīng)的額外數(shù)據(jù)內(nèi)容,整合所述部分?jǐn)?shù)據(jù)范圍和所述額外數(shù)據(jù)內(nèi)容得到所述請(qǐng)求音頻片段;
20、若所述伴奏文件未包含所述片段時(shí)間范圍對(duì)應(yīng)的目標(biāo)數(shù)據(jù)范圍,下載所述伴奏文件的音頻數(shù)據(jù)內(nèi)容中與所述目標(biāo)數(shù)據(jù)范圍對(duì)應(yīng)的數(shù)據(jù)內(nèi)容,得到所述請(qǐng)求音頻片段。
21、可選的,獲取所述伴奏文件的音頻數(shù)據(jù)內(nèi)容中與所述目標(biāo)數(shù)據(jù)范圍對(duì)應(yīng)的數(shù)據(jù)內(nèi)容,得到所述請(qǐng)求音頻片段之后,還包括:
22、以數(shù)據(jù)塊為單位記錄所述請(qǐng)求音頻片段,并應(yīng)用分塊緩存信息表維護(hù)各所述數(shù)據(jù)塊的起止時(shí)間;所述分塊緩存信息表用于根據(jù)所述數(shù)據(jù)塊的起止時(shí)間執(zhí)行音頻片段復(fù)用。
23、可選的,若在獲取所述音頻片段播放請(qǐng)求之后獲取同屬于所述伴奏文件的二次音頻片段播放請(qǐng)求,還包括:
24、確定所述二次音頻片段播放請(qǐng)求對(duì)應(yīng)的第二片段時(shí)間范圍;
25、比對(duì)所述分塊緩存信息表維護(hù)的各所述數(shù)據(jù)塊的起止時(shí)間,根據(jù)起止時(shí)間滿足所述第二片段時(shí)間范圍的目標(biāo)數(shù)據(jù)塊得到所述第二片段時(shí)間范圍對(duì)應(yīng)的二次請(qǐng)求音頻片段;
26、播放所述二次請(qǐng)求音頻片段,以響應(yīng)所述二次音頻片段播放請(qǐng)求。
27、可選的,若存在起止時(shí)間與所述第二片段時(shí)間范圍存在部分重合的待處理數(shù)據(jù)塊,還包括:
28、確定所述待處理數(shù)據(jù)塊包含的時(shí)間處理類型;所述時(shí)間處理類型包括所述開始時(shí)間和所述結(jié)束時(shí)間;
29、根據(jù)所述時(shí)間處理類型對(duì)應(yīng)的時(shí)間點(diǎn)對(duì)所述待處理數(shù)據(jù)塊進(jìn)行裁剪,得到屬于所述第二片段時(shí)間范圍內(nèi)的裁剪數(shù)據(jù)塊;所述裁剪數(shù)據(jù)塊用于構(gòu)成所述二次請(qǐng)求音頻片段。
30、可選的,若所述第二片段時(shí)間范圍為所述分塊緩存信息表包含全部數(shù)據(jù)塊對(duì)應(yīng)時(shí)間范圍的真子集,根據(jù)所述分塊緩存信息表記錄的各所述數(shù)據(jù)塊的起止時(shí)間獲取所述第二片段時(shí)間范圍對(duì)應(yīng)的二次請(qǐng)求音頻片段包括:
31、根據(jù)所述分塊緩存信息表維護(hù)的所述數(shù)據(jù)塊的起止時(shí)間確定覆蓋所述第二片段時(shí)間范圍的最少目標(biāo)數(shù)據(jù)塊;
32、根據(jù)所述最少目標(biāo)數(shù)據(jù)塊獲取所述第二片段時(shí)間范圍對(duì)應(yīng)的二次請(qǐng)求音頻片段。
33、可選的,若所述第二片段時(shí)間范圍與所述分塊緩存信息表包含全部數(shù)據(jù)塊對(duì)應(yīng)時(shí)間范圍存在交集,或所述分塊緩存信息表包含全部數(shù)據(jù)塊對(duì)應(yīng)時(shí)間范圍為所述第二片段時(shí)間范圍的真子集,根據(jù)所述分塊緩存信息表記錄的各所述數(shù)據(jù)塊的起止時(shí)間獲取所述第二片段時(shí)間范圍對(duì)應(yīng)的二次請(qǐng)求音頻片段包括:
34、根據(jù)所述分塊緩存信息表維護(hù)的各所述數(shù)據(jù)塊的起止時(shí)間確定滿足所述第二片段時(shí)間范圍的目標(biāo)數(shù)據(jù)塊,以及不滿足所述第二片段時(shí)間范圍的額外數(shù)據(jù)塊;
35、在所述額外數(shù)據(jù)塊下載完成后,按照播放順序重排所述目標(biāo)數(shù)據(jù)塊和所述額外數(shù)據(jù)塊,得到二次請(qǐng)求音頻片段。
36、本技術(shù)還提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如上所述的音頻播放方法的步驟。
37、本技術(shù)還提供一種電子設(shè)備,包括存儲(chǔ)器和處理器,所述存儲(chǔ)器中存有計(jì)算機(jī)程序,所述處理器調(diào)用所述存儲(chǔ)器中的計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)如上所述的音頻播放方法的步驟。
38、本技術(shù)還提供一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被執(zhí)行時(shí)實(shí)現(xiàn)如上所述音頻播放方法的步驟。
39、本技術(shù)提供一種音頻播放方法,包括:獲取音頻片段播放請(qǐng)求;確定所述音頻片段播放請(qǐng)求包含的請(qǐng)求音頻片段的片段時(shí)間范圍,以及所述請(qǐng)求音頻片段所屬的伴奏文件;獲取所述伴奏文件的伴奏音頻頭信息;根據(jù)所述伴奏音頻頭信息,從所述伴奏文件的音頻數(shù)據(jù)內(nèi)容中確定與所述片段時(shí)間范圍對(duì)應(yīng)的目標(biāo)數(shù)據(jù)范圍;獲取所述伴奏文件的音頻數(shù)據(jù)內(nèi)容中與所述目標(biāo)數(shù)據(jù)范圍對(duì)應(yīng)的數(shù)據(jù)內(nèi)容,得到所述請(qǐng)求音頻片段,并播放所述請(qǐng)求音頻片段。
40、本技術(shù)在獲取音頻片段播放請(qǐng)求時(shí),先確定包含的請(qǐng)求音頻片段的片段時(shí)間范圍,通過獲取伴奏音頻頭信息,可根據(jù)伴奏音頻頭信息確定相應(yīng)的目標(biāo)數(shù)據(jù)范圍,可動(dòng)態(tài)調(diào)整下載內(nèi)容范圍,只需下載播放實(shí)際所需的目標(biāo)數(shù)據(jù)范圍即可,無需下載完整的伴奏文件,有效降低了用戶下載等待耗時(shí),提升進(jìn)入片段播放場(chǎng)景的速度,避免非必要數(shù)據(jù)下載帶來的流量浪費(fèi)。在此基礎(chǔ)上,也可以進(jìn)一步從本地設(shè)備的已緩存音頻片段目標(biāo)數(shù)據(jù)范圍對(duì)應(yīng)的數(shù)據(jù)內(nèi)容,實(shí)現(xiàn)本地緩存文件的多次復(fù)用。
41、本技術(shù)還提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)和電子設(shè)備,具有上述有益效果,此處不再贅述。