基于Wi-Fi P2P的投屏方法和装置转让专利

申请号 : CN202010072563.7

文献号 : CN113225592B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 黄记

申请人 : 华为技术有限公司

摘要 :

本申请提供一种基于Wi‑Fi P2P的投屏方法和装置。本申请基于Wi‑Fi P2P的投屏方法,包括:投屏源设备基于Wi‑Fi P2P创建与投屏目标设备之间的投屏连接,所述投屏连接包括视频连接和音频连接,所述视频连接用于发送视频数据包,所述音频连接用于发送音频数据包;当通过所述音频连接发送所述音频数据包时,所述投屏源设备判断静音状态;若所述投屏源设备打开静音,则所述投屏源设备不发送所述音频数据包。本申请减少投屏时延,确保video数据的传输性能,提高投屏画质。

权利要求 :

1.一种基于Wi‑Fi P2P的投屏方法,其特征在于,包括:投屏源设备基于Wi‑Fi P2P创建与投屏目标设备之间的投屏连接,所述投屏连接包括视频连接和音频连接,所述视频连接用于发送视频数据包,所述音频连接用于发送音频数据包;

当通过所述音频连接发送所述音频数据包时,所述投屏源设备判断静音状态;

若所述投屏源设备打开静音,则所述投屏源设备不发送所述音频数据包;

其中,所述投屏源设备基于Wi‑Fi P2P创建与投屏目标设备之间的投屏连接之后,所述方法还包括:所述投屏源设备接收来自所述投屏目标设备的声音状态通知,所述声音状态通知用于指示所述投屏目标设备的音量大于设定阈值或者小于设定阈值,或者指示所述投屏目标设备为静音或者非静音;

当通过所述音频连接发送所述音频数据包时,所述投屏源设备根据所述声音状态通知判断所述投屏目标设备的声音状态;

若所述投屏目标设备的音量小于设定阈值或者为静音时,则所述投屏源设备不发送所述音频数据包。

2.根据权利要求1所述的方法,其特征在于,所述投屏源设备基于Wi‑Fi P2P创建与投屏目标设备之间的投屏连接之后,还包括:当通过所述音频连接发送所述音频数据包时,所述投屏源设备采集设定时长内的所述音频数据包;

若所述设定时长内的所述音频数据包中的数据为无效值或者所述设定时长内的所述音频数据包对应的音量小于设定阈值,则所述投屏源设备不发送所述音频数据包。

3.根据权利要求1或2所述的方法,其特征在于,所述投屏源设备基于Wi‑Fi P2P创建与投屏目标设备之间的投屏连接之前,还包括:所述投屏源设备向所述投屏目标设备发送能力请求;

所述投屏源设备接收所述投屏目标设备回复的能力信息;

当所述能力信息不包括对应所述投屏目标设备的音频能力的字段或者所述对应所述投屏目标设备的音频能力的字段的值为none时,所述投屏源设备不创建所述音频连接;

所述投屏源设备创建与所述投屏目标设备之间的通信连接;

所述投屏源设备通过所述通信连接向所述投屏目标设备发送音频数据包,所述音频数据包括所述投屏源设备上的通话和语音聊天的声音数据。

4.根据权利要求3所述的方法,其特征在于,还包括:

当所述能力信息包括对应所述投屏目标设备的音频能力的字段且值不为none时,所述投屏源设备创建所述音频连接。

5.一种基于Wi‑Fi P2P的投屏方法,其特征在于,包括:投屏目标设备基于Wi‑Fi P2P创建与投屏源设备之间的投屏连接,所述投屏连接包括视频连接和音频连接,所述视频连接用于接收视频数据包,所述音频连接用于接收音频数据包;

所述投屏目标设备接收来自所述投屏源设备的第一声音状态通知,所述第一声音状态通知用于指示所述投屏源设备为静音,所述投屏源设备不发送所述音频数据包;

所述投屏目标设备通过所述视频连接接收所述视频数据包;

所述投屏目标设备根据所述视频数据包在屏幕上播放相应的投屏画面;

所述方法还包括:

所述投屏目标设备向所述投屏源设备发送第二声音状态通知,所述第二声音状态通知用于指示所述投屏目标设备的音量大于设定阈值或者小于设定阈值,或者指示所述投屏目标设备为静音或者非静音,还用于指示所述投屏源设备不发送所述音频数据包。

6.根据权利要求5所述的方法,其特征在于,所述投屏目标设备基于Wi‑Fi P2P创建与投屏源设备之间的投屏连接之前,还包括:所述投屏目标设备接收所述投屏源设备发送的能力请求;

所述投屏目标设备向所述投屏目标设备回复的能力信息;

当所述能力信息不包括对应所述投屏目标设备的音频能力的字段或者所述对应所述投屏目标设备的音频能力的字段的值为none时,所述投屏目标设备不创建所述音频连接,创建与所述投屏源设备之间的通信连接;

所述投屏目标设备通过所述通信接收所述投屏源设备发送的音频数据包,所述音频数据包括所述投屏源设备上的通话和语音聊天的声音数据。

7.根据权利要求6所述的方法,其特征在于,还包括:

当所述能力信息包括对应所述投屏目标设备的音频能力的字段且值不为none时,所述投屏目标设备创建所述音频连接。

8.一种投屏源设备,其特征在于,包括:

处理模块,用于基于Wi‑Fi P2P创建投屏连接,所述投屏连接包括视频连接和音频连接,所述视频连接用于发送视频数据包,所述音频连接用于发送音频数据包;当通过所述音频连接发送所述音频数据包时,判断静音状态;

发送模块,用于若所述投屏源设备打开静音,则不发送所述音频数据包;

接收模块,用于接收来自所述投屏目标设备的声音状态通知,所述声音状态通知用于指示所述投屏目标设备的音量大于设定阈值或者小于设定阈值,或者指示所述投屏目标设备为静音或者非静音;

所述处理模块,还用于当通过所述音频连接发送所述音频数据包时,根据所述声音状态通知判断所述投屏目标设备的声音状态;

所述发送模块,还用于若所述投屏目标设备的音量小于设定阈值或者为静音时,则不发送所述音频数据包。

9.根据权利要求8所述的设备,其特征在于,所述处理模块,还用于当通过所述音频连接发送所述音频数据包时,采集设定时长内的所述音频数据包;

所述发送模块,还用于若所述设定时长内的所述音频数据包中的数据为无效值或者所述设定时长内的所述音频数据包对应的音量小于设定阈值,则不发送所述音频数据包。

10.根据权利要求8或9所述的设备,其特征在于,所述发送模块,还用于向所述投屏目标设备发送能力请求;

所述接收模块,还用于接收所述投屏目标设备回复的能力信息;

所述处理模块,还用于当所述能力信息不包括对应所述投屏目标设备的音频能力的字段或者所述对应所述投屏目标设备的音频能力的字段的值为none时,不创建所述音频连接;创建与所述投屏目标设备之间的通信连接;

所述发送模块,还用于通过所述通信连接向所述投屏目标设备发送音频数据包,所述音频数据包括所述投屏源设备上的通话和语音聊天的声音数据。

11.根据权利要求10所述的设备,其特征在于,所述处理模块,还用于当所述能力信息包括对应所述投屏目标设备的音频能力的字段且值不为none时,创建所述音频连接。

12.一种投屏目标设备,其特征在于,包括:

处理模块,用于基于Wi‑Fi P2P创建与投屏源设备之间的投屏连接,所述投屏连接包括视频连接和音频连接,所述视频连接用于接收视频数据包,所述音频连接用于接收音频数据包;

接收模块,用于接收来自所述投屏源设备的第一声音状态通知,通过所述视频连接接收所述视频数据包;所述第一声音状态通知用于指示所述投屏源设备为静音,所述投屏源设备不发送所述音频数据包;

