本技術(shù)涉及分布式硬件,尤其涉及一種同步播放系統(tǒng)及方法、電子設(shè)備、存儲(chǔ)介質(zhì)和芯片系統(tǒng)。
背景技術(shù):
1、分布式操作系統(tǒng),將各類不同終端設(shè)備的能力進(jìn)行整合,實(shí)現(xiàn)硬件互助、資源共享,為用戶提供流暢的全場景體驗(yàn)?;诜植际接布?,分布式操作系統(tǒng)可以向用戶提供各種分布式業(yè)務(wù),比如分布式相機(jī)、分布式屏幕、分布式音頻等,此類分布式業(yè)務(wù)一般包含音頻/視頻傳輸能力,例如,在音視頻投播場景下,源端將原始音頻/視頻流編碼壓縮,通過傳輸模塊發(fā)送到播放端,解碼還原并播放。
2、在基于分布式硬件的視音頻投播場景下,由于音頻數(shù)據(jù)和視頻數(shù)據(jù)的采樣率、后處理時(shí)長存在差異,以及網(wǎng)絡(luò)抖動(dòng)等原因,跨設(shè)備播放情況下,可能會(huì)出現(xiàn)音頻和視頻播放不同步的問題,影響用戶體驗(yàn)。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)提供一種同步播放系統(tǒng)及方法、電子設(shè)備、存儲(chǔ)介質(zhì)和芯片系統(tǒng),可以實(shí)現(xiàn)跨設(shè)備投播的分布式業(yè)務(wù)場景下的音畫同步播放。
2、第一方面,本技術(shù)實(shí)施例提供一種同步播放系統(tǒng),該同步播放系統(tǒng)包括第一設(shè)備、第二設(shè)備和第三設(shè)備;第三設(shè)備用于將第一數(shù)據(jù)流傳輸至第一設(shè)備以播放,以及將第二數(shù)據(jù)流傳輸至第二設(shè)備以播放;第一數(shù)據(jù)流和第二數(shù)據(jù)流為待同步播放的兩路數(shù)據(jù)流;第一數(shù)據(jù)流包括多個(gè)第一數(shù)據(jù)幀;第二數(shù)據(jù)流包括多個(gè)第二數(shù)據(jù)幀;第一設(shè)備,用于獲取第一時(shí)間戳,將第一時(shí)間戳發(fā)送至第三設(shè)備;第三設(shè)備,用于接收第一時(shí)間戳并轉(zhuǎn)發(fā)至第二設(shè)備;第二設(shè)備,用于接收第一時(shí)間戳,讀取待播放的第二數(shù)據(jù)幀對應(yīng)的第二時(shí)間戳,以及至少根據(jù)第一時(shí)間戳和第二時(shí)間戳,計(jì)算第一播放時(shí)間差,基于第一播放時(shí)間差,確定針對待播放的第二數(shù)據(jù)幀執(zhí)行的同步播放策略。
3、在一種可行的實(shí)現(xiàn)方式中,第二設(shè)備,在執(zhí)行讀取待播放的第二數(shù)據(jù)幀對應(yīng)的第二時(shí)間戳的操作時(shí),具體用于:每隔預(yù)定時(shí)間間隔,從緩存隊(duì)列中取出待播放的下一個(gè)第二數(shù)據(jù)幀,讀取第二時(shí)間戳。
4、在一種可行的實(shí)現(xiàn)方式中,第二設(shè)備,在執(zhí)行至少根據(jù)第一時(shí)間戳和第二時(shí)間戳,計(jì)算第一播放時(shí)間差的操作時(shí),具體用于:確定待播放的下一個(gè)第二數(shù)據(jù)幀與第m個(gè)第一數(shù)據(jù)幀存在映射關(guān)系的情況下,至少根據(jù)第m個(gè)第一數(shù)據(jù)幀對應(yīng)的第一時(shí)間戳,和待播放的下一個(gè)第二數(shù)據(jù)幀對應(yīng)的第二時(shí)間戳,計(jì)算第一播放時(shí)間差;其中,映射關(guān)系,基于序列號和/或播放時(shí)間戳pts確定。
5、在一種可行的實(shí)現(xiàn)方式中,第二設(shè)備,還用于識別待播放的第二數(shù)據(jù)幀的數(shù)據(jù)類型,反饋給第三設(shè)備;第一設(shè)備,還用于識別待播放的第一數(shù)據(jù)幀的數(shù)據(jù)類型,反饋給第三設(shè)備;第三設(shè)備,還用于接收第一設(shè)備和第二設(shè)備分別反饋的各自的數(shù)據(jù)類型,確定同步管理策略。
6、第二方面,本技術(shù)實(shí)施例還提供一種同步播放系統(tǒng),該同步播放系統(tǒng)包括第一設(shè)備、第二設(shè)備和第三設(shè)備;第三設(shè)備將第一數(shù)據(jù)流傳輸至第一設(shè)備以播放,將第二數(shù)據(jù)流傳輸至第二設(shè)備以播放;第一數(shù)據(jù)流包括多個(gè)第一數(shù)據(jù)幀;第二數(shù)據(jù)流包括多個(gè)第二數(shù)據(jù)幀;第一設(shè)備,用于確定時(shí)延信息;時(shí)延信息包括傳輸時(shí)延和解碼時(shí)延;其中,傳輸時(shí)延表示第一數(shù)據(jù)幀從第三設(shè)備傳輸?shù)降谝辉O(shè)備的時(shí)長;解碼時(shí)延為一個(gè)第一數(shù)據(jù)幀占用的解碼時(shí)長;第三設(shè)備,用于接收時(shí)延信息,獲取第一數(shù)據(jù)幀的發(fā)送時(shí)間,以及至少根據(jù)發(fā)送時(shí)間和時(shí)延信息,得到第一數(shù)據(jù)幀在第一設(shè)備的播放時(shí)間的估計(jì)值;在發(fā)送第二數(shù)據(jù)幀之前,將估計(jì)值作為第五時(shí)間戳,添加到第二數(shù)據(jù)幀中;第二設(shè)備,用于讀取待播放的第二數(shù)據(jù)幀的第五時(shí)間戳,將第五時(shí)間戳與當(dāng)前時(shí)刻進(jìn)行差值計(jì)算,獲得第二播放時(shí)間差;基于第二播放時(shí)間差,確定針對待播放的第二數(shù)據(jù)幀執(zhí)行的同步播放策略。
7、第三方面,本技術(shù)實(shí)施例還提供一種同步播放系統(tǒng),該同步播放系統(tǒng)包括第四設(shè)備、第五設(shè)備和第六設(shè)備;第四設(shè)備和第五設(shè)備分別將第四數(shù)據(jù)流和第五數(shù)據(jù)流傳輸至第六設(shè)備以播放;第四設(shè)備、第五設(shè)備和第六設(shè)備均設(shè)有控制中心,控制中心預(yù)留接口用于設(shè)置同步組信息;第四設(shè)備和第五設(shè)備,用于分別將同步組信息設(shè)置到本地的控制中心,以及將設(shè)置后的同步組信息分別發(fā)送至第六設(shè)備;同步組信息包括同步基準(zhǔn)信息和流信息,同步基準(zhǔn)信息,包含源端設(shè)備身份信息以及播放端設(shè)備身份信息;流信息,包含源端各個(gè)設(shè)備發(fā)送的數(shù)據(jù)流的數(shù)據(jù)類型信息;第六設(shè)備,用于接收第四設(shè)備和第五設(shè)備分別發(fā)送的同步組信息,以及至少基于同步組信息,確定針對待播放的數(shù)據(jù)流的同步播放策略。
8、第四方面,本技術(shù)技術(shù)方案提供了一種同步播放方法,該方法應(yīng)用于第二設(shè)備,第二設(shè)備用于接收第三設(shè)備發(fā)送的第二數(shù)據(jù)流并播放;其中,第三設(shè)備還用于傳輸?shù)谝粩?shù)據(jù)流至第一設(shè)備以播放;第一數(shù)據(jù)流和第二數(shù)據(jù)流為待同步播放的兩路數(shù)據(jù)流,第一數(shù)據(jù)流包括多個(gè)第一數(shù)據(jù)幀;第二數(shù)據(jù)流包括多個(gè)第二數(shù)據(jù)幀;該方法包括:接收第一時(shí)間戳;第一時(shí)間戳表示第m個(gè)第一數(shù)據(jù)幀在第一設(shè)備的實(shí)際播放時(shí)間;m≥1且為整數(shù);讀取待播放的第二數(shù)據(jù)幀對應(yīng)的第二時(shí)間戳;第二時(shí)間戳用于表示第二數(shù)據(jù)流中各個(gè)第二數(shù)據(jù)幀的播放時(shí)序;至少根據(jù)第一時(shí)間戳和第二時(shí)間戳,計(jì)算第一播放時(shí)間差;基于第一播放時(shí)間差,確定針對待播放的第二數(shù)據(jù)幀執(zhí)行的同步播放策略。該方法以第一數(shù)據(jù)流中各數(shù)據(jù)幀的實(shí)際播放時(shí)間作為參考,計(jì)算第二數(shù)據(jù)流與第一數(shù)據(jù)流的播放時(shí)間差,通過播放時(shí)間差可以判斷第二數(shù)據(jù)流的播放進(jìn)度相對于第一數(shù)據(jù)流是超前還是滯后或者同步,進(jìn)而調(diào)整第二數(shù)據(jù)流的播放進(jìn)度,進(jìn)而能夠?qū)崿F(xiàn)同步播放。
9、在一種可行的實(shí)現(xiàn)方式中,接收第一時(shí)間戳,包括:接收第三設(shè)備轉(zhuǎn)發(fā)的第一時(shí)間戳;第一時(shí)間戳由第一設(shè)備生成并發(fā)送至第三設(shè)備。第一時(shí)間戳由第三設(shè)備轉(zhuǎn)發(fā),相比于第一設(shè)備直接發(fā)送至第二設(shè)備等其他信息傳遞方式,可以減輕數(shù)據(jù)鏈路的傳輸壓力,減少傳遞第一時(shí)間戳這一關(guān)鍵信息占用的時(shí)延。
10、在一種可行的實(shí)現(xiàn)方式中,讀取待播放的第二數(shù)據(jù)幀對應(yīng)的第二時(shí)間戳,包括:每隔預(yù)定時(shí)間間隔,從緩存隊(duì)列中取出待播放的下一個(gè)第二數(shù)據(jù)幀,讀取第二時(shí)間戳。讀取第二時(shí)間戳的觸發(fā)條件是每隔預(yù)定時(shí)間間隔則觸發(fā)一次,可以通過設(shè)置調(diào)整時(shí)間間隔來控制讀取第二時(shí)間戳的讀取頻次,進(jìn)而控制計(jì)算播放時(shí)間差的頻次,頻次越高,則相當(dāng)于在更細(xì)粒度的時(shí)間內(nèi)判斷是否同步。
11、在一種可行的實(shí)現(xiàn)方式中,至少根據(jù)第一時(shí)間戳和第二時(shí)間戳,計(jì)算第一播放時(shí)間差,包括:確定待播放的下一個(gè)第二數(shù)據(jù)幀與第m個(gè)第一數(shù)據(jù)幀存在映射關(guān)系的情況下,至少根據(jù)第m個(gè)第一數(shù)據(jù)幀對應(yīng)的第一時(shí)間戳,和待播放的下一個(gè)第二數(shù)據(jù)幀對應(yīng)的第二時(shí)間戳,計(jì)算第一播放時(shí)間差;其中,映射關(guān)系,基于序列號和/或播放時(shí)間戳pts確定?;诘谝粫r(shí)間戳和第二時(shí)間戳來計(jì)算播放時(shí)間差,可以在一定程度上反映出第一數(shù)據(jù)流和第二數(shù)據(jù)流的播放進(jìn)度的差異。
12、在一種可行的實(shí)現(xiàn)方式中,至少根據(jù)第一時(shí)間戳和第二時(shí)間戳,計(jì)算第一播放時(shí)間差,包括:根據(jù)第一時(shí)間戳、第二時(shí)間戳、第一處理時(shí)長和第二處理時(shí)長,計(jì)算第一播放時(shí)間差;其中,第一處理時(shí)長,為一個(gè)第一數(shù)據(jù)幀從緩存隊(duì)列取出,到播放占用的處理時(shí)長的估計(jì)值;第二處理時(shí)長,為一個(gè)第二數(shù)據(jù)幀從緩存隊(duì)列取出,到播放占用的處理時(shí)長的估計(jì)值。進(jìn)一步引入第一處理時(shí)長和第二處理時(shí)長兩個(gè)參數(shù)來計(jì)算播放時(shí)間差,可以更精確地反映出第一數(shù)據(jù)流和第二數(shù)據(jù)流的播放進(jìn)度的差異。
13、在一種可行的實(shí)現(xiàn)方式中,同步播放策略包括等待、送顯和追趕中的至少一種;基于第一播放時(shí)間差,確定針對待播放的第二數(shù)據(jù)幀執(zhí)行的同步播放策略,包括:將第一播放時(shí)間差與預(yù)定的第一閾值區(qū)間進(jìn)行比較;在第一播放時(shí)間差小于閾值區(qū)間的最小值的情況下,判定第一數(shù)據(jù)流的播放滯后于第二數(shù)據(jù)流,確定針對待播放的第二數(shù)據(jù)幀執(zhí)行的同步播放策略為等待;在第一播放時(shí)間差大于閾值區(qū)間的最大值的情況下,判定第一數(shù)據(jù)流的播放超前于第二數(shù)據(jù)流,確定針對待播放的第二數(shù)據(jù)幀執(zhí)行的同步播放策略為追趕;在第一播放時(shí)間差屬于閾值區(qū)間情況下,判定第一數(shù)據(jù)流的播放與第二數(shù)據(jù)流的播放相對同步,確定針對待播放的第二數(shù)據(jù)幀執(zhí)行的同步播放策略為送顯。
14、在一種可行的實(shí)現(xiàn)方式中,等待,包括降低播放速率、等待第一預(yù)定時(shí)長、丟幀中的一種或多種;其中第一預(yù)定時(shí)長基于閾值區(qū)間中的最小值與第一播放時(shí)間差的差值確定;追趕,包括提高播放速率和/或丟幀。
15、第五方面,本技術(shù)實(shí)施例還提供一種同步播放方法,該方法應(yīng)用于第三設(shè)備,第三設(shè)備用于傳輸?shù)谝粩?shù)據(jù)流至第一設(shè)備以播放,以及傳輸?shù)诙?shù)據(jù)流至第二設(shè)備以播放;其中,第一數(shù)據(jù)流和第二數(shù)據(jù)流為待同步播放的兩路數(shù)據(jù)流,第一數(shù)據(jù)流包括多個(gè)第一數(shù)據(jù)幀;第二數(shù)據(jù)流包括多個(gè)第二數(shù)據(jù)幀;該方法包括:接收時(shí)延信息;時(shí)延信息包括傳輸時(shí)延和解碼時(shí)延;其中,傳輸時(shí)延表示第m個(gè)第一數(shù)據(jù)幀從第三設(shè)備傳輸?shù)降谝辉O(shè)備的時(shí)長;解碼時(shí)延為第m個(gè)第一數(shù)據(jù)幀占用的解碼時(shí)長;m≥1且為整數(shù);獲取第m個(gè)第一數(shù)據(jù)幀的發(fā)送時(shí)間;至少根據(jù)發(fā)送時(shí)間和時(shí)延信息,得到第m個(gè)第一數(shù)據(jù)幀在第一設(shè)備的播放時(shí)間的估計(jì)值;在發(fā)送第二數(shù)據(jù)幀之前,將估計(jì)值作為第五時(shí)間戳,添加到第二數(shù)據(jù)幀;第五時(shí)間戳,用于與當(dāng)前時(shí)刻進(jìn)行差值計(jì)算獲得第二播放時(shí)間差,以確定針對待播放的第二數(shù)據(jù)幀執(zhí)行的同步播放策略。該方法根據(jù)第一數(shù)據(jù)流的歷史時(shí)延信息,對第一數(shù)據(jù)流中各個(gè)數(shù)據(jù)幀的播放時(shí)間進(jìn)行估計(jì),以該估計(jì)值作為參考,第二設(shè)備通過比較該估計(jì)值和當(dāng)前時(shí)間,就可以判斷出播放進(jìn)度的差異,進(jìn)而實(shí)現(xiàn)同步播放。
16、在一種可行的實(shí)現(xiàn)方式中,至少根據(jù)發(fā)送時(shí)間和時(shí)延信息,得到第一數(shù)據(jù)幀在第一設(shè)備的播放時(shí)間的估計(jì)值,包括:至少根據(jù)第m個(gè)第一數(shù)據(jù)幀的發(fā)送時(shí)間和時(shí)延信息,得到第m個(gè)第一數(shù)據(jù)幀在第一設(shè)備的播放時(shí)間的估計(jì)值;將估計(jì)值作為第五時(shí)間戳,添加到第二數(shù)據(jù)幀中,包括:將估計(jì)值作為第五時(shí)間戳,添加到與第m個(gè)第一數(shù)據(jù)幀具有映射關(guān)系的第二數(shù)據(jù)幀,其中,映射關(guān)系,基于序列號和/或播放時(shí)間戳pts確定。具有映射關(guān)系的兩個(gè)數(shù)據(jù)幀,也就是應(yīng)當(dāng)同步播放的兩個(gè)數(shù)據(jù)幀,將第五時(shí)間戳添加到與第m個(gè)第一數(shù)據(jù)幀有映射關(guān)系的第二數(shù)據(jù)幀上,相當(dāng)于將第m個(gè)第一數(shù)據(jù)幀的預(yù)估播放時(shí)間標(biāo)記在了相應(yīng)的第二數(shù)據(jù)幀上,在播放前,第二設(shè)備僅需要對比各個(gè)第二數(shù)據(jù)幀上的第五時(shí)間戳與當(dāng)前時(shí)間,即可判斷播放進(jìn)度的差異,進(jìn)而實(shí)現(xiàn)同步播放。
17、在一種可行的實(shí)現(xiàn)方式中,至少根據(jù)發(fā)送時(shí)間和時(shí)延信息,得到第一數(shù)據(jù)幀在第一設(shè)備的播放時(shí)間的估計(jì)值,包括:根據(jù)發(fā)送時(shí)間、時(shí)延信息、第三時(shí)間戳和第四時(shí)間戳,得到第一數(shù)據(jù)幀在第一設(shè)備的播放時(shí)間的估計(jì)值;其中,第三時(shí)間戳,為針對第一數(shù)據(jù)幀添加的播放時(shí)間戳pts,用于表示第一數(shù)據(jù)流中各個(gè)第一數(shù)據(jù)幀的播放時(shí)序;第四時(shí)間戳,為針對第二數(shù)據(jù)幀添加的播放時(shí)間戳pts,用于表示第二數(shù)據(jù)流中各個(gè)第二數(shù)據(jù)幀的播放時(shí)序。該方式給出了一種計(jì)算播放時(shí)間估計(jì)值的可行方案,計(jì)算出的估計(jì)值,可以相對準(zhǔn)確地反映出第一數(shù)據(jù)流和第二數(shù)據(jù)流的播放進(jìn)度的差異。
18、第六方面,本技術(shù)實(shí)施例還提供一種同步播放方法,該方法應(yīng)用于第二設(shè)備,第二設(shè)備用于接收第三設(shè)備發(fā)送的第二數(shù)據(jù)流并播放;其中,第三設(shè)備還用于傳輸?shù)谝粩?shù)據(jù)流至第一設(shè)備以播放;第一數(shù)據(jù)流和第二數(shù)據(jù)流為待同步播放的兩路數(shù)據(jù)流,第一數(shù)據(jù)流包括多個(gè)第一數(shù)據(jù)幀;第二數(shù)據(jù)流包括多個(gè)第二數(shù)據(jù)幀;該方法包括:讀取待播放的第二數(shù)據(jù)幀對應(yīng)的第五時(shí)間戳;其中,第五時(shí)間戳,為第一數(shù)據(jù)幀在第一設(shè)備的播放時(shí)間的估計(jì)值,至少根據(jù)發(fā)送時(shí)間和時(shí)延信息得到;其中,時(shí)延信息包括傳輸時(shí)延和解碼時(shí)延;傳輸時(shí)延表示第一數(shù)據(jù)幀從第三設(shè)備傳輸?shù)降谝辉O(shè)備的時(shí)長;解碼時(shí)延為一個(gè)第一數(shù)據(jù)幀占用的解碼時(shí)長;發(fā)送時(shí)間為第三設(shè)備發(fā)送第一數(shù)據(jù)幀的時(shí)間;將第五時(shí)間戳與當(dāng)前時(shí)刻進(jìn)行差值計(jì)算,獲得第二播放時(shí)間差;基于第二播放時(shí)間差,確定針對待播放的第二數(shù)據(jù)幀執(zhí)行的同步播放策略。
19、在一種可行的實(shí)現(xiàn)方式中,同步播放策略包括等待、送顯和追趕中的至少一種;基于第二播放時(shí)間差,確定針對待播放的第二數(shù)據(jù)幀執(zhí)行的同步播放策略,包括:將第二播放時(shí)間差與預(yù)定的第一閾值區(qū)間進(jìn)行比較;在第二播放時(shí)間差小于閾值區(qū)間的最小值的情況下,判定第一數(shù)據(jù)流的播放滯后于第二數(shù)據(jù)流,確定針對待播放的第二數(shù)據(jù)幀執(zhí)行的同步播放策略為等待;在第二播放時(shí)間差大于閾值區(qū)間的最大值的情況下,判定第一數(shù)據(jù)流的播放超前于第二數(shù)據(jù)流,確定針對待播放的第二數(shù)據(jù)幀執(zhí)行的同步播放策略為追趕;在第二播放時(shí)間差屬于閾值區(qū)間情況下,判定第一數(shù)據(jù)流的播放與第二數(shù)據(jù)流的播放相對同步,確定針對待播放的第二數(shù)據(jù)幀執(zhí)行的同步播放策略為送顯。
20、第七方面,本技術(shù)實(shí)施例還提供一種同步播放方法,該方法應(yīng)用于第六設(shè)備,第六設(shè)備用于接收第四設(shè)備發(fā)送的第四數(shù)據(jù)流和第五設(shè)備發(fā)送的第五數(shù)據(jù)流,以及將第四數(shù)據(jù)流和第五數(shù)據(jù)流同步播放;該方法包括:接收第四設(shè)備和第五設(shè)備分別發(fā)送的同步組信息;同步組信息包括同步基準(zhǔn)信息和流信息,同步基準(zhǔn)信息,包含源端設(shè)備身份信息以及播放端設(shè)備身份信息;流信息,包含源端各個(gè)設(shè)備發(fā)送的數(shù)據(jù)流的數(shù)據(jù)類型信息;至少基于同步組信息,確定針對待播放的數(shù)據(jù)流的同步播放策略。
21、第八方面,本技術(shù)技術(shù)方案還提供一種電子設(shè)備,用于通過數(shù)據(jù)傳輸接口發(fā)送數(shù)據(jù),該電子設(shè)備包括:一個(gè)或多個(gè)處理器;存儲(chǔ)器;至少一個(gè)應(yīng)用程序;以及一個(gè)或多個(gè)計(jì)算機(jī)程序,其中一個(gè)或多個(gè)計(jì)算機(jī)程序被存儲(chǔ)在存儲(chǔ)器中,一個(gè)或多個(gè)計(jì)算機(jī)程序包括指令,當(dāng)指令被電子設(shè)備執(zhí)行時(shí),使得電子設(shè)備執(zhí)行如上述第四方面至第七方面中任一項(xiàng)的方法。
22、第九方面,本技術(shù)技術(shù)方案還提供一種存儲(chǔ)介質(zhì),包括計(jì)算機(jī)指令,當(dāng)計(jì)算機(jī)指令在電子設(shè)備上運(yùn)行時(shí),使得電子設(shè)備執(zhí)行如上述第四方面至第七方面中任一項(xiàng)所述的方法。
23、第十方面,本技術(shù)技術(shù)方案還提供一種芯片系統(tǒng),包括:通信接口,用于輸入和/或輸出數(shù)據(jù);處理器,用于執(zhí)行計(jì)算機(jī)可執(zhí)行程序,使得安裝有芯片系統(tǒng)的設(shè)備執(zhí)行如上述第四方面至第七方面中任一項(xiàng)所述的方法。