System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本申請涉及計算機,具體涉及一種屏幕共享方法及裝置。
技術介紹
1、實時音視頻通話中的屏幕共享技術能夠做到讓參與者共享設備屏幕上的內容,屏幕共享技術已成為現代通信和協作工具不可或缺的一部分,大大擴展了人們之間的互動和信息分享方式,廣泛應用于各種場景,包括遠程工作、在線會議、遠程教育、技術支持、虛擬會議、網絡游戲等。
2、目前移動終端在進行屏幕共享時,對移動終端本身內存消耗過大。特別是,蘋果手機在執行屏幕共享時占用的內存空間強制限制在50m以下,一旦屏幕共享占用的內存空間超過50m,采集屏幕流的擴展程序就會崩潰。目前業界類似問題的處理方案是限制視頻質量不超過720p,或者視頻幀數在30之內。這些方案以犧牲視頻質量為代價,治標不治本,仍然存在處理屏幕視頻流時占用的內存空間過多的問題。
技術實現思路
1、本申請提供了一種屏幕共享方法及裝置,能夠減少屏幕共享對移動終端占用的內存空間。所述技術方案如下。
2、第一方面,提供了一種屏幕共享方法,應用于移動終端,所述移動終端運行有主應用以及擴展程序,所述方法包括:
3、所述擴展程序采集所述移動終端的屏幕中呈現的視頻流,以得到原始視頻流數據;
4、所述擴展程序對所述原始視頻流數據中視頻幀包括的原始圖像信息進行yuv解碼,以得到中間數據;
5、所述擴展程序對所述中間數據進行拆解,以得到幀頭數據、基礎信息、y數據塊、u數據塊以及v數據塊,并分別將所述幀頭數據、所述基礎信息、所述y數據塊、所述u數
6、所述擴展程序分別將二進制化的所述幀頭數據、二進制化的所述基礎信息、二進制化的所述y數據塊、二進制化的所述u數據塊以及二進制化的所述v數據塊發送至所述主應用;
7、所述主應用基于接收到的二進制化的所述幀頭數據,確定所述視頻幀傳輸結束;
8、所述主應用對接收到的二進制化的所述y數據塊、二進制化的所述u數據塊以及二進制化的所述v數據塊進行拼接,以得到完整的所述視頻幀。
9、在一些實施方式中,所述擴展程序對所述中間數據進行拆解,以得到幀頭數據、基礎信息、y數據塊、u數據塊以及v數據塊,并分別將所述幀頭數據、所述基礎信息、所述y數據塊、所述u數據塊以及所述v數據塊轉換成二進制數據,包括:
10、所述擴展程序從所述中間數據中獲取基礎信息、y數據塊、u數據塊以及v數據塊;
11、所述擴展程序為所述基礎信息、所述y數據塊、所述u數據塊以及所述v數據塊分配內存空間,并初始化內存塊;
12、所述擴展程序將所述基礎信息、所述y數據塊、所述u數據塊以及所述v數據塊復制至所述內存塊的初始位置,更新所述內存塊的初始位置;
13、所述擴展程序將所述基礎信息、所述y數據塊、所述u數據塊以及所述v數據塊封裝為二進制數據塊,并標志索引;
14、所述擴展程序分別將二進制化的所述幀頭數據、二進制化的所述基礎信息、二進制化的所述y數據塊、二進制化的所述u數據塊以及二進制化的所述v數據塊發送至所述主應用之后,所述方法還包括:
15、所述擴展程序釋放二進制化的所述幀頭數據、二進制化的所述基礎信息、二進制化的所述y數據塊、二進制化的所述u數據塊以及二進制化的所述v數據塊占用的內存空間。
16、在一些實施方式中,所述方法還包括:
17、所述擴展程序和所述主應用通過socket建立連接;
18、所述擴展程序分別將二進制化的所述幀頭數據、二進制化的所述基礎信息、二進制化的所述y數據塊、二進制化的所述u數據塊以及二進制化的所述v數據塊發送至所述主應用,包括:
19、所述擴展程序分別將二進制化的所述幀頭數據、二進制化的所述基礎信息、二進制化的所述y數據塊、二進制化的所述u數據塊以及二進制化的所述v數據塊,通過socket發送至所述主應用。
20、在一些實施方式中,所述主應用對接收到的二進制化的所述y數據塊、二進制化的所述u數據塊以及二進制化的所述v數據塊進行拼接之前,所述方法還包括:
21、所述主應用對接收到的二進制化的所述y數據塊、二進制化的所述u數據塊以及二進制化的所述v數據塊分別進行裁剪、壓縮和旋轉。
22、在一些實施方式中,所述中間數據為i420格式的數據,所述擴展程序對所述原始視頻流數據中視頻幀包括的原始圖像信息進行yuv解碼,包括:
23、所述擴展程序獲取所述原始視頻流數據中包含的成員變量;
24、所述擴展程序從所述成員變量中獲取yuv數據的指針,并基于所述指針訪問所述成員變量中包含的yuv數據;
25、如果所述成員變量的像素格式類型是argb格式,所述擴展程序將所述成員變量的像素格式類型從argb格式轉換至i420格式;
26、如果所述成員變量的像素格式類型是nv12格式,所述擴展程序將所述成員變量的像素格式類型從nv12格式轉換至i420格式。
27、在一些實施方式中,所述幀頭數據包括所述視頻幀的數據總長度以及所述視頻幀的序號,所述數據總長度表征所述二進制化的所述基礎信息的長度、二進制化的所述y數據塊的長度、二進制化的所述u數據塊的長度以及二進制化的所述v數據塊的長度的總和。
28、在一些實施方式中,所述主應用基于接收到的二進制化的所述幀頭數據,確定所述視頻幀傳輸結束,包括:
29、所述主應用判斷接收到的數據塊是否是幀頭數據;
30、如果接收到的數據塊是幀頭數據,所述主應用基于所述幀頭數據獲取所述視頻幀的數據總長度,并將當前數據長度初始化為0,所述當前數據長度用于記錄當前累計拼接的視頻幀的數據長度;
31、如果接收到的數據塊不是幀頭數據,所述主應用將接收到的數據塊的長度累加入當前數據長度,如果累加后的所述當前數據長度大于或等于所述視頻幀的數據總長度,所述主應用確定所述視頻幀傳輸結束。
32、在一些實施方式中,所述主應用判斷接收到的數據塊是否是幀頭數據之后,所述方法還包括:
33、如果接收到的數據塊是幀頭數據,所述主應用清空緩沖區,所述緩沖區用于拼接所述視頻幀;
34、所述主應用將接收到的數據塊的長度累加入當前數據長度之后,所述方法還包括:
35、如果累加后的所述當前數據長度小于所述視頻幀的數據總長度,所述主應用確定所述視頻幀尚未傳輸結束,所述主應用將接收到的二進制化的所述y數據塊、二進制化的所述u數據塊以及二進制化的所述v數據塊按照順序添加至所述緩沖區;
36、所述得到完整的所述視頻幀之后,所述方法還包括:
37、所述主應用輸出所述視頻幀,清空所述緩沖區。
38、第二方面,提供了一種屏幕共享裝置,其特征在于,包括主應用以及擴展程序;
39、所述擴展程序,用于采集所述移動終端的屏幕中呈現的視頻流,以得到原始視頻流數據;對所述原始視頻本文檔來自技高網...
【技術保護點】
1.一種屏幕共享方法,其特征在于,應用于移動終端,所述移動終端運行有主應用以及擴展程序,所述方法包括:
2.根據權利要求1所述的方法,其特征在于,所述擴展程序對所述中間數據進行拆解,以得到幀頭數據、基礎信息、Y數據塊、U數據塊以及V數據塊,并分別將所述幀頭數據、所述基礎信息、所述Y數據塊、所述U數據塊以及所述V數據塊轉換成二進制數據,包括:
3.根據權利要求1所述的方法,其特征在于,所述方法還包括:
4.根據權利要求1所述的方法,其特征在于,所述主應用對接收到的二進制化的所述Y數據塊、二進制化的所述U數據塊以及二進制化的所述V數據塊進行拼接之前,所述方法還包括:
5.根據權利要求1所述的方法,其特征在于,所述中間數據為I420格式的數據,所述擴展程序對所述原始視頻流數據中視頻幀包括的原始圖像信息進行YUV解碼,包括:
6.根據權利要求1所述的方法,其特征在于,所述幀頭數據包括所述視頻幀的數據總長度以及所述視頻幀的序號,所述數據總長度表征所述二進制化的所述基礎信息的長度、二進制化的所述Y數據塊的長度、二進制化的所述U數據塊
7.根據權利要求6所述的方法,其特征在于,所述主應用基于接收到的二進制化的所述幀頭數據,確定所述視頻幀傳輸結束,包括:
8.根據權利要求7所述的方法,其特征在于,所述主應用判斷接收到的數據塊是否是幀頭數據之后,所述方法還包括:
9.一種屏幕共享裝置,其特征在于,包括主應用以及擴展程序;
10.根據權利要求9所述的裝置,其特征在于,所述擴展程序,用于從所述中間數據中獲取基礎信息、Y數據塊、U數據塊以及V數據塊;為所述基礎信息、所述Y數據塊、所述U數據塊以及所述V數據塊分配內存空間,并初始化內存塊;將所述基礎信息、所述Y數據塊、所述U數據塊以及所述V數據塊復制至所述內存塊的初始位置,更新所述內存塊的初始位置;將所述基礎信息、所述Y數據塊、所述U數據塊以及所述V數據塊封裝為二進制數據塊,并標志索引;釋放二進制化的所述幀頭數據、二進制化的所述基礎信息、二進制化的所述Y數據塊、二進制化的所述U數據塊以及二進制化的所述V數據塊占用的內存空間。
...【技術特征摘要】
1.一種屏幕共享方法,其特征在于,應用于移動終端,所述移動終端運行有主應用以及擴展程序,所述方法包括:
2.根據權利要求1所述的方法,其特征在于,所述擴展程序對所述中間數據進行拆解,以得到幀頭數據、基礎信息、y數據塊、u數據塊以及v數據塊,并分別將所述幀頭數據、所述基礎信息、所述y數據塊、所述u數據塊以及所述v數據塊轉換成二進制數據,包括:
3.根據權利要求1所述的方法,其特征在于,所述方法還包括:
4.根據權利要求1所述的方法,其特征在于,所述主應用對接收到的二進制化的所述y數據塊、二進制化的所述u數據塊以及二進制化的所述v數據塊進行拼接之前,所述方法還包括:
5.根據權利要求1所述的方法,其特征在于,所述中間數據為i420格式的數據,所述擴展程序對所述原始視頻流數據中視頻幀包括的原始圖像信息進行yuv解碼,包括:
6.根據權利要求1所述的方法,其特征在于,所述幀頭數據包括所述視頻幀的數據總長度以及所述視頻幀的序號,所述數據總長度表征所述二進制化的所述基礎信息的長度、二進制化的所述y數據塊的...
【專利技術屬性】
技術研發人員:吳貴卉,
申請(專利權)人:中國農業銀行股份有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。