输出模块,用于根据所述视频数据包在屏幕上播放相应的投屏画面;

发送模块,用于向所述投屏源设备发送第二声音状态通知,所述第二声音状态通知用于指示所述投屏目标设备的音量大于设定阈值或者小于设定阈值,或者指示所述投屏目标设备为静音或者非静音,还用于指示所述投屏源设备不发送所述音频数据包。

13.根据权利要求12所述的设备,其特征在于,所述接收模块,还用于接收所述投屏源设备发送的能力请求;

所述发送模块,还用于向所述投屏目标设备回复的能力信息;

所述处理模块,还用于当所述能力信息不包括对应所述投屏目标设备的音频能力的字段或者所述对应所述投屏目标设备的音频能力的字段的值为none时,不创建所述音频连接,创建与所述投屏源设备之间的通信连接;

所述接收模块,还用于通过所述通信接收所述投屏源设备发送的音频数据包,所述音频数据包括所述投屏源设备上的通话和语音聊天的声音数据。

14.根据权利要求13所述的设备,其特征在于,所述处理模块,还用于当所述能力信息包括对应所述投屏目标设备的音频能力的字段且值不为none时,创建所述音频连接。

15.一种投屏源设备,其特征在于,包括:

一个或多个处理器;存储器,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1‑4中任一项所述的方法。

16.一种投屏目标设备,其特征在于,包括:

一个或多个处理器;存储器,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求5‑7中任一项所述的方法。

17.一种计算机可读存储介质,其特征在于,包括计算机程序,所述计算机程序在计算机上被执行时,使得所述计算机执行权利要求1‑7中任一项所述的方法。

说明书 :

基于Wi‑Fi P2P的投屏方法和装置

技术领域

[0001] 本申请涉及投屏技术,尤其涉及一种基于Wi‑Fi P2P的投屏方法和装置。

背景技术

[0002] 投屏是一种多屏互动技术,投屏源设备和投屏目标设备通过网络连接,投屏源设备作为投屏内容的源端(source端),可以将其上的内容投送到投屏目标设备,投屏目标设备作为投屏内容的目的端(sink端),由投屏目标设备在其屏幕上播放该内容,实现投屏源设备操控投屏目标设备玩游戏、看视频、听音乐、浏览照片等,投屏技术适用于玩大屏游戏、开会办公、视频推送、影音共享、亲子互动等场景。
[0003] 基于Wi‑Fi P2P的投屏技术,环境中的Wi‑Fi信号环境复杂,传输常常会受到环境干扰,对于投屏这种对于时延要求较高的应用场景会产生不少影响。

发明内容

[0004] 本申请提供一种基于Wi‑Fi P2P的投屏方法和装置,以减少投屏时延,确保video数据的传输性能,提高投屏画质。
[0005] 第一方面,本申请提供一种基于Wi‑Fi P2P的投屏方法,包括:
[0006] 投屏源设备基于Wi‑Fi P2P创建与投屏目标设备之间的投屏连接,所述投屏连接包括视频连接和音频连接,所述视频连接用于发送视频数据包,所述音频连接用于发送音频数据包;当通过所述音频连接发送所述音频数据包时,所述投屏源设备判断静音状态;若所述投屏源设备打开静音,则所述投屏源设备不发送所述音频数据包。
[0007] 在投屏过程中,基于用户对投屏源设备的静音开关的设置确定是否在投屏的过程中发送audio数据,从而避免没必要的audio数据包的发送,减少投屏时延,确保video数据的传输性能,提高投屏画质。
[0008] 在一种可能的实现方式中,所述投屏源设备基于Wi‑Fi P2P创建与投屏目标设备之间的投屏连接之后,还包括:所述投屏源设备接收来自所述投屏目标设备的声音状态通知,所述声音状态通知用于指示所述投屏目标设备的音量大于设定阈值或者小于设定阈值,或者指示所述投屏目标设备为静音或者非静音;当通过所述音频连接发送所述音频数据包时,所述投屏源设备根据所述声音状态通知判断所述投屏目标设备的声音状态;若所述投屏目标设备的音量小于设定阈值或者为静音时,则所述投屏源设备不发送所述音频数据包。
[0009] 基于投屏目标设备的音量变化或静音与否确定是否在投屏的过程中发送audio数据,从而避免没必要的audio数据包的发送,减少投屏时延,确保video数据的传输性能,提高投屏画质。
[0010] 在一种可能的实现方式中,所述投屏源设备基于Wi‑Fi P2P创建与投屏目标设备之间的投屏连接之后,还包括:当通过所述音频连接发送所述音频数据包时,所述投屏源设备采集设定时长内的所述音频数据包;若所述设定时长内的所述音频数据包中的数据为无效值或者所述设定时长内的所述音频数据包对应的音量小于设定阈值,则所述投屏源设备不发送所述音频数据包。
[0011] 在一种可能的实现方式中,所述投屏源设备基于Wi‑Fi P2P创建与投屏目标设备之间的投屏连接之后,还包括:当通过所述音频连接发送所述音频数据包时,所述投屏源设备采集设定时长内的投屏用的数据包;若所述设定时长内的投屏用的数据包中的音频数据为无效数据或者所述设定时长内的投屏用的数据包中的音频数据对应的音量小于设定阈值,则所述投屏源设备不发送所述音频数据包。
[0012] 基于设定时长内的投屏内容是否包括audio确定是否在投屏的过程中发送audio数据,从而避免空audio数据包的发送,减少投屏时延,确保video数据的传输性能,提高投屏画质。
[0013] 在一种可能的实现方式中,所述投屏源设备基于Wi‑Fi P2P创建与投屏目标设备之间的投屏连接之前,还包括:所述投屏源设备向所述投屏目标设备发送能力请求;所述投屏源设备接收所述投屏目标设备回复的能力信息;当所述能力信息不包括对应所述投屏目标设备的音频能力的字段或者所述对应所述投屏目标设备的音频能力的字段的值为none时,所述投屏源设备不创建所述音频连接;所述投屏源设备创建与所述投屏目标设备之间的通信连接;所述投屏源设备通过所述通信连接向所述投屏目标设备发送音频数据包,所述音频数据包括所述投屏源设备上的通话和语音聊天的声音数据。
[0014] 在投屏前,基于投屏目标设备的能力(对应投屏目标设备的音频能力的字段或者对应投屏目标设备的音频能力的字段的值为none)确定不创建投屏双方之间的音频连接,而是重新创建二者之间的通信连接用于发送音频数据包,这样既可以利用原有标准投屏流程就可以不创建音频连接,代码修改量小,又可以用新的通信连接发送所有产生于投屏源设备上的声音的音频数据包,兼容性好。
[0015] 在一种可能的实现方式中,还包括:当所述能力信息包括对应所述投屏目标设备的音频能力的字段且值不为none时,所述投屏源设备创建所述音频连接。
[0016] 第二方面,本申请提供一种基于Wi‑Fi P2P的投屏方法,包括:
[0017] 投屏源设备基于Wi‑Fi P2P创建与投屏目标设备之间的投屏连接之前,向所述投屏目标设备发送能力请求;所述投屏源设备接收所述投屏目标设备回复的能力信息;当所述能力信息不包括对应所述投屏目标设备的音频能力的字段或者所述对应所述投屏目标设备的音频能力的字段的值为none时,所述投屏源设备不创建用于发送音频数据包的音频连接。
[0018] 在投屏前,基于投屏目标设备的能力(对应投屏目标设备的音频能力的字段或者对应投屏目标设备的音频能力的字段的值为none)确定不创建投屏双方之间的音频连接,从而避免空audio数据包的发送,减少投屏时延,确保video数据的传输性能,提高投屏画质。
[0019] 第三方面,本申请提供一种基于Wi‑Fi P2P的投屏方法,包括:
[0020] 投屏目标设备基于Wi‑Fi P2P创建与投屏源设备之间的投屏连接,所述投屏连接包括视频连接和音频连接,所述视频连接用于接收视频数据包,所述音频连接用于接收音频数据包;所述投屏目标设备通过所述视频连接接收所述视频数据包;所述投屏目标设备根据所述视频数据包在屏幕上播放相应的投屏画面。
[0021] 在一种可能的实现方式中,还包括:所述投屏目标设备向所述投屏源设备发送声音状态通知,所述声音状态通知用于指示所述投屏目标设备的音量大于设定阈值或者小于设定阈值,或者指示所述投屏目标设备为静音或者非静音。
[0022] 在一种可能的实现方式中,所述投屏目标设备基于Wi‑Fi P2P创建与投屏源设备之间的投屏连接之前,还包括:所述投屏目标设备接收所述投屏源设备发送的能力请求;所述投屏目标设备向所述投屏目标设备回复的能力信息;当所述能力信息不包括对应所述投屏目标设备的音频能力的字段或者所述对应所述投屏目标设备的音频能力的字段的值为none时,所述投屏目标设备不创建所述音频连接,创建与所述投屏源设备之间的通信连接;
所述投屏目标设备通过所述通信接收所述投屏源设备发送的音频数据包,所述音频数据包括所述投屏源设备上的通话和语音聊天的声音数据。
[0023] 在一种可能的实现方式中,还包括:当所述能力信息包括对应所述投屏目标设备的音频能力的字段且值不为none时,所述投屏目标设备创建所述音频连接。
[0024] 第四方面,本申请提供一种投屏源设备,该设备具有实现上述第一至二方面中任一项所述的方法的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多于一个与上述功能相对应的模块。
[0025] 第五方面,本申请提供一种投屏目标设备,该设备具有实现上述第三方面中任一项所述的方法的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多于一个与上述功能相对应的模块。
[0026] 第六方面,本申请提供一种投屏源设备,其特征在于,包括:
[0027] 一个或多个处理器;
[0028] 存储器,用于存储一个或多个程序;
[0029] 当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述第一至二方面中任一项所述的方法。
[0030] 第七方面,本申请提供一种投屏目标设备,包括:
[0031] 一个或多个处理器;
[0032] 存储器,用于存储一个或多个程序;
[0033] 当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述第三方面中任一项所述的方法。
[0034] 第八方面,本申请提供一种计算机可读存储介质,包括计算机程序,所述计算机程序在计算机上被执行时,使得所述计算机执行上述第一至三方面中任一项所述的方法。
[0035] 第八方面,本申请提供一种计算机程序,当所述计算机程序被计算机执行时,用于执行上述第一至三方面中任一项所述的方法。

