本發明涉及移動通信技術領域,特別涉及一種分享視頻流數據的方法、源設備及電子設備。
背景技術:
Miracast是以WIFI直連為基礎的無線顯示標準,是利用WIFI Direct建立的P2P網絡(Peer-to-peer networking)實現一個設備向另一個設備實現同步傳屏的技術。其中,發送端稱為源設備(source),接收端稱為目標設備(Sink)。目前Miracast技術越來越普及,很多智能手機、平板電腦、掌上電腦、筆記本電腦、臺式電腦、智能電視等設備支持Miracast功能。例如,一臺支持Miracast功能的智能手機(源設備)與一臺支持Miracast功能的智能電視(目標設備)基于Miracast建立連接后,可以實現將智能手機的屏幕畫面同步顯示在智能電視上,從而實現智能手機與智能電視的屏幕畫面共享。
在實現本發明的過程中,發明人發現至少存在如下問題:由于源設備和目標設備一旦在基于Miracast協議建立連接后,除非斷開連接,否則源設備和目標設備的屏幕畫面會在整個傳屏的過程中完全同步。這意味著如果源設備臨時需要運行一些具有隱私性的應用程序時(如通話軟件、金融交易軟件),目標設備的屏幕也會同步顯示該應用程序的界面。此時,如果用戶不希望將具有隱私性的應用程序的界面同步顯示到目標設備,就必須斷開連接以暫停傳屏,當用戶希望具有隱私性的應用程序運行結束后繼續與目標設備進行傳屏,就需要再一次與目標設備建立連接。這樣會帶來耗費時間、操作復雜的問題。
技術實現要素:
本發明的目的是實現源設備和目標設備在基于Miracast建立連接后的共享多媒體文件的過程中,能夠在不斷開連接、仍舊共享多媒體文件的情況下,實現源設備與目標設備的屏幕畫面不同步,從而當源設備運行隱私程序時,既保護用戶的隱私,又省去再次連接的步驟,簡化了操作過程、節約了時間。
根據本發明實施例的一個方面,提供了一種發送視頻流數據的方法,包括:獲取異步指令;響應所述異步指令,控制Miracast模塊停止從屏幕錄像緩存區中抓取第一視頻流數據,并控制Miracast模塊從正在運行的播放器所對應的視頻緩存區中獲取第二視頻流數據;其中,所述第一視頻流數據為Miracast模塊對呈現在屏幕中的畫面進行錄像得到的數據;通過基于WIFI Direct協議建立的通信通道將所述第二視頻流數據發送。
根據本發明實施例的又一方面,提供了一種發送視頻流數據的源設備,包括:指令獲取模塊,用于獲取異步指令;更改抓取模塊,用于在接收到所述異步指令后,控制Miracast模塊停止從屏幕錄像緩存區中抓取第一視頻流數據,并控制Miracast模塊從正在運行的播放器所對應的視頻緩存區中獲取第二視頻流數據;其中,所述第一視頻流數據為Miracast模塊對呈現在屏幕中的畫面進行錄像得到的數據;通信模塊,用于通過基于WIFI Direct協議建立的通信通道將所述第二視頻流數據發送。
根據本發明實施例的又一方面,提供了一種電子設備,包括:至少一個第一處理器;以及,
與所述至少一個第一處理器通信連接的第一存儲器;其中,
所述第一存儲器存儲有可被所述至少一個第一處理器執行的指令,所述指令被所述至少一個第一處理器執行,以使所述至少一個第一處理器能夠實現如上所述的發送視頻流數據的方法。
本發明實施例的有益效果在于,因為采用了在獲取異步指令后,從正在運行的播放器所對應的視頻緩存區中獲取視頻流數據,而不是從屏幕錄像緩存區中獲取視頻流數據,所以克服了現有技術中在基于Miracast進行傳屏的過程中,源設備與目標設備的屏幕所顯示的畫面必須時時一致的技術問題,進而達到能根據用戶的需求實現在需要一致的時候一致,在不需要一致的時候能夠保證屏幕顯示的畫面不一致但目標設備仍舊能夠接收到源設備向其分享的視頻文件的技術效果。
附圖說明
圖1是現有技術中基于Miracast建立連接的源設備與目標設備共享多媒體文件的示意圖;
圖2是本發明發送視頻流數據方法的第一實施例的流程圖;
圖3是本發明發送視頻流數據方法的第二實施例的流程圖;
圖4是本發明發送視頻流數據方法的第三實施例的流程圖;
圖5是本發明發送視頻流數據的源設備的第一實施例的模塊關系圖;
圖6是本發明發送視頻流數據的源設備的第二實施例的模塊關系圖;
圖7是本發明發送視頻流數據的源設備的第三實施例的模塊關系圖。
具體實施方式
為使本發明的目的、技術方案和優點更加清楚明了,下面結合具體實施方式并參照附圖,對本發明進一步詳細說明。應該理解,這些描述只是示例性的,而并非要限制本發明的范圍。此外,在以下說明中,省略了對公知結構和技術的描述,以避免不必要地混淆本發明的概念。
圖1是現有技術中基于Miracast建立連接的源設備與目標設備共享多媒體文件的示意圖。
如圖1所示,現有技術中,源設備包括Miracast模塊和通信模塊。其中,Miracast模塊包括鏡像單元、抓取單元。鏡像單元,用于對呈現在屏幕中的畫面進行錄像,得到第一視頻流數據。抓取單元,用于對從屏幕錄像緩存區中抓取第一視頻流數據,并將所述第一視頻流數據發送至通信模塊。通信模塊基于WIFI Direct協議建立的通信通道將第一視頻流數據發送至目標設備。其中,屏幕錄像緩存區為源設備的CPU的緩存器中開辟的一塊區域,用于存儲鏡像單元對呈現在屏幕中的畫面進行錄像所得到的第一視頻流數據。
源設備在與目標設備的Miracast模塊建立連接后,Miracast模塊的鏡像單元啟動,對呈現在源設備的屏幕顯示模塊中的畫面進行錄像得到視頻流數據,并將視頻流數據存放在屏幕錄像緩存區中,之后將視頻流數據發送至目標設備。可知,源設備與目標設備實現屏幕共享的畫面即為存放在屏幕錄像緩存區中的視頻流數據。
鑒于源設備與目標設備實現屏幕共享的畫面為存放在屏幕錄像緩存區中的視頻流數據。以下以一個具體實例來說明在實現本發明的過程中,發明人發現的問題。
一部支持Miracast協議的手機(源設備)與一臺支持Miracast協議的電視(目標設備)建立連接后,當在手機的前臺運行播放器以播放一個視頻,手機的屏幕會顯示該視頻的播放畫面,Miracast模塊的鏡像單元啟動,對呈現在手機屏幕中的畫面進行錄像得到視頻流數據,并將視頻流數據存放在屏幕錄像緩存區中,Miracast模塊的抓取單元將視頻流數據從屏幕錄像緩存區取出并將其發送至手機的通信模塊,通信模塊再將其發送至電視。電視的屏幕則同步顯示該視頻的播放畫面。此時,當手機的用戶需要臨時運行其他應用程序但不希望關閉視頻播放器(因為有些視頻播放器一但關閉后再開啟后,不會保留歷史播放記錄,會重頭播放),會將視頻播放器退到后臺運行,手機的屏幕畫面由之前的視頻播放畫面替換為該應用程序的界面,由于Miracast模塊的鏡像單元始終是對呈現在手機屏幕中的畫面進行錄像得到視頻流數據,此時得到的視頻流數據的內容為應用程序的界面,電視的屏幕因此會同步顯示該應用程序的界面。如果臨時運行的應用程序具有隱私性(如通話軟件、金融交易軟件),此時,電視的屏幕同步顯示該應用程序的界面則會暴露用戶的隱私。如果用戶不希望暴露隱私,則只能斷開當前手機與電視的連接,待具該應用程序運行結束后再一次與電視連接。這樣會帶來耗費時間、操作復雜的問題。
圖2是本發明發送視頻流數據方法的第一實施例的流程圖。其中,圖2所示的發送視頻流數據方法可以適用于支持Miracast的智能手機(如Android手機、Ios手機)、平板電腦、掌上電腦、移動互聯網設備MoobileInernetDevices以及智能電視、臺式電腦等設備。
如圖2所示,在本實施例中,發送視頻流數據方法包括一下步驟S1-S3:
步驟S1,獲取異步指令。
具體為獲取用戶發送的異步指令。本發明實施例中,用戶發送異步指令的方式具有多樣性,例如,用戶可以通過在源設備上觸碰按鈕進行發送異步指令,也可以是用戶通過甩動源設備進行發送異步指令,本發明實施例不作限定。當通過甩動源設備進行輸入異步指令時,源設備可以獲取甩動操作的甩動參數,并將獲取到的甩動參數與預設的甩動參數是否匹配,若匹配,則將該甩動操作視為發送異步指令的操作,否則將該甩動操作視為無效操作。預設甩動參數是為了防止誤操作。
需要說明的是,在獲取異步指令之前,源設備的Miracast模塊中的鏡像單元對呈現在屏幕中的畫面進行錄像得到第一視頻流數據,并將第一視頻流數據存放在屏幕錄像緩存區中;Miracast模塊中的抓取單元對從屏幕錄像緩存區中抓取第一視頻流數據,并將第一視頻流數據發送至通信單元;通信單元基于WIFI直連協議將第一視頻流數據發送給目標設備。
步驟S2,響應異步指令,控制Miracast模塊停止從屏幕錄像緩存區中抓取第一視頻流數據,并控制Miracast模塊從正在運行的播放器所對應的視頻緩存區中獲取第二視頻流數據。其中,第一視頻流數據為對呈現在屏幕中的畫面進行錄像得到的數據。播放器在運行時,會在源設備的CPU的緩存器中占據一塊緩存區,用來存儲數據,該緩存區即為所述視頻緩存區。
在一個優選的實施例中,控制Miracast模塊停止從屏幕錄像緩存區中抓取第一視頻流數據,并控制Miracast模塊從正在運行的播放器所對應的視頻緩存區中獲取第二視頻流數據包括:將Miracast模塊的抓取地址由屏幕錄像緩存區的地址更改為正在運行的播放器所對應的視頻緩存區的地址。
步驟S3,通過基于WIFI Direct協議建立的通信通道將第二視頻流數據發送。
基于WIFI Direct協議建立通信通道為現有技術,在此不再贅述,需要說明的是,源設備的通信模塊通過基于WIFI Direct協議建立的通信通道將所述第二視頻流數據發送至目標設備。
本發明實施例的有益效果在于,因為采用了在獲取異步指令后,從正在運行的播放器所對應的視頻緩存區中獲取視頻流數據,而不是從屏幕錄像緩存區中獲取視頻流數據,所以克服了現有技術中在基于Miracast技術進行傳屏的過程中,源設備與目標設備的屏幕所顯示的畫面必須時時一致的技術問題,進而達到能根據用戶的需求實現在需要一致的時候一致,在不需要一致的時候能夠保證屏幕顯示的畫面不一致但目標設備仍舊能夠接收到源設備向其分享的視頻文件的技術效果,避免了現有技術傳屏時為了保護用戶隱私而操作繁瑣的問題。
圖3是本發明發送視頻流數據方法的第二實施例的流程圖。
如圖3所示,本實施方式以上述第一實施方式為基礎,在步驟S3通過基于WIFI Direct協議建立的通信通道將第二視頻流數據發送的步驟之后,還包括步驟S4-S6:
步驟S4,獲取恢復同步指令。
本發明實施例中,用戶發送恢復同步指令的方式具有多樣性,例如,用戶可以通過在源設備上觸碰與上述異步指令不同的按鈕進行發送恢復同步指令,也可以是用戶通過甩動源設備進行發送恢復同步指令,本發明實施例不作限定。當通過甩動源設備進行輸入恢復同步指令時,源設備可以獲取甩動操作的甩動參數,并將獲取到的甩動參數與預設的甩動參數是否匹配,若匹配,則將該甩動操作視為發送恢復同步指令的操作,否則將該甩動操作視為無效操作。預設甩動參數是為了防止誤操作。
步驟S5,響應恢復同步指令,控制Miracast模塊停止從正在運行的播放器所對應的視頻緩存區中獲取第二視頻流數據,并控制Miracast模塊恢復從屏幕錄像緩存區中抓取第一視頻流數據。
具體地,在源設備檢測到用戶發送的恢復同步指令之后,控制Miracast模塊的抓取單元停止從正在運行的播放器所對應的視頻緩存區中獲取第二視頻流數據,并控制Miracast模塊的抓取單元恢復從屏幕錄像緩存區中抓取第一視頻流數據。其中,第一視頻流數據為對呈現在屏幕中的畫面進行錄像得到的數據。在一個優選的實施例中,控制Miracast模塊停止從正在運行的播放器所對應的視頻緩存區中獲取第二視頻流數據,并控制Miracast模塊恢復從屏幕錄像緩存區中抓取第一視頻流數據:將Miracast模塊中抓取單元的抓取地址由屏幕錄像緩存區的地址更改為正在運行的播放器所對應的視頻緩存區的地址。
步驟S6,通過基于WIFI Direct協議建立的通信通道將第一視頻流數據發送。
基于WIFI Direct協議建立通信通道為現有技術,在此不再贅述,需要說明的是,源設備的通信模塊通過基于WIFI Direct協議建立的通信通道將所述第一視頻流數據發送至目標設備。
本發明實施例的有益效果在于,因為采用了在獲取恢復同步指令,從從屏幕錄像緩存區中獲取視頻流數據,而不是從正在運行的播放器所對應的視頻緩存區中獲取視頻流數據,能夠便于用戶恢復Mriacast原來的狀態。
圖4是本發明發送視頻流數據方法的第三實施例的流程圖
如圖4所示,如果運行的播放器的數量為多個,則從正在運行的播放器所對應的視頻緩存區中獲取第二視頻流數據的步驟之前,還包括以下步驟S01和步驟S02:
步驟S01,比較多個播放器從前臺退出至后臺的時間;
步驟S02,選擇退出至后臺的時間最晚的播放器所對應的視頻緩存區作為獲取第二視頻流數據的緩存區。
本發明實施例的有益效果在于,根據播放器從前臺退出至后臺的時間來判斷哪個播放器是用戶最近打開的播放器,從而能夠在后臺運行多個播放器的時候,選擇用戶最近打開的播放器所對應的緩存區作為Mriacast模塊抓取第二視頻流的緩存區。
本發明的實施方式還提供了一種接收視頻流數據的方法,包括:接收上述發送視頻流數據方法的任一項所提到的源設備所發送的第一視頻流數據和第二視頻流數據。具體的發送視頻流數據方法可以適用于支持Miracast的智能手機(如Android手機、Ios手機)、平板電腦、掌上電腦、移動互聯網設備MoobileInernetDevices以及智能電視、臺式電腦等設備。
圖5是本發明發送視頻流數據的源設備的第一實施例的模塊關系圖。
其中,圖5所示的源設備可以為支持Miracast的智能手機(如Android手機、Ios手機)、平板電腦、掌上電腦、移動互聯網設備MoobileInernetDevices以及智能電視、臺式電腦等設備。
如圖5所示,在本實施例中,發送視頻流數據的源設備包括:指令獲取模塊10、更改抓取模塊20和通信模塊70,還包括Miracast模塊30、緩存器(包括屏幕錄像緩存區40和視頻緩存區60)以及安裝在當前源設備上的播放器50(軟件)。其中,Miracast模塊30、緩存器和播放器50為現有技術,其實現方式現有技術中均有記載,且不為本發明的發明點,在此不再贅述。
指令獲取模塊10,用于獲取異步指令,并將該異步指令發送給更改抓取模塊20。具體地,指令獲取模塊10獲取的是用戶發送的異步指令。本發明實施例中,用戶發送異步指令的方式具有多樣性,例如,用戶可以通過在源設備上觸碰按鈕進行發送異步指令,也可以是用戶通過甩動源設備進行發送異步指令,本發明實施例不作限定。當通過甩動源設備進行輸入異步指令時,源設備可以獲取甩動操作的甩動參數,并將獲取到的甩動參數與預設的甩動參數是否匹配,若匹配,則將該甩動操作視為發送異步指令的操作,否則將該甩動操作視為無效操作。預設甩動參數是為了防止誤操作。
需要說明的是,指令獲取模塊10在獲取異步指令之前,源設備的Miracast模塊30中的鏡像單元對呈現在屏幕中的畫面進行錄像得到第一視頻流數據,并將第一視頻流數據存放在屏幕錄像緩存區40中;Miracast模塊30中的抓取單元對從屏幕錄像緩存區40中抓取第一視頻流數據,并將第一視頻流數據發送至通信單元;通信單元基于WIFI直連協議將第一視頻流數據發送給目標設備。
更改抓取模塊20接收到異步指令后,控制Miracast模塊30停止從屏幕錄像緩存區40中抓取第一視頻流數據,并控制Miracast模塊30從正在運行的播放器50所對應的視頻緩存區60中獲取第二視頻流數據。播放器50在運行時,會在源設備的CPU的緩存器中占據一塊緩存區,用來存儲數據,該緩存區即為所述視頻緩存區60。
在一個優選的實施例中,更改抓取模塊20包括第一地址更改單元,用于將Miracast模塊30的抓取地址由屏幕錄像緩存區40的地址更改為正在運行的播放器50所對應的視頻緩存區60的地址,從而使得源設備的Miracast模塊30的抓取單元停止從屏幕錄像緩存區40中抓取第一視頻流數據,并從正在運行的播放器50所對應的視頻緩存區60中獲取第二視頻流數據。
通信模塊70,用于通過基于WIFI Direct協議建立的通信通道將所述第二視頻流數據發送。基于WIFI Direct協議建立通信通道為現有技術,在此不再贅述,需要說明的是,源設備的通信模塊70通過基于WIFI Direct協議建立的通信通道將所述第二視頻流數據發送至目標設備。
本發明實施例的有益效果在于,
圖6是本發明發送視頻流數據的源設備的第二實施例的模塊關系圖。
如圖6所示,本實施方式以上述發送視頻流數據的源設備的第一實施方式為基礎。
指令獲取模塊10,還用于獲取恢復同步指令。具體的,用于本發明實施例中,用戶發送恢復同步指令的方式具有多樣性,例如,用戶可以通過在源設備上觸碰與上述異步指令不同的按鈕進行發送恢復同步指令,也可以是用戶通過甩動源設備進行發送恢復同步指令,本發明實施例不作限定。當通過甩動源設備進行輸入恢復同步指令時,源設備可以獲取甩動操作的甩動參數,并將獲取到的甩動參數與預設的甩動參數是否匹配,若匹配,則將該甩動操作視為發送恢復同步指令的操作,否則將該甩動操作視為無效操作。預設甩動參數是為了防止誤操作。
更改抓取模塊20,還用于在接收到恢復同步指令之后,控制Miracast模塊30停止從正在運行的播放器50所對應的視頻緩存區60中獲取第二視頻流數據,并控制Miracast模塊30恢復從屏幕錄像緩存區40中抓取第一視頻流數據。具體地,在源設備的更改抓取模塊20接收到用戶發送的恢復同步指令之后,更改抓取模塊20控制源設備的Miracast模塊30的抓取單元停止從正在運行的播放器50所對應的視頻緩存區60中獲取第二視頻流數據,并控制其恢復從屏幕錄像緩存區40中抓取第一視頻流數據。其中,第一視頻流數據為對呈現在屏幕中的畫面進行錄像得到的數據。
在一個優選的實施例中,更改抓取模塊20包括第二地址更改單元,用于將Miracast模塊30的抓取地址由正在運行的播放器50所對應的視頻緩存區60的地址更改為屏幕錄像緩存區40的地址,從而使得源設備的Miracast模塊30的抓取單元停止從正在運行的播放器50所對應的視頻緩存區60中獲取第二視頻流數據,并恢復從屏幕錄像緩存區40中抓取第一視頻流數據。
通信模塊70,還用于通過基WIFI Direct協議建立的通信通道將第一視頻流數據發送。基于WIFI Direct協議建立通信通道為現有技術,在此不再贅述,需要說明的是,源設備的通信模塊70通過基于WIFI Direct協議建立的通信通道將所述第一視頻流數據發送至目標設備。
本發明實施例的有益效果在于,因為采用了在獲取恢復同步指令,從從屏幕錄像緩存區中獲取視頻流數據,而不是從正在運行的播放器所對應的視頻緩存區中獲取視頻流數據,能夠便于用戶恢復Mriacast原來的狀態。
圖7是本發明發送視頻流數據的源設備的第三實施例的模塊關系圖。
本實施方式以上述發送視頻流數據的源設備的任一項實施方式為基礎。
如圖7所示,若正在運行的播放器50的數量為多個,則發送視頻流數據的源設備還包括比較模塊和選擇模塊;
比較模塊,用于比較多個播放器50從前臺退出至后臺的時間。選擇模塊,用于選擇退出至后臺的時間最晚的播放器50所對應的視頻緩存區60作為獲取第二視頻流數據的緩存區,并將選擇結果發送至更改抓取模塊20。
本發明實施例的有益效果在于,根據播放器從前臺退出至后臺的時間來判斷哪個播放器是用戶最近打開的播放器,從而能夠在后臺運行多個播放器的時候,選擇用戶最近打開的播放器所對應的緩存區作為Mriacast模塊抓取第二視頻流的緩存區。
本發明實施例還同時提供了一種電子設備,包括:至少一個第一處理器;以及,
與所述至少一個第一處理器通信連接的第一存儲器;其中,
所述第一存儲器存儲有可被所述至少一個第一處理器執行的指令,所述指令被所述至少一個第一處理器執行,以使所述至少一個第一處理器能夠實現如上所述的發送視頻流數據的方法。
此外,本發明實施例提供了一種非暫態計算機可讀存儲介質,非暫態計算機可讀存儲介質存儲計算機指令,計算機指令用于使計算機執行上述任一個實施例的方法。本發明實施例還提供了一種計算機程序產品,該計算機程序產品包括計算機指令,所述計算機指令用于使計算機執行上述任一個實施例的方法。
本發明的實施方式還提供了一種接收視頻流數據的目標設備,用于接收上述發送視頻流數據的源設備任一項所發送的第一視頻流數據和第二視頻流數據。具體地,目標設備可以為支持Miracast的智能手機(如Android手機、Ios手機)、平板電腦、掌上電腦、移動互聯網設備MoobileInernetDevices以及智能電視、臺式電腦等設備。
本發明的實施方式還提供了一種分享視頻流數據的系統,包括上述任一項實施例中的發送視頻流數據的源設備和接收視頻流數據的目標設備。
應當理解的是,本發明的上述具體實施方式僅僅用于示例性說明或解釋本發明的原理,而不構成對本發明的限制。因此,在不偏離本發明的精神和范圍的情況下所做的任何修改、等同替換、改進等,均應包含在本發明的保護范圍之內。此外,本發明所附權利要求旨在涵蓋落入所附權利要求范圍和邊界、或者這種范圍和邊界的等同形式內的全部變化和修改例。