附图说明

[0036] 图1示出了投屏场景的一个示例性的示意图;
[0037] 图2示出了设备200的一个示例性的结构示意图;
[0038] 图3为本申请基于Wi‑Fi P2P的投屏方法实施例一的流程图;
[0039] 图4示出了初始设置界面的一个示例性的示意图;
[0040] 图5为本申请基于Wi‑Fi P2P的投屏方法实施例二的流程图;
[0041] 图6为本申请投屏源设备实施例的结构示意图;
[0042] 图7为本申请投屏目标设备实施例的结构示意图。

具体实施方式

[0043] 为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0044] 本申请的说明书实施例和权利要求书及附图中的术语“第一”、“第二”等仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元。方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0045] 应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
[0046] 投屏是一种多屏互动技术,投屏源设备和投屏目标设备通过网络连接,投屏源设备作为投屏内容的源端(source端),可以将其上的内容投送到投屏目标设备,投屏目标设备作为投屏内容的目的端(sink端),由投屏目标设备在其屏幕上播放该内容,实现投屏源设备操控投屏目标设备玩游戏、看视频、听音乐、浏览照片等,投屏技术适用于玩大屏游戏、开会办公、视频推送、影音共享、亲子互动等场景。
[0047] 对等网络(peer to peer,P2P),即对等计算机网络,是一种在对等节点(Peer)之间分配任务和工作负载的分布式应用架构。其可以定义为:网络的参与者共享他们所拥有的一部分硬件资源(例如处理能力、存储能力、网络连接能力、打印机等),这些共享资源通过网络提供服务和内容,能被其它对等节点(Peer)直接访问而无需经过中间实体。在P2P中的参与者既是资源、服务和内容的提供者(Server),又是资源、服务和内容的获取者(Client)。无线保真直连(wireless‑fidelity direct,Wi‑Fi Direct)(亦称为Wi‑Fi P2P)是一种点对点连接技术,其可以在两个节点之间直接建立传输控制协议/互联协议
(transmission control protocol/internet protocol,TCP/IP)链接,并不需要接入点(access point,AP)的参与,其中一个节点会起到传统意义上的AP的作用,称为组所有者(group owner,GO),另外一个节点则称为组客户端(group client,GC),可以像接入AP一样连接到GO。GO和GC不仅可以是一对一,也可以是一对多。
[0048] 安卓系统在Wi‑Fi P2P技术的基础上实现了投屏功能,即两个支持Wi‑Fi P2P功能的设备,通过Wi‑Fi P2P技术建立链接,其中一个设备完成录屏、编码、传码流等,是为source端,另一个设备完成码流的接收、解码、播放等,是为sink端。该两个设备可以直接通过彼此间的Wi‑Fi P2P链路共享文件、图片、音视频等。例如一台支持Wi‑Fi P2P的智能手机直接连接上一台支持Wi‑Fi P2P的智能电视,智能手机(source端)将己方的屏幕连同扬声器的媒体资源传送给智能电视(sink端)去显示或播放。
[0049] 图1示出了投屏场景的一个示例性的示意图,如图1所示,该场景是用户使用投屏源设备将投屏源设备上的视频(video)和音频(audio)经编码处理后传输至投屏目标设备(sink端),视频的画面可以通过投屏目标设备的屏幕播放出来,音频的声音可以通过投屏目标设备的扬声器播放出来。该场景下,投屏源设备会创建video的传输线程和audio的传输线程,并把video数据和audio数据均发送给投屏用的投屏目标设备。
[0050] 可选的,用户还可以使用投屏源设备将投屏源设备(source端)上的视频(video)经编码处理后传输至投屏目标设备(sink端),并且将投屏源设备上的音频(audio)经编码处理后传输至音响,视频的画面可以通过投屏目标设备的屏幕播放出来,音频的声音可以通过音响的扬声器播放出来。该场景下,投屏源设备会创建audio的传输线程,但不会把audio数据发送给投屏用的投屏目标设备,而是发送给音响。
[0051] 可选的,由于基于Wi‑Fi P2P技术的投屏,考虑到用户的隐私,因此协议规定在标准投屏过程中,投屏源设备要将video数据和audio数据发送给投屏目标设备,但是针对打电话、语音聊天等过程中产生的声音的audio数据是不向投屏目标设备投放的,只发送携带空audio数据的数据包。而用户有将投屏目标设备当做投屏源设备,让投屏目标设备完全替代投屏源设备的显示和声音输出功能的需求,例如投屏目标设备在wfd_audio_codecs字段填写none或者不回复wfd_audio_codecs,投屏源设备会认为投屏目标设备不需要空audio数据。此时用户可以使用投屏源设备将投屏源设备(source端)上的视频(video)经编码处理后传输至投屏目标设备(sink端),而对于标准流程中发送的audio数据则做不发送处理。与此同时,投屏源设备和投屏目标设备建立新的连接(包括蓝牙连接、Wi‑Fi连接或者有线直连等),通过该新的连接,投屏源设备将产生于投屏源设备上的所有声音的audio数据发送给投屏目标设备。这样可以在不改变现有标准流程的基础上,投屏目标设备可以通过扬声器播放产生于投屏源设备上的所有声音,包括打电话、语音聊天等过程中产生的声音。
[0052] 另外,投屏场景还可以是用户使用手机将手机(source端)上的音视频投屏至投影幕布等。本申请对于投屏场景的实现方式不做具体限定。
[0053] 投屏源设备又可以称之为用户设备(user equipment,UE),可以部署在陆地上,包括室内或室外、手持或车载;也可以部署在水面上(如轮船等);还可以部署在空中(例如飞机、气球和卫星上等)。投屏源设备可以是手机(mobile phone)、平板电脑(pad)、具备无线通讯功能的可穿戴设备(如智能手表)、具有定位功能的位置追踪器、带无线收发功能的电脑、虚拟现实(virtual reality,VR)设备、增强现实(augmented reality,AR)设备、工业控制(industrial control)中的无线设备、无人驾驶(self driving)中的无线设备、远程医疗(remote medical)中的无线设备、智能电网(smart grid)中的无线设备、运输安全(transportation safety)中的无线设备、智慧城市(smart city)中的无线设备、智慧家庭(smart home)中的无线设备等,本申请对此不作限定。
[0054] 投屏目标设备可以是智能电视、电视盒子、投影幕布等,本申请对此不作限定。
[0055] 投屏源设备和投屏目标设备之间的网络可以是支持第四代(fourth generation,4G)接入技术的通信网络,例如长期演进(long term evolution,LTE)接入技术;或者,该通信网络也可以是支持第五代(fifth generation,5G)接入技术通信网络,例如新无线(new radio,NR)接入技术;或者,该通信网络也可以是支持第三代(third generation,3G)接入技术的通信网络,例如(universal mobile telecommunications system,UMTS)接入技术;
或者,该通信网络还可以是支持多种无线技术的通信网络,例如支持LTE技术和NR技术的通信网络;或者,该通信网络还可以是支持短距离通信技术的通信网络,例如支持无线保真(wireless‑fidelity,Wi‑Fi)技术的通信网络;或者,支持蓝牙技术的通信网络。另外,该通信网络也可以适用于面向未来的通信技术,本申请对此不做具体限定。。
[0056] 图2示出了设备200的一个示例性的结构示意图。设备200可以是上述作为投屏内容的source端的投屏源设备,也可以是上述作为投屏内容的sink端的投屏目标设备。如图2所示,设备200包括:应用处理器201、微控制器单元(microcontroller unit,MCU)202、存储器203、调制解调器(modem)204、射频(radio frequency,RF)模块205、无线保真(Wireless‑Fidelity,简称Wi‑Fi)模块206、蓝牙模块207、传感器208、输入/输出(input/output,I/O)设备209、定位模块210等部件。这些部件可通过一根或多根通信总线或信号线进行通信。前述通信总线或信号线可以是本申请提供的CAN总线。本领域技术人员可以理解,设备200可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0057] 下面结合图2对设备200的各个部件进行具体的介绍:
[0058] 应用处理器201是设备200的控制中心,利用各种接口和总线连接设备200的各个部件。在一些实施例中,处理器201可包括一个或多个处理单元。
[0059] 存储器203中存储有计算机程序,诸如图2所示的操作系统211和应用程序212。应用处理器201被配置用于执行存储器203中的计算机程序,从而实现该计算机程序定义的功能,例如应用处理器201执行操作系统211从而在设备200上实现操作系统的各种功能。存储器203还存储有除计算机程序之外的其他数据,诸如操作系统211和应用程序212运行过程中产生的数据。存储器203为非易失性存储介质,一般包括内存和外存。内存包括但不限于随机存取存储器(random access memory,RAM),只读存储器(read‑only memory,ROM),或高速缓存(cache)等。外存包括但不限于闪存(flash memory)、硬盘、光盘、通用串行总线(universal serial bus,USB)盘等。计算机程序通常被存储在外存上,处理器在执行计算机程序前会将该程序从外存加载到内存。
[0060] 存储器203可以是独立的,通过总线与应用处理器201相连接;存储器203也可以和应用处理器201集成到一个芯片子系统。
[0061] MCU 202是用于获取并处理来自传感器208的数据的协处理器,MCU 202的处理能力和功耗小于应用处理器201,但具有“永久开启(always on)”的特点,可以在应用处理器
201处于休眠模式时持续收集以及处理传感器数据,以极低的功耗保障传感器的正常运行。
在一个实施例中,MCU 202可以为sensor hub芯片。传感器208可以包括光传感器、运动传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示器2091的亮度,接近传感器可在设备200移动到耳边时,关闭显示屏的电源。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向;传感器208还可以包括陀螺仪、气压计、湿度计、温度计、红外线传感器等其它传感器,在此不再赘述。MCU 202和传感器208可以集成到同一块芯片上,也可以是分离的元件,通过总线连接。
[0062] modem 204以及射频模块205构成了设备200通信子系统,用于实现无线通信标准协议的主要功能。其中,modem 204用于编解码、信号的调制解调、均衡等。射频模块205用于无线信号的接收和发送,射频模块205包括但不限于天线、至少一个放大器、耦合器、双工器等。射频模块205配合modem 204实现无线通信功能。modem 204可以作为单独的芯片,也可以与其他芯片或电路在一起形成系统级芯片或集成电路。这些芯片或集成电路可应用于所有实现无线通信功能的设备,包括:手机、电脑、笔记本、平板、路由器、可穿戴设备、汽车、家电设备等。
[0063] 设备200还可以使用Wi‑Fi模块206,蓝牙模块207等来进行无线通信。Wi‑Fi模块206用于为设备200提供遵循Wi‑Fi相关标准协议的网络接入,设备200可以通过Wi‑Fi模块
206接入到Wi‑Fi接入点,进而访问互联网。在其他一些实施例中,Wi‑Fi模块206也可以作为Wi‑Fi无线接入点,可以为其他设备提供Wi‑Fi网络接入。蓝牙模块207用于实现设备200与其他设备(例如手机、智能手表等)之间的短距离通信。本申请实施例中的Wi‑Fi模块206可以是集成电路或Wi‑Fi芯片等,蓝牙模块207可以是集成电路或者蓝牙芯片等。
[0064] 定位模块210用于确定设备200的地理位置。可以理解的是,定位模块210具体可以是全球定位系统(global position system,GPS)或北斗卫星导航系统、俄罗斯GLONASS等定位系统的接收器。
[0065] Wi‑Fi模块206,蓝牙模块207和定位模块210分别可以是单独的芯片或集成电路,也可以集成到一起。例如,在一个实施例中,Wi‑Fi模块206,蓝牙模块207和定位模块210可以集成到同一芯片上。在另一个实施例中,Wi‑Fi模块206,蓝牙模块207、定位模块210以及MCU 202也可以集成到同一芯片中。
[0066] 输入/输出设备209包括但不限于:显示器2091、触摸屏2092,以及音频电路2093等等。
[0067] 其中,触摸屏2092可采集设备200的用户在其上或附近的触摸事件(比如用户使用手指、触控笔等任何适合的物体在触摸屏2092上或在触控屏触摸屏2092附近的操作),并将采集到的触摸事件发送给其他器件(例如应用处理器201)。其中,用户在触摸屏2092附近的操作可以称之为悬浮触控;通过悬浮触控,用户可以在不直接接触触摸屏2092的情况下选择、移动或拖动目的(例如图标等)。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型来实现触摸屏2092。
[0068] 显示器(也称为显示屏)2091用于显示用户输入的信息或展示给用户的信息。可以采用液晶显示屏、有机发光二极管等形式来配置显示器。触摸屏2092可以覆盖在显示器2091之上,当触摸屏2092检测到触摸事件后,传送给应用处理器201以确定触摸事件的类型,随后应用处理器201可以根据触摸事件的类型在显示器2091上提供相应的视觉输出。虽然在图2中,触摸屏2092与显示器2091是作为两个独立的部件来实现设备200的输入和输出功能,但是在某些实施例中,可以将触摸屏2092与显示器2091集成而实现设备200的输入和输出功能。另外,触摸屏2092和显示器2091可以以全面板的形式配置在设备200的正面,以实现无边框的结构。
[0069] 音频电路2093、扬声器2094、麦克风2095可提供用户与设备200之间的音频接口。音频电路2093可将接收到的音频数据转换后的电信号,传输到扬声器2094,由扬声器2094转换为声音信号输出;另一方面,麦克风2095将收集的声音信号转换为电信号,由音频电路
2093接收后转换为音频数据,再通过modem 204和射频模块205将音频数据发送给比如另一设备,或者将音频数据输出至存储器203以便进一步处理。
[0070] 另外,设备200还可以具有指纹识别功能。例如,可以在设备200的背面(例如后置摄像头的下方)配置指纹采集器件,或者在设备200的正面(例如触摸屏2092的下方)配置指纹采集器件。又例如,可以在触摸屏2092中配置指纹采集器件来实现指纹识别功能,即指纹采集器件可以与触摸屏2092集成在一起来实现设备200的指纹识别功能。在这种情况下,该指纹采集器件配置在触摸屏2092中,可以是触摸屏2092的一部分,也可以以其他方式配置在触摸屏2092中。本申请实施例中的指纹采集器件的主要部件是指纹传感器,该指纹传感器可以采用任何类型的感测技术,包括但不限于光学式、电容式、压电式或超声波传感技术等。
[0071] 进一步地,设备200搭载的操作系统211可以为 或者其它操作系统,本申请实施例对此不作任何限制。
[0072] 以搭载 操作系统的设备200为例,设备200从逻辑上可划分为硬件层、操作系统211,以及应用层。硬件层包括如上所述的应用处理器201、MCU 202、存储器203、modem 204、Wi‑Fi模块206、传感器208、定位模块210等硬件资源。应用层包括一个或多个应用程序,比如应用程序212,应用程序212可以为社交类应用、电子商务类应用、浏览器等任意类型的应用程序。操作系统211作为硬件层和应用层之间的软件中间件,是管理和控制硬件与软件资源的计算机程序。
[0073] 在一个实施例中,操作系统211包括内核,硬件抽象层(hardware abstraction layer,HAL)、库和运行时(libraries and runtime)以及框架(framework)。其中,内核用于提供底层系统组件和服务,例如:电源管理、内存管理、线程管理、硬件驱动程序等;硬件驱动程序包括Wi‑Fi驱动、传感器驱动、定位模块驱动等。硬件抽象层是对内核驱动程序的封装,向框架提供接口,屏蔽低层的实现细节。硬件抽象层运行在用户空间,而内核驱动程序运行在内核空间。
[0074] 库和运行时也叫做运行时库,它为可执行程序在运行时提供所需要的库文件和执行环境。在一个实施例中,库与运行时包括安卓运行时(android runtime,ART),库,以及场景包运行时。ART是能够把应用程序的字节码转换为机器码的虚拟机或虚拟机实例。库是为可执行程序在运行时提供支持的程序库,包括浏览器引擎(比如webkit)、脚本执行引擎(比如JavaScript引擎)、图形处理引擎等。场景包运行时是场景包的运行环境,主要包括页面执行环境(page context)和脚本执行环境(script context),其中,页面执行环境通过调用相应的库解析html、css等格式的页面代码,脚本执行环境通过调用相应的功能库解析执行JavaScript等脚本语言实现的代码或可执行文件。
[0075] 框架用于为应用层中的应用程序提供各种基础的公共组件和服务,比如窗口管理、位置管理等等。在一个实施例中,框架包括地理围栏服务,策略服务,通知管理器等。
[0076] 以上描述的操作系统211的各个组件的功能均可以由应用处理器201执行存储器203中存储的程序来实现。
[0077] 所属领域的技术人员可以理解设备200可包括比图2所示的更少或更多的部件,图2所示的该设备仅包括与本申请所公开的多个实现方式更加相关的部件。
[0078] 相关技术中,在投屏之前,投屏双方(投屏源设备和投屏目标设备)会进行能力协商,sink端的投屏目标设备会把己方支持的能力上报给source端的投屏源设备,前述能力例如可以包括投屏目标设备是否支持audio播放,是否支持video播放,支持的audio或video的码流类型、编解码格式等。source端的投屏源设备在收到前述能力之后,会将该能力和己方的投屏内容进行比较,然后通知sink端的投屏目标设备。例如,投屏源设备发消息请求投屏目标设备的音视频编解码能力:wfd_video_formats(对应video)/wfd_audio_
codecs(对应audio)。投屏目标设备回复己方的音视频编解码能力:wfd_video_formats:00 
00 02 0F 0001FFFF 05157FFF 00000FFF 02 0001 0000 13none none/wfd_audio_
codecs:LPCM 00000003 02,AAC 00000003 00。投屏源设备接收到上述回复后,将投屏目标设备的音视频编解码能力与己方的音视频编解码能力进行比较,即从投屏目标设备的音视频编解码能力中选择己方支持的,然后通知给投屏目标设备:wfd_video_formats:00 00 
02 08 00000100 00000000 00000000 00 0000 0000 00none none/wfd_audio_codecs:
AAC 00000001 00。
[0079] 此后source端的投屏源设备进行投屏初始化并进入投屏流程。在投屏过程中,source端的投屏源设备对投屏内容中的audio和video分别按照各自帧率将数据传输到
sink端的投屏目标设备,从而实现投屏。如果在能力协商时,sink端的投屏目标设备回复的能力中包括己方支持audio播放的信息,那么无论投屏内容中是否包括audio,source端的投屏源设备都会按照audio的帧率启动audio数据的传输,sink端的投屏目标设备也会接收该audio数据。但是,在投屏内容中不包括audio的情况下,source端的投屏源设备仍会将大量的空audio数据包传输到sink端的投屏目标设备,这会导致大量的空audio数据包和
video数据包竞争无线空口资源(包括竞争在souce端的发送空口资源和竞争在sink端的接收空口资源)。大量的空audio数据包还会竞争系统资源和网络资源(包括抢占CPU和抢占带宽等)。这些竞争会增加投屏的时延,影响投屏画质。
[0080] 另外,source端的投屏源设备存在同时Wi‑Fi上网和投屏的情况,因此上网的报文和投屏用的数据包会竞争同一个Wi‑Fi空口资源。而sink端的投屏目标设备也存在同时Wi‑Fi上网和投屏的情况,因此上网的报文和投屏用的数据包也会竞争同一个Wi‑Fi空口资源。在投屏源设备,如果上网的报文占用着Wi‑Fi空口资源,投屏用的数据包就发不出去,只能去抢占资源,这样会增加发送数据包的时延。同样投屏目标设备,如果上网的报文占用着Wi‑Fi空口资源,收到的投屏用的数据包就存在延迟,甚至会出现拥塞、丢包的情况。可见Wi‑Fi上网也会增加投屏的时延,影响投屏画质。
[0081] 本申请提供了一种投屏方法,该方法应用于上述投屏场景,通过减少没必要的audio数据包的发送,确保投屏过程符合投屏时延需求,提高投屏画质。
[0082] 图3为本申请基于Wi‑Fi P2P的投屏方法实施例一的流程图,如图3所示,本实施例的方法可以包括:
[0083] 步骤301、投屏目标设备设置声音状态。
[0084] 通常投屏目标设备(例如智能电视)提供了两种关于声音的设置方式,一种是音量开关,用户可以通过音量增大和音量减小两个按键控制该设备的音量大小,当音量调到小于设定阈值时表示用户不需要播放声音。另一种是静音开关,用户可以通过静音开关打开或关闭该设备的扬声器。投屏目标设备可以通过检测上述两种开关的触发情况获取用户的输入,进而基于用户的输入设置声音大小或静音与否。
[0085] 步骤302、投屏源设备设置声音状态。
[0086] 投屏源设备可以在投屏功能开启时,提供一个初始设置界面,该界面上有关于投屏的多个设置项目,以供用户对投屏进行个性化设置,投屏源设备通过检测用户在初始设置界面上的输入,基于用户的输入设置静音与否。图4示出了初始设置界面的一个示例性的示意图,如图4所示,针对多种投屏目标设备,可以分别设置是否对其静音,如果勾选针对某一设备的静音选项的话,表示投屏源设备在对该设备投屏时需要静音。需要说明的是,本申请还可以在初始设置界面上提供其他的选项供用户设置,对此不做具体限定。
[0087] 可选的,初始设置界面上可以提供智能识别的选项,如果用户勾选了该选项,投屏源设备可以在投屏过程中,自动识别投屏内容是否包括audio,再确定是否需要传输audio数据给投屏目标设备。
[0088] 可选的,用户还可以通过投屏源设备上的音量开关设置投屏源设备的声音状态,用音量增大和音量减小两个按键控制投屏源设备的音量大小,当音量调到小于设定阈值时表示用户不需要将audio数据发送给投屏目标设备。
[0089] 需要说明的是,上述步骤301和302可以二选一,那么投屏源设备在投屏时以其中设置了的一方的声音状态为准,来确定是否创建audio数据的传输线程或者进行audio数据的收集。上述步骤301和302也可以二者皆有,投屏源设备以二者设置的声音状态为准,确定是否创建audio数据的传输线程或者进行audio数据的收集。
[0090] 步骤303、投屏目标设备设置和投屏源设备进行能力交互。
[0091] 投屏源设备可以在发送给投屏目标设备的能力请求中携带上关于audio能力和声音状态的请求。基于该请求投屏目标设备可以在回复给投屏源设备的能力信息中携带上关于audio的能力信息,以及表征声音状态的信息。
[0092] 例如,投屏源设备的能力请求中包括wfd_audio_codecs和wfd_hwe_mute字段,表示投屏源设备请求投屏目标设备提供其audio能力和声音状态。投屏目标设备的回复中包括wfd_audio_codecs:LPCM 00000003 02,AAC 00000003 00和wfd_hwe_mute:true,其中,wfd_audio_codecs字段的值表示投屏目标设备的audio的能力信息,其支持线性脉冲编码调制(line pulse code modulation,LPCM)和高级音频编码(advanced audio coding,AAC)的audio,wfd_hwe_mute字段的值(true)表示投屏目标设备设置了静音或者音量小于设定阈值。收到该回复后,投屏源设备根据wfd_audio_codecs字段认为投屏目标设备具备audio处理能力,但根据true认为投屏目标设备不需要audio数据,因此投屏源设备会创建和投屏目标设备之间的音频连接,但不会向投屏目标设备发送audio数据。
[0093] 如果投屏目标设备的回复中包括wfd_audio_codecs:LPCM 00000003 02,AAC 00000003 00和wfd_hwe_mute:false,或者回复中不包括wfd_hwe_mute字段,表示投屏目标设备设置了非静音或者音量大于设定阈值。收到该回复后,投屏源设备根据wfd_audio_
codecs字段认为投屏目标设备具备audio处理能力,且根据false或者不包括wfd_hwe_mute字段认为投屏目标设备需要audio数据,因此投屏源设备会创建和投屏目标设备之间的音频连接,且会向投屏目标设备发送audio数据。
[0094] 如果投屏目标设备的回复中wfd_audio_codecs字段填写none或者回复中不包括wfd_audio_codecs字段,表示投屏目标设备不具备audio处理能力,因此投屏源设备不会创建和投屏目标设备之间的音频连接,也不会向投屏目标设备发送audio数据。
[0095] 上述audio的能力信息主要是指支持的audio格式,例如LPCM、AAC、杜比高级编解码3(dolby advanced codec 3,AC3)等、声道数、取样频率以及位频率等。
[0096] 需要说明的是,本申请还可以通过其他方式或字段将己方能力发送给投屏源设备,对此不做具体限定。
[0097] 根据投屏目标设备设置和投屏源设备的能力协商结果,在后续的投屏过程中可能会出现以下种情况:
[0098] (1)投屏目标设备设置了静音或者音量小于设定阈值,和/或,投屏源设备设置了静音或者音量小于设定阈值。此时投屏源设备不会向投屏目标设备发送audio数据。
[0099] (2)投屏目标设备没有设置静音或者音量大于设定阈值且投屏源设备没有设置静音或者音量大于设定阈值。此时投屏源设备会将audio数据传输给投屏目标设备。
[0100] 以上步骤301‑303为投屏之前投屏源设备和投屏目标设备的操作,以下步骤开始进入投屏过程。
[0101] 进入投屏过程后,投屏源设备和投屏目标设备也可以提供声音设置功能,以供用户再次进行声音状态的设置。例如在投屏源设备上增加下拉菜单,该下拉菜单包括如图4所示的设置选项,用户可以根据需要进行勾选。一旦勾选针对某一设备的静音选项的话,表示投屏源设备此后不需要再向该设备发送audio数据。又例如投屏目标设备在播放投屏内容的过程中,用户通过音量增大和音量减小两个按键控制该设备的音量大小,或者通过静音开关打开或关闭该设备的扬声器。
[0102] 步骤304、投屏源设备检测声音状态。
[0103] 如上所述,进入投屏过程后,投屏源设备通过检测用户在声音设置功能(例如下拉菜单)上的输入,基于用户的输入检测静音与否。该检测可以是周期性的,例如投屏源设备会在投屏初始创建一个循环定时器或循环计数器,一旦定时器或计数器发出提示,该设备就会如步骤302通过检测用户的输入,进而基于用户的输入确定静音与否。该检测也可以是触发式的,一旦用户对下拉菜单进行了操作,投屏源设备就会被该操作触发进而确定静音与否。
[0104] 如果用户删除了关于静音的勾选,表明用户需要将投屏内容的声音通过投屏目标设备播放,则跳转至步骤305;如果用户增加了静音勾选,表明用户不需要将投屏内容的声音通过投屏目标设备播放,则跳转至步骤306。
[0105] 步骤305、投屏源设备向投屏目标设备发送第一通知,该第一通知用于通知投屏目标设备己方关闭了静音。
[0106] 此时用户需要将投屏内容的声音通过投屏目标设备播放,因此投屏源设备要向投屏目标设备发送audio数据。投屏源设备通过第一通知告知投屏目标设备己方关闭了静音,会有audio数据发送过去,指示投屏目标设备准备接收audio数据。此后跳转至步骤311。
[0107] 步骤306、投屏源设备向投屏目标设备发送第二通知,该第二通知用于通知投屏目标设备己方开启了静音。
[0108] 此时用户不需要将投屏内容的声音通过投屏目标设备播放,因此投屏源设备不向投屏目标设备发送audio数据,投屏源设备通过第二通知告知投屏目标设备己方开启了静音,不会再有audio数据发送过去,指示投屏目标设备停止接收audio数据。此时跳转至步骤310。
[0109] 需要说明的是,步骤304‑306覆盖了整个投屏过程,当投屏源设备检测到声音状态为静音,就不向投屏目标设备发送audio数据,当投屏源设备检测到声音状态为非静音,就向投屏目标设备发送audio数据。可以减少己方的线程创建和处理流程,并减少没必要的audio数据包的发送。
[0110] 步骤307、投屏目标设备检测声音状态。
[0111] 只要没有接收到投屏源设备发送的第二通知,投屏目标设备就会检测己方音量的变化情况或静音与否。该检测可以是周期性的,例如投屏目标设备会在投屏初始创建一个循环定时器或循环计数器,一旦定时器或计数器发出提示,该设备就会通过检测音量开关或静音开关的触发情况获取用户的输入,进而基于用户的输入确定声音大小或静音与否。该检测也可以是触发式的,一旦用户对音量开关或静音开关进行了操作,投屏目标设备就会被该操作触发进而确定声音大小或静音与否。
[0112] 当投屏目标设备确定音量从大于设定阈值变为小于设定阈值,或者从非静音变为静音,表明用户不需要通过投屏目标设备播放声音了,跳转至步骤308;当投屏目标设备确定音量从小于设定阈值变为大于设定阈值,或者从静音变为非静音,表明用户需要通过投屏目标设备播放声音了,跳转至步骤309。
[0113] 步骤308、投屏目标设备向投屏源设备发送第三通知,该第三通知用于表征投屏目标设备的音量变为小于设定阈值或调为静音。
[0114] 此时用户不需要通过投屏目标设备播放声音,即使投屏源设备仍然发送audio数据,投屏目标设备也接收了audio数据,但是这些audio数据是无用的,因此投屏目标设备通过第三通知告知投屏源设备己方的音量变为小于设定阈值或调为静音,以指示投屏源设备可以不用发送audio数据。此时跳转至步骤310。
[0115] 步骤309、投屏目标设备向投屏源设备发送第四通知,该第四通知用于表征投屏目标设备的音量变为大于设定阈值或调为非静音。
[0116] 此时用户需要通过投屏目标设备播放声音了,如果投屏源设备此前不向投屏目标设备发送audio数据,此时投屏目标设备由于没收到audio数据,无法放出声音。因此投屏目标设备通过第四通知告知投屏源设备己方的音量变为大于设定阈值或调为非静音,以指示投屏源设备可以发送audio数据了。此时跳转至步骤311。
[0117] P2P协议中用于能力交互的报文共有16个,M1~M16。本申请增加一个交互报文M17(wfd_trigger_mute),以用于投屏的过程中投屏目标设备设置静音状态或者设置音量的情况。当投屏目标设备调为静音或者音量变为小于设定阈值时,投屏目标设备可以发送报文wfd_trigger_mute:true(相当于上述第三通知);当投屏目标设备调为非静音或者音量变为大于设定阈值时,投屏目标设备可以发送报文wfd_trigger_mute:false(相当于上述第四通知)。
[0118] 需要说明的是,步骤307‑309覆盖了整个投屏过程,只要投屏目标设备没有接收到投屏源设备发送的第二通知,都会检测己方音量的变化情况或静音与否。而如果投屏目标设备接收到投屏源设备发送的第二通知,投屏目标设备就没有必要再检测己方音量的变化情况或静音与否,直到再次接收到投屏源设备发送的第一通知,投屏目标设备再次开始检测己方音量的变化情况或静音与否。可以减少己方的线程创建和处理流程,并减少没必要的audio数据包的发送。
[0119] 步骤310、投屏源设备不向投屏目标设备发送audio数据。
[0120] 如上述步骤304‑309所述,用户在投屏连接建立之前或投屏连接建立之后,无论是对投屏源设备的静音选项进行操作,还是对投屏目标设备的音量开关或静音开关进行操作,均可以控制投屏源设备是否向投屏目标设备发送audio数据。如果投屏源设备的静音选项被勾选,或者投屏目标设备的音量从大于设定阈值变为小于设定阈值,或者从非静音变为静音,此时投屏用的数据包中可能包括了audio数据,但根据用户的设置,该audio数据是不需要发送给投屏目标设备的,因此投屏源设备不会向投屏目标设备发送audio数据。可以减少没必要的audio数据包的发送。
[0121] 步骤311、投屏源设备向投屏目标设备发送audio数据。
[0122] 如果投屏源设备的静音选项没有被勾选,或者投屏目标设备的音量从小于设定阈值变为大于设定阈值,或者从静音变为非静音,则投屏源设备会创建audio数据的传输线程或者进行audio数据的收集,向投屏目标设备发送audio数据。此时投屏用的数据包中可能不包括audio数据,但根据用户的设置,即使没有audio数据,投屏源设备依然会在投屏用的数据包中携带上空audio数据,该情况下可参照图5所示实施例的处理。
[0123] 需要说明的是,上述实施例中重点描述了投屏源设备和投屏目标设备关于audio数据传输的投屏方法,其适用的场景可以是video和audio在不同的设备上播放,即用户使用投屏源设备将投屏源设备上的视频的录像(video)投屏至投屏目标设备上,该视频的
video画面通过投屏目标设备的屏幕播放出来,用户还可以使用投屏源设备将该视频的声音(audio)传输至音响设备,该视频的audio声音通过音响设备播放出来。因此投屏源设备在向投屏目标设备投屏的过程中是不需要传输audio数据的。通过减少没必要的audio数据包的发送,确保投屏过程符合投屏时延需求,确保video数据的传输性能,提高投屏画质。而关于video数据的传输可以采用相关技术的方法,本申请对此不做具体限定。
[0124] 本实施例,通过基于用户的输入设置是否在投屏的过程中发送audio数据,从而避免没必要的audio数据包的发送,减少投屏时延,确保video数据的传输性能,提高投屏画质。
[0125] 图5为本申请基于Wi‑Fi P2P的投屏方法实施例二的流程图,如图5所示,本实施例的方法与图3所示方法的区别在于投屏源设备不需要静音选项控制,投屏源设备可以根据投屏内容和投屏目标设备的声音状态确定是否创建audio数据的传输线程或者进行audio数据的收集。本实施例的方法可以包括:
[0126] 步骤501、投屏源设备判断投屏内容是否包括audio。
[0127] 投屏内容可能包括video和/或audio,如果是照片、课件等,就只有video,如果是音乐、广播等,就只有audio,如果是电影、电视等就包括video和audio。投屏内容包括的数据决定了投屏源设备创建的传输线程或者收集的audio数据,如果只有video,就只需要创建video数据的传输线程或者收集video数据,如果只有audio,就只需要创建audio数据的传输线程或者收集audio数据,如果有video和audio,就需要分别创建video数据和audio数据的传输线程或者收集video数据和audio数据。
[0128] 当投屏内容包括audio,跳转至步骤502;当投屏内容不包括audio,跳转至步骤507。
[0129] 步骤502、投屏目标设备检测声音状态。
[0130] 投屏目标设备检测己方音量的变化情况或静音与否。该检测可以是周期性的,例如投屏目标设备会在投屏初始创建一个循环定时器或循环计数器,一旦定时器或计数器发出提示,该设备就会通过检测音量开关或静音开关的触发情况获取用户的输入,进而基于用户的输入确定声音大小或静音与否。该检测也可以是触发式的,一旦用户对音量开关或静音开关进行了操作,投屏目标设备就会被该操作触发进而确定声音大小或静音与否。
[0131] 当投屏目标设备确定音量从大于设定阈值变为小于设定阈值,或者从非静音变为静音,表明用户不需要通过投屏目标设备播放声音了,跳转至步骤503;当投屏目标设备确定音量从小于设定阈值变为大于设定阈值,或者从静音变为非静音,表明用户需要通过投屏目标设备播放声音了,跳转至步骤504。
[0132] 步骤503、投屏目标设备向投屏源设备发送第一通知,该第一通知用于表征投屏目标设备的音量变为小于设定阈值或调为静音。
[0133] 此时用户不需要通过投屏目标设备播放声音,即使投屏源设备确定投屏内容包括audio,要向投屏目标设备发送audio数据,但是这些audio数据是无用的,因此投屏目标设备通过第一通知告知投屏源设备己方的音量变为小于设定阈值或调为静音,以指示投屏源设备可以不用发送audio数据了。此时跳转至步骤505。
[0134] 步骤504、投屏目标设备向投屏源设备发送第二通知,该第二通知用于表征投屏目标设备的音量变为大于设定阈值或调为非静音。
[0135] 此时用户需要通过投屏目标设备播放声音了,投屏目标设备通过第二通知告知投屏源设备己方的音量变为大于设定阈值或调为非静音,以指示投屏源设备可以发送audio数据了。此时跳转至步骤506。
[0136] 步骤505、投屏源设备不向投屏目标设备发送audio数据。
[0137] 如上述步骤501‑504所述,如果投屏内容包括audio,投屏源设备还需要结合投屏目标设备上关于声音状态的设置确定是否发送audio数据。如果投屏目标设备的音量从大于设定阈值变为小于设定阈值,或者从非静音变为静音,基于步骤501的判断,此时投屏用的数据包中包括了audio数据,但根据用户对投屏目标设备的音量或静音的设置,该audio数据是不需要发送给投屏目标设备的,则投屏源设备不会向投屏目标设备发送audio数据。可以减少没必要的audio数据包的发送。
[0138] 步骤506、投屏源设备向投屏目标设备发送audio数据。
[0139] 如果投屏目标设备的音量从小于设定阈值变为大于设定阈值,或者从静音变为非静音,基于步骤501的判断,此时投屏用的数据包中包括了audio数据,且根据用户对投屏目标设备的音量或静音的设置,该audio数据需要发送给投屏目标设备,则投屏源设备会创建audio数据的传输线程或者进行audio数据的收集,向投屏目标设备发送audio数据。
[0140] 步骤507、投屏源设备直接不向投屏目标设备发送audio数据。
[0141] 如上所述,投屏内容不包括audio时,投屏源设备创建了和投屏目标设备之间的音频连接,因此会在音频连接上发送空audio数据包,该情况下投屏源设备不用再参考投屏目标设备的音量的变化情况或静音与否,直接不向投屏目标设备发送audio数据即可。
[0142] 需要说明的是,上述实施例中重点描述了投屏源设备和投屏目标设备关于audio数据传输的投屏方法,其适用的场景可以是video和audio在相同的设备上播放,即用户使用投屏源设备将投屏源设备上的视频的录像(video)和声音(audio)均投屏至投屏目标设
备上,该视频的video画面通过投屏目标设备的屏幕播放出来,audio声音通过投屏目标设备的音响播放出来。因此投屏源设备在向投屏目标设备投屏的过程中需要把video数据和audio数据都传输给投屏目标设备。但如果投屏内容中不包括audio,就不需要传输audio数据,通过减少没必要的audio数据包的发送,确保投屏过程符合投屏时延需求,确保video数据的传输性能,提高投屏画质。而关于video数据的传输可以采用相关技术的方法,本申请对此不做具体限定。
[0143] 本实施例,通过基于投屏内容是否包括audio确定是否在投屏的过程中发送audio数据,从而避免没必要的audio数据包的发送,减少投屏时延,确保video数据的传输性能,提高投屏画质。
[0144] 图6为本申请投屏源设备实施例的结构示意图,如图6所示,本实施例的装置可以包括:处理模块601,发送模块602和接收模块603,其中,处理模块601,用于基于Wi‑Fi P2P创建投屏连接,所述投屏连接包括视频连接和音频连接,所述视频连接用于发送视频数据包,所述音频连接用于发送音频数据包;当通过所述音频连接发送所述音频数据包时,判断静音状态;发送模块602,用于若所述投屏源设备打开静音,则不发送所述音频数据包。
[0145] 在一种可能的实现方式中,接受模块603,用于接收来自所述投屏目标设备的声音状态通知,所述声音状态通知用于指示所述投屏目标设备的音量大于设定阈值或者小于设定阈值,或者指示所述投屏目标设备为静音或者非静音;所述处理模块601,还用于当通过所述音频连接发送所述音频数据包时,根据所述声音状态通知判断所述投屏目标设备的声音状态;所述发送模块602,还用于若所述投屏目标设备的音量小于设定阈值或者为静音时,则不发送所述音频数据包。
[0146] 在一种可能的实现方式中,所述处理模块601,还用于当通过所述音频连接发送所述音频数据包时,采集设定时长内的所述音频数据包;所述发送模块602,还用于若所述设定时长内的所述音频数据包中的数据为无效值或者所述设定时长内的所述音频数据包对应的音量小于设定阈值,则不发送所述音频数据包。
[0147] 在一种可能的实现方式中,所述发送模块602,还用于向所述投屏目标设备发送能力请求;所述接收模块603,还用于接收所述投屏目标设备回复的能力信息;所述处理模块601,还用于当所述能力信息不包括对应所述投屏目标设备的音频能力的字段或者所述对应所述投屏目标设备的音频能力的字段的值为none时,不创建所述音频连接;创建与所述投屏目标设备之间的通信连接;所述发送模块602,还用于通过所述通信连接向所述投屏目标设备发送音频数据包,所述音频数据包括所述投屏源设备上的通话和语音聊天的声音数据。
[0148] 在一种可能的实现方式中,所述处理模块601,还用于当所述能力信息包括对应所述投屏目标设备的音频能力的字段且值不为none时,创建所述音频连接。
[0149] 本实施例的装置,可以用于执行图3或5所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
[0150] 图7为本申请投屏目标设备实施例的结构示意图,如图7所示,本实施例的装置可以包括:处理模块701,接收模块702,输出模块703和发送模块704。其中,处理模块701,用于基于Wi‑Fi P2P创建与投屏源设备之间的投屏连接,所述投屏连接包括视频连接和音频连接,所述视频连接用于接收视频数据包,所述音频连接用于接收音频数据包;接收模块702,用于通过所述视频连接接收所述视频数据包;输出模块703,用于根据所述视频数据包在屏幕上播放相应的投屏画面。
[0151] 在一种可能的实现方式中,发送模块704,用于向所述投屏源设备发送声音状态通知,所述声音状态通知用于指示所述投屏目标设备的音量大于设定阈值或者小于设定阈值,或者指示所述投屏目标设备为静音或者非静音。
[0152] 在一种可能的实现方式中,所述接收模块702,还用于接收所述投屏源设备发送的能力请求;所述发送模块704,还用于向所述投屏目标设备回复的能力信息;所述处理模块701,还用于当所述能力信息不包括对应所述投屏目标设备的音频能力的字段或者所述对应所述投屏目标设备的音频能力的字段的值为none时,不创建所述音频连接,创建与所述投屏源设备之间的通信连接;所述接收模块702,还用于通过所述通信接收所述投屏源设备发送的音频数据包,所述音频数据包括所述投屏源设备上的通话和语音聊天的声音数据。
[0153] 在一种可能的实现方式中,所述处理模块701,还用于当所述能力信息包括对应所述投屏目标设备的音频能力的字段且值不为none时,创建所述音频连接。
[0154] 本实施例的装置,可以用于执行图3或5所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
[0155] 在实现过程中,上述方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。处理器可以是通用处理器、数字信号处理器(digital signal processor,DSP)、特定应用集成电路(application‑specific integrated circuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)或其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。本申请实施例公开的方法的步骤可以直接体现为硬件编码处理器执行完成,或者用编码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
[0156] 上述各实施例中提及的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read‑only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器
(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
[0157] 本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
[0158] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0159] 在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0160] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0161] 另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0162] 所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read‑only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0163] 以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。