重定向方法、装置、设备、存储介质及程序产品与流程

专利查询2023-2-5  166



1.本技术实施例涉及投屏技术领域,特别涉及一种重定向方法、装置、设备、存储介质及程序产品。


背景技术:

2.重定向(redirect)是指将某种能力由一端设备流转至另一端设备的技术,流转的能力包括视频、音频和控制等等。日常生活中常见的重定向技术包括设备投屏。
3.借助投屏功能,源端设备可以将当前显示的画面投射到目的端设备上,从而达到更好的显示效果。相关技术提供的投屏方案,适用于简单投屏场景,比如实现一对一投屏场景或者多对一投屏场景。然而,随着投屏场景的复杂度提高,比如多对多投屏场景,源端设备和目的端设备之间的数据流增多,因而导致编码、解码开销增大。


技术实现要素:

4.本技术实施例提供了一种重定向方法、装置、设备、存储介质及程序产品。所述技术方案如下:
5.一方面,本技术实施例提供了一种重定向方法,所述方法用于源端设备,所述方法包括:
6.基于源端设备标识以及目标重定向对象标识创建源端重定向实例,所述目标重定向对象标识用于表征目标重定向对象;
7.在同一所述源端重定向实例对应至少两个目的端重定向实例的情况下,通过复用重定向数据生成器生成所述源端重定向实例对应的重定向数据,所述目的端重定向实例基于目的端设备标识以及目标屏幕标识创建得到,所述目的端设备标识用于表征目的端设备,所述目标屏幕标识用于表征所述目的端设备的目标屏幕;
8.向所述目的端设备传输所述重定向数据,以便所述目的端设备基于所述重定向数据,通过所述目标屏幕对所述目标重定向对象进行展示。
9.另一方面,本技术实施例提供了一种重定向方法,所述方法用于目的端设备,所述方法包括:
10.基于目的端设备标识以及目标屏幕标识创建目的端重定向实例,所述目标屏幕标识用于表征所述目的端设备的目标屏幕;
11.接收源端设备传输的源端重定向实例对应的重定向数据,所述源端重定向实例基于源端设备标识以及目标重定向对象标识创建得到,所述目标重定向对象标识用于表征目标重定向对象;
12.在存在至少两个所述目的端重定向实例对应同一所述源端重定向实例的情况下,通过复用重定向数据解析器解析所述重定向数据;
13.基于所述重定向数据的解析结果,通过所述目标屏幕对所述目标重定向对象进行展示。
14.另一方面,本技术实施例提供了一种重定向装置,所述装置包括:
15.创建模块,用于基于源端设备标识以及目标重定向对象标识创建源端重定向实例,所述目标重定向对象标识用于表征目标重定向对象;
16.复用模块,用于在同一所述源端重定向实例对应至少两个目的端重定向实例的情况下,通过复用重定向数据生成器生成所述源端重定向实例对应的重定向数据,所述目的端重定向实例基于目的端设备标识以及目标屏幕标识创建得到,所述目的端设备标识用于表征目的端设备,所述目标屏幕标识用于表征所述目的端设备的目标屏幕;
17.第一传输模块,用于向所述目的端设备传输所述重定向数据,以便所述目的端设备基于所述重定向数据,通过所述目标屏幕对所述目标重定向对象进行展示。
18.另一方面,本技术实施例提供了一种重定向装置,所述装置包括:
19.创建模块,用于基于目的端设备标识以及目标屏幕标识创建目的端重定向实例,所述目标屏幕标识用于表征所述目的端设备的目标屏幕;
20.第一接收模块,用于接收源端设备传输的源端重定向实例对应的重定向数据,所述源端重定向实例基于源端设备标识以及目标重定向对象标识创建得到,所述目标重定向对象标识用于表征目标重定向对象;
21.解析模块,用于在存在至少两个所述目的端重定向实例对应同一所述源端重定向实例的情况下,通过复用重定向数据解析器解析所述重定向数据;
22.展示模块,用于基于所述重定向数据的解析结果,通过所述目标屏幕对所述目标重定向对象进行展示。
23.另一方面,本技术实施例提供了一种重定向系统,所述重定向系统包括:至少一个源端设备和至少一个目的端设备;
24.所述源端设备,用于基于源端设备标识以及目标重定向对象标识创建源端重定向实例,所述目标重定向对象标识用于表征目标重定向对象;在同一所述源端重定向实例对应至少两个目的端重定向实例的情况下,通过复用重定向数据生成器生成所述源端重定向实例对应的重定向数据;向目的端设备传输所述重定向数据,以便所述目的端设备基于所述重定向数据,通过所述目标屏幕对所述目标重定向对象进行展示;
25.所述目的端设备,用于基于目的端设备标识以及目标屏幕标识创建目的端重定向实例,所述目标屏幕标识用于表征所述目的端设备的目标屏幕;接收所述源端设备传输的所述源端重定向实例对应的重定向数据;在存在至少两个所述目的端重定向实例对应同一所述源端重定向实例的情况下,通过复用重定向数据解析器解析所述重定向数据;基于所述重定向数据的解析结果,通过所述目标屏幕对所述目标重定向对象进行展示。
26.另一方面,本技术实施例提供了一种计算机设备,所述计算机设备包括处理器和存储器;所述存储器存储有至少一条指令,所述至少一条指令用于被所述处理器执行以实现如上述方面所述的重定向方法。
27.另一方面,本技术实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条程序代码,所述程序代码由处理器加载并执行以实现如上述方面所述的重定向方法。
28.另一方面,本技术实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算
机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述方面的各种可选实现方式中提供的重定向方法。
29.重定向过程中,源端设备基于源端设备标识以及目标重定向对象标识创建源端重定向实例,目的端设备基于目的端设备标识以及目标屏幕标识,创建与源端重定向实例对应的目的端重定向实例,在同一源端重定向实例对应至少两个目的端重实例的情况下,源端设备通过复用重定向数据生成器生成重定向数据并向目的端设备传输,目的端设备接收到该重定向器数据,通过复用重定向数据解析器解析重定向数据,并通过目的端重定向实例所指示的目标屏幕对目标重定向对象进行展示;采用本技术实施例提供的方案,通过复用重定向数据生成器以及重定向数据解析器,减少了源端设备与目的端设备间数据流传输过程中源端设备的编码开销以及目的端设备的解码开销,提高复杂重定向场景的数据传输性能。
附图说明
30.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
31.图1是本技术一个示例性实施例提供的实施环境的示意图;
32.图2是本技术一个示例性实施例提供的编码、传输以及解码过程的实施示意图;
33.图3是本技术另一个示例性实施例提供的编码、传输以及解码过程的实施示意图;
34.图4是本技术一个示例性实施例提供的重定向方法的流程图;
35.图5是本技术一个示例性实施例示出的重定向模块的层级架构的示意图;
36.图6是本技术另一个示例性实施例示出的重定向模块的层级架构的示意图;
37.图7是本技术另一个示例性实施例提供的重定向方法的流程图;
38.图8是本技术一个示例性实施例示出的视频编解码以及传输过程的流程图;
39.图9是本技术一个示例性实施例示出的分流补帧方法的实施流程图;
40.图10是本技术一个示例性实施例示出的异步接入时重定向方法的流程图;
41.图11是本技术一个示例性实施例示出的并发接入时重定向方法的流程图;
42.图12是本技术一个示例性实施例示出的并发接入时重定向方法的实施示意图;
43.图13是本技术一个实施例提供的重定向装置的结构框图;
44.图14是本技术另一个实施例提供的重定向装置的结构框图;
45.图15是本技术一个实施例提供的重定向系统的系统架构图;
46.图16是本技术一个示例性实施例提供的计算机设备的结构方框图。
具体实施方式
47.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
48.图1示出了本技术一个示例性实施例提供的实施环境的示意图。该实施环境可以包括:至少一个源端设备110以及至少一个目的端设备120。
49.源端设备110是具有重定向需求的电子设备,其可以是智能手机、平板电脑、个人计算机等移动终端。图1中以源端设备110包括平板电脑111以及智能手机112为例进行说明。
50.源端设备110中具有重定向需求的对象被称为重定向对象,该重定向对象可以是屏幕镜像或者重定向应用,且重定向对象的重定向内容可以包括视频、音频以及控制中的至少一种。该重定向应用可以为导航应用、视频类应用、游戏类应用等等,本技术实施例并不对投屏应用的具体类型进行限定。可选的,当重定向对象为应用时,重定向过程中该应用可以处于后台运行状态。
51.本技术实施例中,同一源端设备可以同时对至少两个重定向对象进行重定向。比如,可以同时对屏幕镜像以及视频类应用进行投屏,也可以同时对视频类应用以及导航类应用进行投屏。其中,源端设备支持同时重定向的重定向对象的数量具有上限,且该上限与源端设备的处理性能相关。
52.目的端设备120是用于进行重定向结果展示的电子设备,其可以是智能手机、平板电脑、个人计算机、智能电视或者车载终端(比如车机)等等。图1中以目的端设备120包括第一车载终端121和第二车载终端122为例进行说明,其中,第一车载终端121和第二车载终端122设置在同一车辆中,且第一车载终端121和第二车载终端122分别由不同的soc(system on chip,系统级芯片)控制。比如,第一车载终端121为设置在车辆前排的车载终端,第二车载终端122为设置在车辆后排的车载终端。
53.可选的,目的端设备120具有至少一块屏幕。如图1所示,第一车载终端121具有第一屏幕1211以及第二屏幕1212(均由第一车载终端121的第一soc 1213控制),第二车载终端122具有第三屏幕1221和第四屏幕1222(均由第二车载终端122的第二soc 1223控制)。
54.在一些实施例中,当目的端设备120具有至少两块屏幕时,至少两块屏幕可以同时显示不同的投屏内容,或者,相同投屏内容,且各块屏幕中显示的投屏内容可以为单一投屏对象,也可以为多个投屏对象(分屏显示多个投屏对象)。
55.目的端设备120除了具备投屏内容显示功能外,还可以具有音频播放功能,投屏过程中播放的音频即为投屏对象的音频。
56.除了音视频播放功能外,目的端设备120还可以通过输入输出组件实现对投屏内容的反向控制功能。可选的,该输入输出组件可以是目的端设备120的触控式屏幕,目的端设备120的外接控制设备,比如手柄、键盘、鼠标或者触控板等等,本实施例对此不作限定。
57.本技术实施例中的多对多重定向体现在多源端设备(多个源端设备参与重定向)、多重定向对象(同一源端设备中的多个重定向对象参与重定向)、多目的端设备(多个目的端设备参与重定向)以及多屏幕(同一目的端设备的多个屏幕参与重定向)。在一种可能的多对多投屏场景下,如图1所示,平板电脑111中的视频应用被投屏至第一车载终端121的第一屏幕1211;第一游戏应用则被投屏至第一车载终端121的第二屏幕1212。智能手机112中的导航应用被投屏至第一车载终端121的第一屏幕1211,并与视频应用分屏显示;智能手机112中的第二游戏应用被投屏至第二车载终端122的第三屏幕1221和第四屏幕1222,即第三屏幕1221和第四屏幕1222显示相同投屏内容。此外,由于第一车载终端121和第二车载终端122的各块屏幕均具有触控功能,因此用户可以在屏幕上对投屏应用进行操作,从而实现对投屏应用的反向控制。
58.需要说明的是,源端设备110和目的端设备120之间采用的连接方式可以包括wlan ap(wireless local area network access point,无线局域网接入点)模式、wifi-p2p(wireless fidelity-peer to peer,无线直连)、usb(universal serial bus,通用串行总线)有线连接、移动数据网络中的至少一种,本技术实施例对此并不进行限定。
59.此外,上述实施例仅以移动终端向车载终端投屏为例进行(即车机场景)示意性的说明,本技术实施例提供的方案可以应用于其他多对多重定向场景,本实施例并不对具体的应用场景构成限定。
60.在本技术实施例中,向目的端设备传输重定向数据前,源端设备需要对重定向对象进行采集,并通过重定向数据生成器对采集的内容进行编码,生成重定向数据,这个过程中会产生编码开销。对应的,目的端设备接收到重定向数据,需要利用重定向数据解析器对重定向数据进行解析,从而还原重定向对象,在这个过程中会产生解码开销。以重定向对象为视频为例,源端设备需要先对视频画面进行采集,然后通过视频编码器对采集到的画面进行视频编码得到视频数据流,这个过程中产生编码开销,对应的,目的端设备接收到视频数据流后,需要通过视频解码器进行解码,从而还原出视频画面,这个过程中会产生解码开销。
61.在一种可能的投屏场景下,源端设备中的同一投屏对象需要被投屏至不同的目的端设备,或者,被投屏至同一目的端设备的不同屏幕。相关技术中采用如图2所示的方式,即当需要将源端设备中的投屏应用同时投屏至目的端设备1的屏幕1和屏幕2,以及目的端设备2的屏幕3时,通过视频编码器1、2、3分别进行视频编码,通过视频解码器1、2、3分别进行视频解码,以及分三路进行视频数据流传输会产生三倍编码、解码开销。
62.而在本技术实施例中,源端设备与目的端设备可以采用复用策略,即源端设备通过复用重定向数据生成器对重定向对象进行编码生成重定向数据,目的端设备通过复用重定向数据解析器对重定向数据进行解析,还原出重定向对象。相比于相关技术,源端设备与目的端设备分别采用复用策略,减少了编码、解码开销。如图3所示,同样当需要将源端设备中的投屏应用同时投屏至目的端设备1的屏幕1和屏幕2,以及目的端设备2的屏幕3时,源端设备复用视频编码器1进行视频编码,得到视频数据流,目的端设备1接收到视频数据流后,通过复用视频解码器1进行视频解码,从而通过屏幕1和屏幕2对解码得到的画面进行显示,目的端设备2接收到视频数据流后,通过视频解码器2进行视频解码,从而通过屏幕3对解码得到的画面进行显示。相比于相关技术,源端设备与目的端设备分别采用复用策略编码器及解码器,使得编码开销降低了2倍,解码开销降低了1倍。下面对本技术实施例提供的方案进行介绍。
63.请参考图4,其示出了本技术一个示例性实施例提供的重定向方法的流程图,本技术实施例以该方法应用于图1所示的实施环境为例进行说明,该方法包括:
64.步骤401,源端设备基于源端设备标识以及目标重定向对象标识创建源端重定向实例,目标重定向对象标识用于表征目标重定向对象。
65.其中,该重定向对象的类型包括屏幕镜像或重定向应用中的至少一种,且重定向对象的重定向内容的类型包括音频、视频以及控制中的至少一种。
66.当需要通过源端设备进行重定向时,源端设备基于源端设备标识(即自身设备标识)以及待重定向的目标重定向对象的目标重定向对象标识,创建源端重定向实例,即以“源端设备+重定向对象”为单位形成源端重定向实例。
67.其中,当不同源端设备对同一重定向对象进行重定向时(比如不同源端设备对同一应用进行重定向),不同源端设备创建的源端重定向实例不同;当同一源端设备需要对不同重定向对象进行重定向时,同一源端设备基于不同重定向对象创建的源端重定向实例也不同。
68.可选的,源端设备在接收到重定向操作时创建源端重定向实例,或者,源端设备接收到第三方设备的重定向指令时创建源端重定向实例,即通过源端设备进行重定向可以在源端设备侧触发,也可以由第三方设备触发,其中,该第三方设备与源端设备处于同一调度域中,比如,第三方设备与源端设备登陆有相同用户帐号。
69.关于源端设备重定向的具体内容,在一些实施例中,源端设备可以对屏幕镜像进行重定向,也可以对安装并运行的应用程序(即重定向应用)进行重定向。对应的,当目标重定向对象为屏幕镜像时,目标重定向对象标识为镜像标识;当目标重定向对象为重定向应用时,目标重定向对象标识为重定向应用的应用标识。
70.步骤402,目的端设备基于目的端设备标识以及目标屏幕标识创建目的端重定向实例,目标屏幕标识用于表征目的端设备的目标屏幕。
71.与源端设备相对应的,进行展示的目的端设备需要创建与源端重定向实例对应的目的端重定向实例。其中,目的端设备基于目的端设备标识(即自身设备标识)以及进行展示的目标屏幕的目标屏幕标识,创建目的端重定向实例,即以“目的端设备+目标屏幕”为单位形成目的端重定向实例。
72.本技术实施例中,目的端设备具有至少一块屏幕,不同屏幕对应不同的屏幕标识,且不同屏幕由目的端设备中的同一soc进行控制。比如,目的端设备为车载终端,该车载终端具有主驾屏幕和副驾屏幕。
73.其中,当不同目的端设备对同一重定向对象进行展示时,不同目的端设备创建的目的端重定向实例不同;当同一目的端设备通过不同屏幕进行展示时,同一目的端设备基于不同屏幕创建的目的端重定向实例也不同。
74.可选的,目的端设备在接收到源端设备发送的重定向请求时创建目的端重定向实例,或者,目的端设备接收到第三方设备的重定向指令时创建目的端重定向实例,其中,该第三方设备与目的端设备处于同一调度域中,比如,第三方设备与目的端设备登陆有相同用户帐号。
75.步骤403,在同一源端重定向实例对应至少两个目的端重定向实例的情况下,源端设备通过复用重定向数据生成器生成源端重定向实例对应的重定向数据。
76.在一种可能的实施方式中,同一源端重定向实例对应至少两个目的端重定向实例可以是同一源端设备的同一重定向对象被重定向至同一目的端设备的至少两个目标屏幕。示例性的,如图3所示,同一源端设备的投屏应用被投屏至目的端设备1的屏幕1以及屏幕2。
77.在另一种可能的实施方式中,同一源端重定向实例对应至少两个目的端重定向实例是指同一源端设备的同一重定向对象被重定向至不同目的端设备的目标屏幕。示例性的,如图3所示,同一源端设备的投屏应用被投屏至目的端设备1的屏幕1、屏幕2以及目的端设备2的屏幕3。
78.在前述情况下,源端设备完成源端重定向实例创建后,为了减小源端设备的编码
开销,源端设备采用复用策略,即复用重定向数据生成器将重定向对象转换为重定向数据。其中,重定向数据生成器的类型与目标重定向对象对应的媒体类型相关。在本技术实施例中,目标重定向对象对应的媒体类型包括视频、音频、以及控制中的至少一种。
79.可选地,当目标重定向对象的媒体类型为视频时,重定向数据生成器为视频编码器;当目标重定向对象的媒体类型为音频时,重定向数据生成器为音频编码器,当目标重定向对象的媒体类型为控制时,重定向数据生成器为控制编码器。
80.另外,该重定向数据至少包含视频数据流,还可以包含音频数据流以及控制数据流中的至少一种。
81.在一些实施例中,源端设备对目标重定向对象的画面进行视频编码,得到视频数据流,其中,源端设备可以采用h264、h265等视频编码格式进行编码,本技术实施例对此不作限定;重定向数据包括音频数据流时,源端设备对目标重定向对象的声音进行音频编码,得到音频数据流,其中,源端设备可以采用aac等音频编码格式进行编码,本技术实施例对此不作限定;当重定向数据包括控制数据流时,源端设备可以按照约定的指令格式对控制指令进行编码,得到控制数据流。
82.步骤404,源端设备向目的端设备传输重定向数据。
83.关于重定向数据的传输方式,可选的,源端设备可以通过无线方式传输重定向数据,比如,wlan ap、wifi-p2p或移动数据网络;也可以通过有线方式传输重定向数据,比如,usb有线连接;也可以通过有线无线混合方式传输重定向数据,本技术实施例对此不作限定。
84.步骤405,目的端设备接收源端设备传输的重定向数据。
85.在一种可能的实施方式中,同一目的端设备接收同一源端设备传输的重定向数据。
86.在另一种可能的实施方式中,不同的目的端设备接收同一源端设备传输的重定向数据。
87.步骤406,在存在至少两个目的端重定向实例对应同一源端重定向实例的情况下,目的端设备通过复用重定向数据解析器解析重定向数据。
88.在一种可能的实施方式中,至少两个目的端重定向实例对应同一源端定向实例可以是不同的目的端设备对同一源端设备的同一重定向对象进行展示;在另一种可能的实施方式中,也可以是同一目的端设备通过不同的屏幕对同一源端设备的同一重定向对象进行展示。
89.此时为了减少目的端设备的解码开销,目的端设备采用复用策略,即复用重定向数据解析器解析重定向数据。
90.其中,重定向数据解析器的类型与目标重定向对象对应的媒体类型相关。可选地,当目标重定向对象的媒体类型为视频时,重定向数据解析器为视频解码器、当目标重定向对象的媒体类型为音频时,重定向数据解析器为音频解码播放器。当目标重定向对象的媒体类型为控制时,重定向数据解析器为控制解码器。
91.在一些实施例中,当重定向数据中包括视频数据流时,目的端设备通过视频解码器对视频数据流进行解析,当重定向数据中包括音频数据流时,目的端设备通过音频解码播放器对音频数据流进行解析,当重定向数据中包括控制数据流时,目的端设备通过控制
解码器对控制数据流进行解析。
92.步骤407,目的端设备基于重定向数据的解析结果,通过目标屏幕对目标重定向对象进行展示。
93.进一步的,目的端设备确定目的端重定向实例所指示的目标屏幕,从而通过目标屏幕对目标重定向对象进行展示。
94.在一些实施例中,目的端设备对视频数据流进行解析后,通过视频播放组件进行播放目标重定向对象的画面;目的端设备对音频数据流进行解析后,通过音频播放组件进行播放目标重定向对象的声音。
95.综上所述,本技术实施例中,重定向过程中,源端设备基于源端设备标识以及目标重定向对象标识创建源端重定向实例,目的端设备基于目的端设备标识以及目标屏幕标识,创建与源端重定向实例对应的目的端重定向实例,在同一源端重定向实例对应至少两个目的端重实例的情况下,源端设备通过复用重定向数据生成器生成重定向数据并向目的端设备传输,目的端设备接收到该重定向器数据,通过复用重定向数据解析器解析重定向数据,并通过目的端重定向实例所指示的目标屏幕对目标重定向对象进行展示;采用本技术实施例提供的方案,通过复用重定向数据生成器以及重定向数据解析器,减少了源端设备与目的端设备间数据流传输过程中源端设备的编码开销以及目的端设备的解码开销,提高复杂重定向场景的数据传输性能。
96.为了实现多层级的多对多重定向,源端设备以及目的端设备的重定向模块进行分层设计。如图5所示,重定向模块的层级结构包括:
97.设备层:包括多路投屏服务,用于对外提供设备的投屏api(application programming interface,应用程序接口)。
98.投屏应用层:包括由投屏管理器创建的源端重定向实例(作为源端设备时)或目的端重定向实例(作为目的端设备时)。
99.流媒体处理层:包括视频处理模块、音频处理模块以及控制处理模块,用于处理源端或目的端重定向实例中特定媒体类型的数据。
100.重定向实例层:作为源端设备时,包括源端视频重定向器、源端音频重定向器以及源端控制重定向器;作为目的端设备时,包括目的端视频重定向器、目的端音频重定向器以及目的端控制重定向器。特定媒体类型的源端重定向器以及目的端重定向器之间的传输链路即用于传输特定媒体类型的重定向数据。
101.显示层:包括投屏窗体应用,且不同投屏窗体应用对应目的端设备的不同屏幕。
102.在本技术实施例中,源端设备和目的端设备采用复用策略,通过复用重定向模块中的结构,减小源端设备与目的端设备在数据流传输过程中的编码以及解码开销。下面结合如图6所示的重定向模块更细致的层级结构对源端设备和目的端设备的复用策略进行说明。
103.1.源端投屏实例:同一个重定向对象复用,负责在源端管理该投屏应用之下各种类型的媒体处理模块和重定向器。
104.2.目的端投屏实例:同一个源端设备+重定向对象复用,负责在目的端管理该投屏应用之下各种类型的重定向器。
105.3.重定向上下文:同一个重定向对象复用,维护该重定向对象的上下文数据及状
态转换。
106.4.源端视频处理模块:源端投屏实例下同一种媒体类型复用,负责维护和统一处理某种媒体类型的业务逻辑。
107.5.视频编码器:源端投屏实例下视频媒体类型复用,保证同一个重定向对象只会进行一路编码,负责分发给下层多条投屏链路。
108.6.源端视频重定向器:对应源端每一个具体的投屏实例及其物理通道,负责接收目的端的投屏请求并向其输送媒体流,无复用。
109.7.目的端视频重定向器:对应目的端每一个具体的投屏实例及其物理通道,负责向源端发起投屏请求并向其接收处理媒体流。同一个源端设备+重定向对象下的复用,为多个显示屏提供统一的媒体流接收和处理。
110.8.视频解码器:同一个源端设备+重定向对象复用,确保同一个重定向对象只会进行一路解码,为多个显示屏提供解码后的画面。
111.9.目的端投屏窗体应用:跟目的端显示屏一一对应,来自同一个显示屏的多路媒体流复用。负责该显示屏上多路视频画面的显示。
112.10.音频采集编码器:设备级的音频采集编码器为整个源端设备复用。应用级的音频采集编码器则是某一个投屏应用级别进行复用。统一进行音频录制和编码,为多条音频链路提供数据。
113.11.音频解码播放器:设备级音频以每个源端设备为单位复用,应用级音频以每个源端设备+重定向对象为单位复用。
114.下面结合上述层级结构,对源端设备以及目的端设备的复用策略以及重定向过程进行进一步说明。
115.请参考图7,其示出了本技术另一个示例性实施例提供的重定向方法的流程图,本技术实施例以该方法应用于图1所示的实施环境为例进行说明,该方法包括:
116.步骤701,源端设备基于源端设备标识以及目标重定向对象标识创建源端重定向实例,目标重定向对象标识用于表征目标重定向对象。
117.本步骤的实施方式可以参考上述步骤401,本实施例在此不作赘述。
118.步骤702,目的端设备基于目的端设备标识以及目标屏幕标识创建目的端重定向实例,目标屏幕标识用于表征目的端设备的目标屏幕。
119.本步骤的实施方式可以参考上述步骤402,本技术实施例在此不作赘述。
120.步骤703,在同一源端重定向实例对应至少两个目的端重定向实例的情况下,源端设备通过复用重定向数据生成器生成源端重定向实例对应的重定向数据。
121.本步骤的实施方式可以参考上述步骤403,本技术实施例在此不作赘述。
122.步骤704,在至少两个目的端重定向实例对应同一目的端设备的情况下,源端设备创建一个源端重定向器,或,在至少两个目的端重定向实例对应至少两个目的端设备的情况下,源端设备创建至少两个源端重定向器。
123.在一种可能的实施方式中,源端设备创建出源端重定向实例后,进一步基于源端重定向实例创建源端重定向器,该源端重定向器即用于传输源端重定向实例对应的重定向数据。可选的,源端设备基于源端重定向实例以及目的端设备标识创建源端重定向器。
124.在一种可能的实施方式中,当同一源端设备向目的端设备的多个屏幕投屏同一重
定向对象时,源端设备创建一个源端重定向器。比如,当需要向第一目的端设备的第一屏幕以及第二屏幕同时投屏游戏应用时,源端设备基于源端设备标识、第一目的端标识以及游戏应用标识创建一个源端重定向器。
125.在另一种可能的实施方式中,当同一源端设备向不同目的端设备的屏幕投屏同一重定向对象时,源端设备创建多个源端重定向器。比如,当需要向第一目的端设备以及第二目的端设备投屏游戏应用时,源端设备基于源端设备标识、第一目的端标识以及游戏应用标识创建第一源端重定向器,基于源端设备标识、第二目的端标识以及游戏应用标识创建第二源端重定向器。
126.可选的,在进行重定向时,可以设置重定向对象的媒体类型(可以由用户手动设置,也可以由源端设备基于目的端设备的能力自动设置),该媒体类型包括视频、音频以及控制中的至少一种。当源端重定向实例的媒体类型包括视频时,目的端设备可以通过屏幕显示目标重定向对象;当源端重定向实例的媒体类型包括音频时,目的端设备可以通过音频播放组件播放目标重定向对象的声音;当源端重定向实例的媒体类型包括控制时,目的端设备可以对目标重定向对象进行反向控制。
127.相应的,源端设备需要根据目标重定向对象对应的媒体类型,分别创建不同媒体类型对应的源端重定向器。在另一种可能的实施方式中,源端设备基于源端重定向实例、目的端设备标识以及目标重定向对象对应的媒体类型,创建至少一个源端重定向器,其中,不同的源端重定向器对应不同的媒体类型。
128.示例性的,当目标重定向对象对应的媒体类型包括视频时,源端设备创建源端视频重定向器,该源端视频重定向器用于重定向目标重定向对象的视频数据流;当目标重定向对象对应的媒体类型包括音频时,源端设备创建源端音频重定向器,该源端音频重定向器用于重定向目标重定向对象的音频数据流;当目标重定向对象对应的媒体类型包括控制,源端设备创建源端控制重定向器,该源端控制重定向器用于重定向目标重定向对象的控制数据流。
129.比如,当需要向第一目的端设备投屏游戏应用,且第一目的端设备支持显示游戏应用画面、播放游戏应用声音以及反向控制游戏应用时,源端设备基于源端设备标识、第一目的端标识、游戏应用标识以及视频类型创建源端视频重定向器,基于源端设备标识、第一目的端标识、游戏应用标识以及音频类型创建源端音频重定向器;基于源端设备标识、第一目的端标识、游戏应用标识以及控制类型创建源端控制重定向器。
130.步骤705,目的端设备创建目的端重定向器,目的端重定向器被至少两个目的端重定向实例复用。
131.与源端设备相对应的,目的端设备需要创建与源端重定向器对应的目的端重定向,以便后续通过源端重定向器与目的端重定向器之间的链路传输源端重定向实例对应的重定向数据。
132.关于创建目的端重定向器的方式,在一种可能的实施方式中,目的端设备知悉源端设备以及目标重定向对象,从而基于源端设备标识、目标重定向对象标识以及目的端设备标识创建目的端重定向器。
133.在一种可能的实施方式中,当源端设备的同一重定向对象向不同目的端设备投屏时,不同的目的端设备创建不同的目的端重定向器。比如,当源端设备向第一目的端设备以
及第二目的端设备投屏游戏应用时,第一目的端设备基于源端设备标识、第一目的端标识以及游戏应用标识创建第一目的端重定向器,第二目的端设备基于源端设备标识、第二目的端标识以及游戏应用标识创建第二目的端重定向器。
134.在另一种可能的实施方式中,当源端设备的目的端设备的多个屏幕投屏同一个重定向对象时,目的端设备创建单个目的端重定向器,此时多个目的端重定向实例标识复用同一目的端重定向器。比如,当源端设备向第一目的端设备的第一屏幕以及第二屏幕同时投屏游戏应用时,第一目的端设备基于源端设备标识、第一目的端标识以及游戏应用标识创建第一目的端重定向器,此时基于第一目的端设备标识以及第一屏幕标识创建的第一目的端重定向实例以及基于第一目的端设备标识以及第二屏幕标识创建的第二目的端重定向实例复用第一目的端重定向器。
135.可选的,当用户在重定向过程中设置了源端重定向实例的媒体类型时,源端设备会针对不同媒体类型创建不同源端重定向器,而目的端设备则需要对应针对不同媒体类型的目的端重定向器。
136.在另一种可能的实施方式中,目的端设备基于源端重定向实例、目的端设备标识以及目标重定向对象对应的媒体类型,创建至少一个目的端重定向器,其中,不同的目的端重定向器对应不同的媒体类型。
137.示例性的,当目标重定向对象对应的媒体类型包括视频时,目的端设备创建目的端视频重定向器,用于接收源端视频重定向器传输的视频数据流;当目标重定向对象对应的媒体类型包括音频时,目的端设备创建目的端音频重定向器,用于接收源端音频重定向器传输的音频数据流;当目标重定向对象对应的媒体类型包括控制,目的端设备创建目的端控制重定向器,用于向源端控制重定向器传输控制数据流。
138.比如,当源端设备向第一目的端设备投屏游戏应用,且第一目的端设备支持显示游戏应用画面、播放游戏应用声音以及反向控制游戏应用时,目的端设备基于源端设备标识、第一目的端标识、游戏应用标识以及视频类型创建目的端视频重定向器,基于源端设备标识、第一目的端标识、游戏应用标识以及音频类型创建目的端音频重定向器;基于源端设备标识、第一目的端标识、游戏应用标识以及控制类型创建目的端控制重定向器。
139.步骤706,通过源端重定向器与目的端重定向器之间的链路,源端设备向目的端设备传输重定向数据。
140.完成重定向器创建后,源端设备即通过源端重定向器,向对应的目的端重定向器(目的端重定向器与源端重定向器对应同一源端重定向实例)传输重定向数据。
141.在一种可能的实施方式中,当源端设备和目的端设备针对不同媒体类型创建不同重定向器时,源端设备通过至少一个源端重定向器与一个目的端重定向器之间的至少一条链路,向目的端设备传输至少一种媒体类型的重定向数据,其中,不同源端重定向器与目的端重定向器之间的链路用于传输不同媒体类型的重定向数据。
142.比如,当源端设备向目的端设备投屏游戏应用,且目的端设备支持显示游戏应用画面以及播放游戏应用声音时,源端设备通过源端视频重定向器向目的端设备的目的端视频重定向器传输视频数据流,通过源端音频重定向器向目的端设备的目的端音频重定向器传输音频数据流。
143.步骤707,通过目的端重定向器与源端重定向器之间的链路,目的端设备接收源端
设备传输的重定向数据。
144.在一种可能的实施方式中,目的端设备通过至少一个目的端重定向器与至少一个源端重定向器之间的至少一条链路,接收源端设备传输的至少一种媒体类型的重定向数据。
145.步骤708,在存在至少两个目的端重定向实例对应同一源端重定向实例的情况下,目的端设备通过复用重定向数据解析器解析重定向数据。
146.本步骤的实施方式可以参考上述步骤406,本技术实施例对此不作赘述。
147.步骤709,目的端设备基于重定向数据的解析结果,通过目标屏幕对目标重定向对象进行展示。
148.在一种可能的实施方式中,当目的端设备具有至少两块屏幕时,目的端设备根据目的端重定向实例中的目标屏幕标识确定目标屏幕,进而通过目标屏幕进行展示。
149.在一些可能应用场景中,多路投屏(来自同一源端设备或不同源端设备)需要同时显示在目的端设备中的同一块屏幕(同屏多显);多路投屏需要显示在目的端设备中的不同屏幕(多屏异显);源端设备的同一投屏对象需要同时显示在目的端设备的不同屏幕(多屏同显)。
150.为了保证投屏显示的准确性,在一些实施例中,目的端设备的各个屏幕分别对应各自的投屏窗体应用,接收到重定向数据后,目的端设备即通过目标屏幕对应的目标投屏窗体应用进行展示。以安卓系统为例,投屏窗体应用可以为activity(活动)组件。
151.可选的,投屏窗体应用对应设置有窗体应用代理,用于对投屏窗体应用的生命周期进行控制。
152.并且,针对同屏多显场景,目的端设备需要复用投屏窗体应用,在同一屏幕中对多个重定向对象进行分屏显示。
153.在一种可能的实施方式中,目的端设备接收到重定向数据后进行展示可以包括如下两种可能的情况。
154.1、响应于目标屏幕对应的目标投屏窗体应用处于未启动状态,启动目标投屏窗体应用;通过目标投屏窗体应用对目标重定向对象进行展示。
155.可选的,确定出展示的目标屏幕后,目的端设备检测该目标屏幕对应的目标投屏窗体应用是否处于启动状态,若处于未启动状态,表明当前没有其他投屏对象通过目标屏幕进行展示,从而启动目标投屏窗体应用,进而通过目标投屏窗体应用进行展示,此时,目标屏幕仅显示目标重定向对象的画面。
156.2、响应于目标投屏窗体应用处于启动状态,通过复用目标投屏窗体应用对目标重定向对象进行展示,其中,复用目标投屏窗体应用后,各个投屏对象分屏显示在目标屏幕中。
157.可选的,当检测到目标投屏窗体应用处于启动状态时,表明目标屏幕当前正在展示其他投屏对象。目的端设备需要复用目标投屏窗体应用(即多个源端重定向实例复用同一投屏窗体应用),进而对目标屏幕当前展示的其他投屏对象以及目标重定向对象进行分屏显示。其中,目的端设备可以基于各个投屏对象的投屏方向(横屏或竖屏)以及投屏对象的数量进行分屏控制,本技术实施例对此不作限定。
158.在一些实施例中,当投屏窗体应用内的各个源端重定向实例均退出时,目的端设
备结束投屏窗体应用的生命周期,即销毁投屏窗体应用。
159.在本技术实施例中,源端设备通过复用重定向数据生成器生成重定向数据,目的端设备通过复用重定向数据解析器解析重定向数据,减小了源端设备以及目的端设备的编码以及解码开销,另外源端设备以及目的端设备分别创建源端重定向器以及目的端重定向器,并通过重定向器之间的链路进行重定向数据传输,保证重定向数据的准确传输。
160.在本技术实施例中,以目标重定向对象的媒体类型为视频为例,对源端设备以及目的端设备采取的复用策略进行说明,如图8所示,视频的编解码以及传输过程可以包括如下步骤。
161.步骤801,源端设备基于源端设备标识以及目标重定向对象标识创建源端重定向实例,目标重定向对象标识用于表征目标重定向对象。
162.本步骤的实施方式可以参考上述步骤401,本实施例在此不作赘述。
163.步骤802,目的端设备基于目的端设备标识以及目标屏幕标识创建目的端重定向实例,目标屏幕标识用于表征目的端设备的目标屏幕。
164.本步骤的实施方式可以参考上述步骤402,本技术实施例在此不作赘述。
165.步骤803,源端设备通过复用视频编码器对同一源端重定向实例对应的画面进行视频编码,生成视频数据流。
166.可选的,当需要将同一源端设备的同一重定向对象投屏至同一目的端设备的不同屏幕或者不同目的端设备的不同屏幕时,源端设备将复用视频编码器对该源端重定向实例的画面进行视频编码,得到视频数据流,而非根据屏幕数量采用多个视频编码器分别进行视频编码。
167.示意性的,如图3所示,当需要将源端设备中的投屏应用同时投屏至目的端设备1的屏幕1和屏幕2,以及目的端设备2的屏幕3时,源端设备复用视频编码器1进行视频编码,得到视频数据流。
168.步骤804,在至少两个目的端重定向实例对应同一目的端设备的情况下,源端设备创建一个源端视频重定向器,或,在至少两个目的端重定向实例对应至少两个目的端设备的情况下,源端设备创建至少两个源端视频重定向器。
169.示例性的,如图3所示,当需要将源端设备中的投屏应用投屏至目的端设备1的屏幕1和屏幕2,源端设备创建一个源端视频重定向器,当需要将源端设备中的投屏应用同时投屏至目的端设备1和目的端设备2时,源端设备创建两个源端视频重定向器。
170.步骤805,目的端设备创建目的端视频重定向器。
171.示例性的,如图3所示,当需要将源端设备中的投屏应用投屏至目的端设备1的屏幕1和屏幕2,目的端设备创建一个目的端视频重定向器,当需要将源端设备中的投屏应用同时投屏至目的端设备1的屏幕1和屏幕2,目的端设备2的屏幕3时,目的端设备创建针对目的端设备1的第一目的端视频重定向器以及针对目的端设备2的第二目的端视频重定向器。
172.步骤806,源端设备通过源端视频重定向器与目的端视频重定向器之间的链路,向目的端设备传输视频数据流。
173.示意性的,如图3所示,由于投屏应用需要被投屏至目的端设备1和目的端设备2,因此源端设备需要创建针对目的端设备1的第一源端视频重定向器,以及针对目的端设备2的第二源端视频重定向器,并将编码得到的视频数据流传输至第一源端视频重定向器和第
二源端视频重定向器,进而通过第一源端视频重定向器和第一目的端视频重定向器将视频数据流传输至目的端设备1,通过第二源端视频重定向器和第二目的端视频重定向器将视频数据流传输至目的端设备2。
174.步骤807,通过目的端视频重定向器与源端视频重定向器之间的链路,目的端设备接收源端设备传输的视频数据流。
175.示意性的,如图3所示,源端设备的投屏应用被投屏至目的端设备1和目的端设备2,目的端设备1通过第一目的端视频重定向器与第一源端视频重定向器之间的链路接收视频数据流,目的端设备2通过第二目的端视频重定向器与第二源端视频重定向器之间的链路接收视频数据流。
176.步骤808,在存在至少两个目的端重定向实例对应同一源端重定向实例的情况下,目的端设备通过复用视频解码器对视频数据流进行视频解码,得到源端重定向实例对应的画面。
177.可选的,当需要将同一重定向对象投屏至同一目的端设备的至少两个屏幕时,目的端设备将复用视频解码器对该源端重定向实例的视频数据流进行视频解码,得到视频画面,而非根据屏幕数量采用多个视频解码器分别进行视频解码。
178.示意性的,如图3所示,目的端设备1接收到视频数据流后,复用视频解码器1进行视频解码,从而通过屏幕1和屏幕2对解码得到的画面进行显示。
179.步骤809,目的端设备基于重定向数据的解析结果,通过目标屏幕对目标重定向对象进行展示。
180.示意性的,如图3所示,目标设备1通过屏幕1以及屏幕2对视频进行展示,目标设备2通过屏幕3对视频进行展示。
181.在本技术实施例中,源端设备通过复用视频编码器,目的端设备通过复用视频解码器从而减小了源端设备与目的端设备间视频数据流传输的过程中的编码以及解码开销。
182.当目标重定向对象对应的媒体类型为音频时,可以参照上述步骤执行,下面对其进行简略介绍。
183.在另一种可能的场景下,当目标重定向对象对应的媒体类型包括音频时,源端设备需要对重定向对象进行音频采集,并对采集到的音频进行编码,得到音频数据流,从而将该音频数据流传输至目的端设备,以供目的端设备进行解析播放。在一种可能的实施方式,当目标重定向对象的类型为屏幕镜像时,源端设备通过复用设备级音频采集编码器进行音频采集及编码,得到音频数据流,其中,该设备级音频采集编码器用于采集设备的音频并编码;当目标重定向对象的类型为重定向应用时,源端设备通过复用应用级音频采集编码器进行音频采集及编码,得到音频数据流,其中,该应用级音频采集编码器用于采集重定向应用的音频并编码。
184.进一步的,源端设备通过源端音频重定向器与目的端音频重定向器之间的链路,向目的端设备传输音频数据流。目的端设备创建音频重定向器,并通过目的端音频重定向器与源端音频重定向器之间的链路,接收源端设备传输的音频数据流。目的端设备接收音频数据流后,通过复用音频解码器对音频数据流进行音频解码,得到源端重定向实例对应的音频。在本技术实施例中,源端设备通过复用音频采集编码器,目的端设备通过复用音频解码器减小了源端设备与目的端设备间音频数据流传输过程中的编码以及解码开销。
185.在一种可能的实施方式中,当目的端设备为至少两个时,源端设备通过至少两个源端重定向器与至少两个目的端重定向器之间的至少两条链路,向至少两个目的端设备分流传输重定向数据。示例性的,如图3所示,由于投屏应用需要被投屏至目的端设备1和目的端设备2,因此源端设备需要创建针对目的端设备1的第一源端视频重定向器,以及针对目的端设备2的第二源端视频重定向器,并将编码得到的视频数据流分流至第一源端视频重定向器和第二源端视频重定向器,进而通过第一源端视频重定向器和第一目的端视频重定向器将视频数据流传输至目的端设备1,通过第二源端视频重定向器和第二目的端视频重定向器将视频数据流传输至目的端设备2,实现视频数据流的分流传输。由于采用分流策略,因此降低了源端设备以及目的端设备数据流传输的io开销。
186.在一种可能的实施方式中,第一目的端设备和第二目的端设备异步向源端设备发送投屏请求,源端设备先后通过第一源端视频重定向器与第一目的端视频重定向器之间的链路、第二源端视频重定向器与第二目的端视频重定向器之间的链路,将视频数据流分流传输至第一目的端设备以及第二目的端设备。但是在此过程中,由于第一目的端设备的第一路投屏以及第二目的端设备的第二路投屏接入时间不同,容易导致出现花屏等异常情况。
187.首先以安卓系统mediacodec编码模块为例对视频编码的过程进行简单的介绍。
188.在本技术实施例中,目标重定向对象的媒体类型为视频,源端设备的mediacodec编码模块以一定频率采样视频画面并编码成多个i(intra-coded picture,帧内编码图像)帧以及多个p(predictive-coded picture,前向预测编码图像)帧。i帧即关键帧,是一种带有完成显示信息的独立帧,其包含全量数据,无需依赖其他帧可独立解码,且会作为其他帧的基准值。p帧为非关键帧,存储的是本帧与相邻的前一帧(i帧和p帧)的差值,需要参考前向帧才能成像。如果该p帧之前的一个i帧以及多个p帧有任一帧数据丢失或者出错,都会导致后续一段时间内的画面花屏,直到下一个i帧恢复。
189.除此之外,mediacodec编码模块在对视频画面进行编码过程中还会生成配置(confing)帧,即视频流的头部信息,会记录当前视频流编码的相关参数,并保存在sps(sequence paramater set,序列参数集)和pps(picture paramater set,图像参数集)串中。另外,其包含了初始化视频解码器所需要的信息参数,例如编码的profile、level、图像的宽度等。
190.进一步,结合上述视频编码过程对第一目的端设备以及第二目的端设备异步接入时产生的花屏等异常情况进行说明。示例性的,如图9所示,第一目的端设备第一路投屏接入时,源端设备会触发视频编码器,视频编码器生成的配置帧、i帧、p帧都会发送至第一源端视频重定向器,因此第一路视频流中包含完整的配置帧、i帧以及p帧。由于第二目的端设备在第一目的端设备之后接入,因此第二路投屏接入的时通常在某个p帧,此时第二源端视频重定向器按照该视频帧接收的话,将缺失配置帧以及i帧,则会导致目的端设备显示异常。在一种可能的实施方式中,若缺失配置帧会导致目的端设备解码器无法解码;在另一种可能的实施方式中,若缺失i帧以及i帧之后的p帧会导致目的端设备显示画面花屏。因此在本技术实施例中通过对第二路投屏采用分流补帧方法以解决上述问题。下面以第一目的端设备以及第二目的端设备为例对分流补帧方法进行介绍。另外需要说明的是,在本技术实施例中至少存在两个目的端设备,本技术实施例仅以第一目的端设备和第二目的端设备为
例进行说明,且第一目的端设备在第二目的端设备之前接入。请参考图10,其示出了本技术一个示例性实施例提供的异步接入时重定向方法的流程图。
191.步骤1001,第二目的端设备通过第二目的端视频重定向器与第二源端视频重定向器之间的链路,向源端设备发送投屏请求。
192.在一种可能的实施方式中,第一目的端设备在第二目的端设备之前接入,也就是说第一目的端设备通过第一目的端视频重定向器与第一源端视频重定向器之间的链路,向源端设备发送第一投屏请求后,第二目的端设备才通过第第二目的端视频重定向器与第二源端视频重定向器之间的链路,向源端设备发送第二投屏请求。
193.步骤1002,响应于第二目的端设备的投屏请求,源端设备通过第二源端视频重定向器从源端重定向实例的重定向上下文中获取配置帧。
194.在本技术实施例中,第一目的端设备先向源端设备发送投屏请求,源端设备接收到第一目的端设备发送的投屏请求后,启动视频编码器,并将视频编码器生成的配置帧同步上报给重定向上下文,并将所有帧即配置帧、i帧、p帧发送至第一源端视频重定向器。进而源端设备通过第一源端视频重定向器与第一目的端视频重定向器之间的链路,向第一目的端视频重定向器传输视频数据流。
195.源端设备通过复用重定向上下文维护每一路投屏的关键数据以及状态。其中,关键数据可以包括各种视频帧、源端设备投屏参数、目的端设备投屏参数等,本技术实施例对此不作限定。状态用于表明目的端设备与源端设备的连接状态,如接入状态、投屏状态、退出状态等,本技术实施例对此不作限定。
196.当第二目的端设备向源端设备发送投屏请求时,源端设备接收到第二目的端设备发送的投屏请求后,第二源端视频重定向器判断出其不是第一路投屏,因此源端设备通过第二源端视频重定向器从重定向上下文中获取配置帧,该配置帧由第一路投屏时视频编码器产生。
197.步骤1003,源端设备通过第二源端视频重定向器与第二目的端视频重定向器之间的链路,向第二目的端设备传输配置帧。
198.进一步,源端设备获取配置帧后,单独通过第二源端视频重定向器与第二目的端视频重定向器之间的链路,向第二目的端设备的第二目的端视频重定向器传输配置帧。
199.步骤1004,第二目的端设备接收源端设备传输的配置帧。
200.进一步,第二目的端设备通过第二目的端视频重定向器接收该配置帧。
201.步骤1005,第二目的端设备基于配置帧进行视频解码配置。
202.进一步,第二目的端设备的视频解码器通过配置帧配置视频解码器的解码参数。其中,解码参数可以是图像的宽高等。
203.步骤1006,响应于第二目的端设备的投屏请求,源端设备通过第二源端视频重定向器从重定向上下文中获取旋转帧。
204.在一种可能的实施方式中,由于视频画面投屏的过程中可能会出现横竖屏旋转,因此在视频编码器在对视频画面进行编码过程中还会生成旋转(rotate)帧。由于第二目的端设备在第一目的端设备之后接入,因此第二路投屏接入时,通常在某个p帧,此时第二源端视频重定向器按照该视频帧接收的话,将缺失旋转帧,则会导致目的端设备画面显示方向以及源端设备画面显示方向不一致,可能相差90
°
、180
°
或者270
°

205.在本技术实施例中,第一目的端设备先向源端设备发送投屏请求,源端设备接收到第一目的端设备发送的投屏请求,启动视频编码器,并将视频编码器生成的旋转帧同步上报给重定向上下文,并将所有帧即配置帧、i帧、p帧以及旋转帧发送至第一源端视频重定向器。
206.当第二目的端设备向源端设备发送投屏请求时,源端设备接收到第二目的端设备发送的投屏请求后,第二源端视频重定向器判断出其不是第一路投屏,因此源端设备通过第二源端视频重定向器从重定向上下文中获取旋转帧,该旋转帧由第一路投屏时视频编码器产生。
207.步骤1007,源端设备通过第二源端视频重定向器与第二目的端视频重定向器之间的链路,向第二目的端设备传输旋转帧。
208.进一步,源端设备获取旋转帧后,单独通过第二源端视频重定向器与第二目的端视频重定向器之间的链路,向第二目的端设备传输旋转帧。
209.步骤1008,第二目的端设备接收源端设备传输的旋转帧。
210.进一步,第二目的端设备通过第二目的端视频重定向器接收该旋转帧。
211.步骤1009,第二目的端设备基于旋转帧配置画面显示方向。
212.第二目的端设备的视频解码器通过旋转帧配置目的端设备画面的显示方向,其与源端设备画面的显示方向一致。
213.步骤1010,以异步接入请求后的第一个关键帧为起点,源端设备通过第二源端视频重定向器与第二目的端视频重定向器之间的链路,向第二目的端设备传输视频数据流。
214.在一种可能的实施方式中,源端设备向视频编码器发送requeskeyframe请求,请求第二目的端设备异步接入请求后的第一i帧到来,当该i帧到来之前,p帧都会被跳过,直到i帧到来,源端设备通过第二源端视频重定向器与第二目的端视频重定向器之间的链路,向第二目的端设备传输视频数据流。
215.在另一种可能的实施方式中,源端设备无需向视频编码器发送请求,第二目的端设备异步接入请求后的第一i帧未到来,则等待i帧到来,该i帧到来之前,p帧都会被跳过,直到i帧到来,源端设备通过第二源端视频重定向器与第二目的端重定向器之间的链路,向第二目的端设备传输视频数据流。
216.步骤1011,第二目的端设备接收源端设备传输的视频数据流。
217.进一步,第二目的端设备通过第二目的端视频重定向器接收源端设备传输的视频数据流。
218.示例性的,结合图10,对上述分流补帧的方法进行示意性说明。第一目的端设备的第一路投屏先接入,源端设备触发视频编码器产生配置帧、i帧、p帧以及旋转帧,同时将配置帧以及旋转帧同步上报给重定向上下文。进一步,将所有帧发送至第一源端视频重定向器,进而源端设备通过第一源视频端重定向器与第一目的端视频重定向器之间的链路,传输视频数据流。
219.第二目的端设备的第二路投屏在某个p帧接入,此时源端设备的第二源端视频重定向器直接从重定向上下文中获取配置帧以及旋转帧,并单独通过第二源端视频重定向器与第二目的端视频重定向器之间的链路,向第二目的端传输配置帧以及旋转帧。进一步,源端设备向视频编码器发送requestkeyframe请求,请求下一个i帧尽快到来,当i帧到来之
前,p帧都会被跳过,直到i帧到来,进而源端设备通过第二源端视频重定向器与第二目的端视频重定向器之间的链路,向第二目的端设备发送视频数据流。
220.本技术实施例中,第一目的端设备与第二目的端设备异步接入时,通过对第二目的端设备的第二路投屏采用分流补帧的方法,即通过第二源端视频重定向器从重定向上下文中获取配置帧以及旋转帧,将其传输至第二目的端视频重定向器,源端设备等到第二目的端设备异步接入请求后的第一个关键帧为起点,向第二目的端设备发送视频数据流,避免目的端设备显示画面出现花屏等异常情况。
221.在另一种可能的实施方式中,第一目的端设备与第二目的端设备同步向源端设备发送投屏请求,此时第一目的端设备与第二目的端设备并发接入,因此二者共享的数据以及状态会出现竞争同时修改的情况,进而影响投屏质量。在本技术实施例中,通过以第一路投屏作为主要协商对象进行投屏参数的协商以解决上述问题。请参考图11,以第一目的端设备和第二目的端设备为例对并发接入时重定向方法进行介绍,需要说明的是,在本技术实施例中至少存在两个目的端设备,本技术实施例仅以第一目的端设备和第二目的端设备为例进行说明。其中第一目的端设备为第一路接入,第二目的端设备为第二路接入。
222.步骤1101,第二目的端设备通过第二目的端视频重定向器与第二源端视频重定向器之间的链路,向源端设备发送接入请求。
223.其中,接入请求用于第二目的端视频重定向器与第二源端视频重定向器之间建立连接,创建数据流通道。
224.步骤1102,响应于第二目的端设备的接入请求,源端设备通过第二源端视频重定向器从源端重定向实例的重定向上下文中获取实例标识。
225.在本技术实施例中,作为第一路接入的目的端设备通过第一目的端视频重定向器与第一源端视频重定向器的链路,向源端设备发送接入请求,进一步源端设备接收到第一路接入请求,第一源端视频重定向器创建实例标识,并将该实例标识同步上报至重定向上下文。同时源端设备通过第一源端视频重定向器与第一目的端视频重定向器之间的链路,将实例标识发送给第一目的端设备。源端设备通过复用重定向上下文管理每一路视频流的关键数据以及状态。
226.因此当源端设备接收到作为第二路的第二目的端设备发送的接入请求后,源端设备通过第二源端视频重定向器直接从重定向上下文中获取实例标识。
227.其中,实例标识基于源端设备标识以及待重定向的目标重定向对象的目标重定向对象标识确定。
228.步骤1103,源端设备通过第二源端视频重定向器与第二目的端视频重定向器之间的链路,向第二目的端设备发送实例标识。
229.进一步,源端设备获取实例标识后,通过第二源端视频重定向器与第二目的端视频重定向器之间的链路,第二源端视频重定向器向第二目的端视频重定向器发送实例标识。
230.步骤1104,第二目的端设备接收源端设备发送的源端重定向实例的实例标识。
231.进一步,第二目的端视频重定向器接收到该实例标识,基于设备标识确定源端设备,基于目标重定向对象标识确认目的端设备显示的内容,进一步的初始化目的窗体应用。
232.在一种可能的实施方式中,若第一路接入的第一目的端设备已经初始化目的窗体
应用,则第二目的端设备直接复用该目的端窗体应用,无需通过第二目的端视频重定向器再次初始化目的端窗体应用。
233.在另一种可能的实施方式中,如第一路接入的第一目的端设备未初始化目的端窗体应用或目的端窗体应用已销毁,则第二目的端设备需通过第二目的端视频重定向器初始化目的端窗体应用,其后接入的其他目的端设备可直接复用该目的端窗体应用。
234.步骤1105,第二目的端设备通过第二目的端视频重定向器与第二源端视频重定向器之间的链路,向源端设备发送参数获取请求。
235.进一步地,第二目的端设备向源端设备发送参数获取请求,用于能力协商。
236.步骤1106,响应于第二目的端设备的参数获取请求,源端设备通过第二源端视频重定向器从源端重定向实例的重定向上下文中获取目标投屏参数。
237.在本技术实施例中,源端设备的源端视频重定向器(包括第一源端视频重定向器以及第二源端视频重定向器)接收到目的端设备的参数获取请求,判定是第一路接入的第一目的端设备还是第二路接入的第二目的端设备。在一种可能的实施方式中,若为第一路接入的第一目的端设备,第一源端视频重定向器基于源端投屏参数和第一目的端投屏参数确定目标投屏参数,并同步上报至重定向上下文。
238.在另一种可能的实施方式中,若为第二路接入的第二目的端设备,第二源端视频重定向器直接从重投屏上下文中获取目标投屏参数。
239.另外,需要说明的是,在另一种可能的实施方式中,目标投屏参数也可以是根据源端投屏参数和当前的目的端投屏参数实时确定。例如,若为第一路接入的第一目的端设备,第一源端视频重定向器基于源端投屏参数和第一目的端投屏参数确定目标投屏参数,若为第二路接入的第二目的端设备,第二源端视频重定向器基于源端投屏参数和第二目的端投屏参数确定目标投屏参数。
240.其中,投屏参数可以是屏幕分辨率、刷新率、延时等,本技术实施例对此不作限定。
241.步骤1107,源端设备通过第二源端视频重定向器与第二目的端视频重定向器之间的链路,源端设备向第二目的端设备发送目标投屏参数。
242.进一步,源端设备将最终确定的目标投屏参数通过第二源端视频重定向器与第二目标端视频重定向器之间的链路发送至第二目的端设备。
243.步骤1108,第二目的端设备接收源端设备发送的目标投屏参数。
244.进一步,第二目的端设备的第二目的端视频重定向器接收目标投屏参数。
245.步骤1109,第二目的端设备基于目标投屏参数初始化视频解码器。
246.进一步,第二目的端视频重定向器收到该目标投屏参数后,按照目标投屏参数初始化视频解码器,向源端设备发送投屏请求。
247.示例性的,结合图12,对上述过程进行说明。
248.第二目的端设备向源端设备发送接入请求,第二目的端视频重定向器向第二源端视频重定向器建立连接,创建视频数据流通道。进一步,第二源端视频重定向器通过复用重定向上下文获取实例标识,并通知第二目的端视频重定向器用于绑定实例标识。第二目的端视频重定向器获取到该实例标识并请求初始化目的端窗体应用,若该目的端窗体应用已存在,则直接复用。进一步,第二目的端视频重定向器向第二源端视频重定向器发送获取参数请求,第二源端视频重定向器接收到该参数请求后,判断是作为第一路接入的第一目的
端设备,还是作为第二路接入的第二目的端设备,若为第一路接入的目的端设备,则结合源端投屏参数以及第一目的端投屏参数确定目标投屏参数,并同步上报至重定向上下文。若为第二路接入的第二目的端设备,第二源端视频重定向器直接从重定向上下文中获取该目标投屏参数,并将该目标投屏参数发送至第二目的端视频重定向器。进一步,第二目的端视频重定向器接收到目标投屏参数,按照参数初始化视频解码器,视频解码器初始化完成之后,向第二源端视频重定向器发送投屏请求。若为第一路接入的第一目的端设备发送投屏请求,则源端设备创建视频编码器,将视频编码器生成的配置帧、i帧、p帧以及旋转帧发送至第一源端视频重定向器,并将配置帧以及旋转帧同步上报至重定向上下文。进一步,源端设备通过第一源端视频重定向器向第一目的端视频重定向器发送视频数据流。若为第二路接入的第二目的端设备发送投屏请求,则第二源端视频重定向器直接从重定向上下文中获取配置帧以及旋转帧,进一步,源端设备通过第二源端视频重定向器向第二目的端视频重定向器发送视频数据流,第二目的端视频重定向器接收到该视频数据流后,通过视频解码器解析该视频数据流并送去渲染。
249.在本技术实施例中,第一目的端设备与第二目标端设备并发接入时,第二目的端设备通过从重定向上下文中获取已经基于源端投屏参数与第一目的端投屏参数确定的目标投屏参数,进而初始化视频解码器,避免第一目的端设备与第二目的端设备并发接入时对共享数据的修改,提高显示画面的质量。
250.需要说明的是,上述实施例中以源端设备与目的端设备在重定向过程中的交互流程为例进行说明,其中,以源端设备为执行主体的步骤可以单独实现成为源端设备侧的重定向方法,以目的端设备为执行主体的步骤可以单独实现成为目的端设备侧的重定向方法,本技术实施例在此不作赘述。
251.下述为本技术装置实施例,可以用于执行本技术方法实施例。对于本技术装置实施例中未披露的细节,请参照本技术方法实施例。
252.请参考图13,其示出了本技术一个实施例提供的重定向装置的结构框图。该装置可以包括:
253.创建模块1301,用于基于源端设备标识以及目标重定向对象标识创建源端重定向实例,所述目标重定向对象标识用于表征目标重定向对象;
254.复用模块1302,用于在同一所述源端重定向实例对应至少两个目的端重定向实例的情况下,通过复用重定向数据生成器生成所述源端重定向实例对应的重定向数据,所述目的端重定向实例基于目的端设备标识以及目标屏幕标识创建得到,所述目的端设备标识用于表征目的端设备,所述目标屏幕标识用于表征所述目的端设备的目标屏幕;
255.第一传输模块1303,用于向所述目的端设备传输所述重定向数据,以便所述目的端设备基于所述重定向数据,通过所述目标屏幕对所述目标重定向对象进行展示。
256.可选地,所述第一传输模块1303,包括:
257.创建单元,用于在至少两个所述目的端重定向实例对应同一目的端设备的情况下,创建一个源端重定向器,或,在至少两个所述目的端重定向实例对应至少两个目的端设备的情况下,创建至少两个所述源端重定向器;
258.传输单元,用于通过所述源端重定向器与目的端重定向器之间的链路,向所述目的端设备传输所述重定向数据,所述目的端重定向器由所述目的端设备创建得到。
259.可选地,所述目的端设备为至少两个;
260.所述传输单元,还用于:
261.通过至少两个所述源端重定向器与至少两个所述目的端重定向器之间的至少两条链路,向至少两个所述目的端设备分流传输所述重定向数据。
262.可选地,所述目标重定向对象对应的媒体类型为视频;
263.所述复用模块1302,还用于:
264.通过复用视频编码器对同一所述源端重定向实例对应的画面进行视频编码,生成视频数据流;
265.所述传输单元,还用于:
266.通过所述源端视频重定向器与目的端视频重定向器之间的链路,向所述目的端设备传输所述视频数据流。
267.可选地,至少两个所述目的端设备包括第一目的端设备和第二目的端设备;
268.所述传输单元,还用于:
269.通过第一源端视频重定向器与第一目的端视频重定向器之间的链路,向所述第一目的端设备传输所述视频数据流;
270.通过第二源端视频重定向器与第二目的端视频重定向器之间的链路,向所述第二目的端设备传输所述视频数据流。
271.可选地,所述第一目的端设备和所述第二目的端设备异步接入,且所述第一目的端设备在所述第二目的端设备之前接入;
272.所述装置还包括:
273.第一获取模块,用于响应于所述第二目的端设备的投屏请求,通过所述第二源端视频重定向器从所述源端重定向实例的重定向上下文中获取配置帧,所述配置帧由所述视频编码器上报至所述重定向上下文;
274.第二传输模块,用于通过所述第二源端视频重定向器与所述第二目的端视频重定向器之间的链路,向所述第二目的端设备传输所述配置帧,以便所述第二目的端设备基于所述配置帧进行视频解码配置。
275.可选地,所述传输单元,还用于:
276.以所述异步接入请求后的第一个关键帧为起点,通过所述第二源端视频重定向器与所述第二目的端视频重定向器之间的链路,向所述第二目的端设备传输所述视频数据流。
277.可选地,所述装置还包括:
278.第二获取模块,用于响应于所述投屏请求,通过所述第二源端视频重定向器从所述重定向上下文中获取旋转帧,所述旋转帧由所述视频编码器在所述源端设备旋转时上报至所述重定向上下文;
279.第三传输模块,用于通过所述第二源端视频重定向器与所述第二目的端视频重定向器之间的链路,向所述第二目的端设备传输所述旋转帧,以便所述第二目的端设备基于所述旋转帧配置画面显示方向。
280.可选地,所述第一目的端设备和所述第二目的端设备并发接入,且所述第一目的端设备为第一路接入,所述第二目的端设备为第二路接入;
281.所述装置还包括:
282.第三获取模块,用于响应于所述第二目的端设备的接入请求,通过所述第二源端视频重定向器从所述源端重定向实例的重定向上下文中获取实例标识;
283.第一发送模块,用于通过所述第二源端视频重定向器与所述第二目的端视频重定向器之间的链路,向所述第二目的端设备发送所述实例标识;
284.第四获取模块,用于响应于所述第二目的端设备的参数获取请求,通过所述第二源端视频重定向器从所述源端重定向实例的重定向上下文中获取目标投屏参数,所述目标投屏参数由所述第一源端视频重定向器基于源端投屏参数和所述第一目的端设备的目的端投屏参数确定,并上报至所述重定向上下文;
285.第二发送模块,用于通过所述第二源端视频重定向器与所述第二目的端视频重定向器之间的链路,向所述第二目的端设备发送所述目标投屏参数。
286.可选地,所述目标重定向对象对应的媒体类型为音频;
287.复用模块1302,还用于:
288.在所述目标重定向对象的类型为屏幕镜像的情况下,通过复用设备级音频采集编码器进行音频采集及编码,得到音频数据流;
289.在所述目标重定向对象的类型为应用的情况下,通过复用应用级音频采集编码器进行音频采集及编码,得到音频数据流;
290.所述传输单元,还用于:
291.通过所述源端音频重定向器与目的端音频重定向器之间的链路,向所述目的端设备传输所述音频数据流。
292.综上所述,在本技术实施例中,重定向过程中,源端设备基于源端设备标识以及目标重定向对象标识创建源端重定向实例,目的端设备基于目的端设备标识以及目标屏幕标识,创建与源端重定向实例对应的目的端重定向实例,在同一源端重定向实例对应至少两个目的端重实例的情况下,源端设备通过复用重定向数据生成器生成重定向数据并向目的端设备传输,目的端设备接收到该重定向器数据,通过复用重定向数据解析器解析重定向数据,并通过目的端重定向实例所指示的目标屏幕对目标重定向对象进行展示;采用本技术实施例提供的方案,通过复用重定向数据生成器以及重定向数据解析器,减少了源端设备与目的端设备间数据流传输过程中源端设备的编码开销以及目的端设备的解码开销,提高复杂重定向场景的数据传输性能。
293.请参考图14,其示出了本技术另一个实施例提供的重定向装置的结构框图。该装置可以包括:
294.创建模块1401,用于基于目的端设备标识以及目标屏幕标识创建目的端重定向实例,所述目标屏幕标识用于表征所述目的端设备的目标屏幕;
295.第一接收模块1402,用于接收源端设备传输的源端重定向实例对应的重定向数据,所述源端重定向实例基于源端设备标识以及目标重定向对象标识创建得到,所述目标重定向对象标识用于表征目标重定向对象;
296.复用模块1403,用于在存在至少两个所述目的端重定向实例对应同一所述源端重定向实例的情况下,通过复用重定向数据解析器解析所述重定向数据;
297.展示模块1404,用于基于所述重定向数据的解析结果,通过所述目标屏幕对所述
目标重定向对象进行展示。
298.可选地,所述第一接收模块1402,包括:
299.创建单元,用于创建目的端重定向器,所述目的端重定向器被至少两个所述目的端重定向实例复用;
300.接收单元,用于通过所述目的端重定向器与源端重定向器之间的链路,接收所述源端设备传输的所述重定向数据,所述源端重定向器由所述源端设备创建得到。
301.可选地,所述目标重定向对象对应的媒体类型为视频;
302.所述创建单元,还用于:
303.创建目的端视频重定向器;
304.所述接收单元,还用于:
305.通过所述目的端视频重定向器与源端视频重定向器之间的链路,接收所述源端设备传输的视频数据流;
306.所述复用模块1403,还用于:
307.通过复用视频解码器对所述视频数据流进行视频解码,得到所述源端重定向实例对应的画面。
308.可选地,所述装置还包括:
309.第一发送模块,用于通过所述目的端视频重定向器与源端视频重定向器之间的链路,向所述源端设备发送投屏请求;
310.第二接收模块,用于接收所述源端设备传输的配置帧,其中,在所述目的端设备之前存在其他目的端设备接入的情况下,所述配置帧由所述源端视频重定向器从所述源端重定向实例的重定向上下文中获取得到;
311.第一配置模块,用于基于所述配置帧进行视频解码配置。
312.可选地,所述装置还包括:
313.第三接收模块,用于接收所述源端设备传输的旋转帧,其中,在所述目的端设备之前存在其他目的端设备接入的情况下,所述旋转帧由所述源端视频重定向器从所述重定向上下文中获取得到,且所述旋转帧由所述视频编码器在所述源端设备旋转时上报至所述重定向上下文;
314.第二配置模块,用于基于所述旋转帧配置画面显示方向。
315.可选地,所述装置还包括:
316.第二发送模块,用于通过所述目的端视频重定向器与源端视频重定向器之间的链路,向所述源端设备发送接入请求;
317.第四接收模块,用于接收所述源端设备发送的所述源端重定向实例的实例标识,其中,在所述目的端设备之前存在其他目的端设备接入的情况下,所述实例标识由所述源端视频重定向器从所述源端重定向实例的重定向上下文中获取得到;
318.第三发送模块,用于通过所述目的端视频重定向器与源端视频重定向器之间的链路,向所述源端设备发送参数获取请求;
319.第五接收模块,用于接收所述源端设备发送的目标投屏参数,其中,在所述目的端设备之前存在其他目的端设备接入的情况下,所述目标投屏参数由所述源端视频重定向器从所述源端重定向实例的重定向上下文中获取得到;
320.初始化模块,用于基于所述目标投屏参数初始化所述视频解码器。
321.可选地,所述目标重定向对象对应的媒体类型为音频;
322.所述创建单元,还用于:
323.创建目的端音频重定向器;
324.所述接收单元,还用于:
325.通过所述目的端视频重定向器与源端视频重定向器之间的链路,接收所述源端设备传输的音频数据流;
326.所述复用模块1403,用于:
327.通过复用音频解码器对所述音频数据流进行音频解码,得到所述源端重定向实例对应的音频。
328.综上所述,在本技术实施例中,重定向过程中,源端设备基于源端设备标识以及目标重定向对象标识创建源端重定向实例,目的端设备基于目的端设备标识以及目标屏幕标识,创建与源端重定向实例对应的目的端重定向实例,在同一源端重定向实例对应至少两个目的端重实例的情况下,源端设备通过复用重定向数据生成器生成重定向数据并向目的端设备传输,目的端设备接收到该重定向器数据,通过复用重定向数据解析器解析重定向数据,并通过目的端重定向实例所指示的目标屏幕对目标重定向对象进行展示;采用本技术实施例提供的方案,通过复用重定向数据生成器以及重定向数据解析器,减少了源端设备与目的端设备间数据流传输过程中源端设备的编码开销以及目的端设备的解码开销,提高复杂重定向场景的数据传输性能。
329.请参考图15,其示出了本技术一个实施例提供的重定向系统的系统架构框图。该系统中包括:至少一个源端设备1510和至少一个目的端设备1520。
330.源端设备1510,用于基于源端设备标识以及目标重定向对象标识创建源端重定向实例,目标重定向对象标识用于表征目标重定向对象;在同一源端重定向实例对应至少两个目的端重定向实例的情况下,通过复用重定向数据生成器生成源端重定向实例对应的重定向数据;向目的端设备传输重定向数据,以便目的端设备基于重定向数据,通过目标屏幕对目标重定向对象进行展示;
331.目的端设备1520,用于基于目的端设备标识以及目标屏幕标识创建目的端重定向实例,目标屏幕标识用于表征目的端设备的目标屏幕;接收源端设备传输的源端重定向实例对应的重定向数据;在存在至少两个目的端重定向实例对应同一源端重定向实例的情况下,通过复用重定向数据解析器解析重定向数据;基于重定向数据的解析结果,通过目标屏幕对目标重定向对象进行展示。
332.需要说明的是,源端设备1510与目的端设备1520进行重定向的具体过程可以参见上述方法实施例,本技术实施例在此不作赘述。
333.请参考图16,其示出了本技术一个示例性实施例提供的计算机设备的结构方框图。该计算机设备1600可以实现成为上述各个实施例中的源端设备或目的端设备。计算机设备1600可以包括一个或多个如下部件:处理器1610和存储器1620。
334.处理器1610可以包括一个或者多个处理核心。处理器1610利用各种接口和线路连接整个计算机设备1600内的各个部分,通过运行或执行存储在存储器1620内的指令、程序、代码集或指令集,以及调用存储在存储器1620内的数据,执行计算机设备1600的各种功能
和处理数据。可选地,处理器1610可以采用数字信号处理(digital signal processing,dsp)、现场可编程门阵列(field-programmable gate array,fpga)、可编程逻辑阵列(programmable logic array,pla)中的至少一种硬件形式来实现。处理器1610可集成中央处理器(central processing unit,cpu)、图像处理器(graphics processing unit,gpu)、神经网络处理器(neural-network processing unit,npu)和调制解调器等中的一种或几种的组合。其中,cpu主要处理操作系统、用户界面和应用程序等;gpu用于负责触摸显示屏所需要显示的内容的渲染和绘制;npu用于实现人工智能(artificial intelligence,ai)功能;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器1610中,单独通过一块芯片进行实现。
335.存储器1620可以包括随机存储器(random access memory,ram),也可以包括只读存储器(read-only memory,rom)。可选地,该存储器1620包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器1620可用于存储指令、程序、代码、代码集或指令集。存储器1620可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等;存储数据区可存储根据计算机设备1600的使用所创建的数据(比如音频数据、电话本)等。
336.除此之外,本领域技术人员可以理解,上述附图所示出的计算机设备1600的结构并不构成对计算机设备的限定,计算机设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。比如,计算机设备1600中还包括显示屏、摄像组件、麦克风、扬声器、射频电路、输入单元、传感器(比如加速度传感器、角速度传感器、光线传感器等等)、音频电路、wifi模块、电源、蓝牙模块等部件,在此不再赘述。
337.本技术实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有至少一条程序代码,所述程序代码由处理器加载并执行以实现如上各个实施例所述的重定向方法。
338.本技术实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述方面的各种可选实现方式中提供的重定向方法。
339.应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。另外,本文中描述的步骤编号,仅示例性示出了步骤间的一种可能的执行先后顺序,在一些其它实施例中,上述步骤也可以不按照编号顺序来执行,如两个不同编号的步骤同时执行,或者两个不同编号的步骤按照与图示相反的顺序执行,本技术实施例对此不作限定。
340.以上所述仅为本技术的可选实施例,并不用以限制本技术,凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。

技术特征:
1.一种重定向方法,其特征在于,所述方法用于源端设备,所述方法包括:基于源端设备标识以及目标重定向对象标识创建源端重定向实例,所述目标重定向对象标识用于表征目标重定向对象;在同一所述源端重定向实例对应至少两个目的端重定向实例的情况下,通过复用重定向数据生成器生成所述源端重定向实例对应的重定向数据,所述目的端重定向实例基于目的端设备标识以及目标屏幕标识创建得到,所述目的端设备标识用于表征目的端设备,所述目标屏幕标识用于表征所述目的端设备的目标屏幕;向所述目的端设备传输所述重定向数据,以便所述目的端设备基于所述重定向数据,通过所述目标屏幕对所述目标重定向对象进行展示。2.根据权利要求1所述的方法,其特征在于,所述向所述目的端设备传输所述重定向数据,包括:在至少两个所述目的端重定向实例对应同一目的端设备的情况下,创建一个源端重定向器,或,在至少两个所述目的端重定向实例对应至少两个目的端设备的情况下,创建至少两个所述源端重定向器;通过所述源端重定向器与目的端重定向器之间的链路,向所述目的端设备传输所述重定向数据,所述目的端重定向器由所述目的端设备创建得到。3.根据权利要求2所述的方法,其特征在于,所述目的端设备为至少两个;所述通过所述源端重定向器与目的端重定向器之间的链路,向所述目的端设备传输所述重定向数据,包括:通过至少两个所述源端重定向器与至少两个所述目的端重定向器之间的至少两条链路,向至少两个所述目的端设备分流传输所述重定向数据。4.根据权利要求2所述的方法,其特征在于,所述目标重定向对象对应的媒体类型为视频;所述通过复用重定向数据生成器生成所述源端重定向实例对应的重定向数据,包括:通过复用视频编码器对同一所述源端重定向实例对应的画面进行视频编码,生成视频数据流;所述通过所述源端重定向器与目的端重定向器之间的链路,向所述目的端设备传输所述重定向数据,包括:通过所述源端视频重定向器与目的端视频重定向器之间的链路,向所述目的端设备传输所述视频数据流。5.根据权利要求4所述的方法,其特征在于,至少两个所述目的端设备包括第一目的端设备和第二目的端设备;所述通过所述源端视频重定向器与目的端视频重定向器之间的链路,向所述目的端设备传输所述视频数据流,包括:通过第一源端视频重定向器与第一目的端视频重定向器之间的链路,向所述第一目的端设备传输所述视频数据流;通过第二源端视频重定向器与第二目的端视频重定向器之间的链路,向所述第二目的端设备传输所述视频数据流。6.根据权利要求5所述的方法,其特征在于,所述第一目的端设备和所述第二目的端设
备异步接入,且所述第一目的端设备在所述第二目的端设备之前接入;所述方法还包括:响应于所述第二目的端设备的投屏请求,通过所述第二源端视频重定向器从所述源端重定向实例的重定向上下文中获取配置帧,所述配置帧由所述视频编码器上报至所述重定向上下文;通过所述第二源端视频重定向器与所述第二目的端视频重定向器之间的链路,向所述第二目的端设备传输所述配置帧,以便所述第二目的端设备基于所述配置帧进行视频解码配置。7.根据权利要求6所述的方法,其特征在于,所述通过第二源端视频重定向器与第二目的端视频重定向器之间的链路,向所述第二目的端设备传输所述视频数据流,包括:以所述异步接入请求后的第一个关键帧为起点,通过所述第二源端视频重定向器与所述第二目的端视频重定向器之间的链路,向所述第二目的端设备传输所述视频数据流。8.根据权利要求6所述的方法,其特征在于,所述方法还包括:响应于所述投屏请求,通过所述第二源端视频重定向器从所述重定向上下文中获取旋转帧,所述旋转帧由所述视频编码器在所述源端设备旋转时上报至所述重定向上下文;通过所述第二源端视频重定向器与所述第二目的端视频重定向器之间的链路,向所述第二目的端设备传输所述旋转帧,以便所述第二目的端设备基于所述旋转帧配置画面显示方向。9.根据权利要求5所述的方法,其特征在于,所述第一目的端设备和所述第二目的端设备并发接入,且所述第一目的端设备为第一路接入,所述第二目的端设备为第二路接入;所述方法还包括:响应于所述第二目的端设备的接入请求,通过所述第二源端视频重定向器从所述源端重定向实例的重定向上下文中获取实例标识;通过所述第二源端视频重定向器与所述第二目的端视频重定向器之间的链路,向所述第二目的端设备发送所述实例标识;响应于所述第二目的端设备的参数获取请求,通过所述第二源端视频重定向器从所述源端重定向实例的重定向上下文中获取目标投屏参数,所述目标投屏参数由所述第一源端视频重定向器基于源端投屏参数和所述第一目的端设备的目的端投屏参数确定,并上报至所述重定向上下文;通过所述第二源端视频重定向器与所述第二目的端视频重定向器之间的链路,向所述第二目的端设备发送所述目标投屏参数。10.根据权利要求2所述的方法,其特征在于,所述目标重定向对象对应的媒体类型为音频;所述通过复用重定向数据生成器生成所述源端重定向实例对应的重定向数据,包括:在所述目标重定向对象的类型为屏幕镜像的情况下,通过复用设备级音频采集编码器进行音频采集及编码,得到音频数据流;在所述目标重定向对象的类型为应用的情况下,通过复用应用级音频采集编码器进行音频采集及编码,得到音频数据流;所述通过所述源端重定向器与目的端重定向器之间的链路,向所述目的端设备传输所
述重定向数据,包括:通过所述源端音频重定向器与目的端音频重定向器之间的链路,向所述目的端设备传输所述音频数据流。11.一种重定向方法,其特征在于,所述方法用于目的端设备,所述方法包括:基于目的端设备标识以及目标屏幕标识创建目的端重定向实例,所述目标屏幕标识用于表征所述目的端设备的目标屏幕;接收源端设备传输的源端重定向实例对应的重定向数据,所述源端重定向实例基于源端设备标识以及目标重定向对象标识创建得到,所述目标重定向对象标识用于表征目标重定向对象;在存在至少两个所述目的端重定向实例对应同一所述源端重定向实例的情况下,通过复用重定向数据解析器解析所述重定向数据;基于所述重定向数据的解析结果,通过所述目标屏幕对所述目标重定向对象进行展示。12.根据权利要求11所述的方法,其特征在于,所述接收源端设备传输的源端重定向实例对应的重定向数据,包括:创建目的端重定向器,所述目的端重定向器被至少两个所述目的端重定向实例复用;通过所述目的端重定向器与源端重定向器之间的链路,接收所述源端设备传输的所述重定向数据,所述源端重定向器由所述源端设备创建得到。13.根据权利要求12所述的方法,其特征在于,所述目标重定向对象对应的媒体类型为视频;所述创建目的端重定向器,包括:创建目的端视频重定向器;所述通过所述目的端重定向器与源端重定向器之间的链路,接收所述源端设备传输的所述重定向数据,包括:通过所述目的端视频重定向器与源端视频重定向器之间的链路,接收所述源端设备传输的视频数据流;所述通过复用重定向数据解析器解析所述重定向数据,包括:通过复用视频解码器对所述视频数据流进行视频解码,得到所述源端重定向实例对应的画面。14.根据权利要求13所述的方法,其特征在于,所述接收所述源端设备传输的视频数据流之前,所述方法还包括:通过所述目的端视频重定向器与源端视频重定向器之间的链路,向所述源端设备发送投屏请求;接收所述源端设备传输的配置帧,其中,在所述目的端设备之前存在其他目的端设备接入的情况下,所述配置帧由所述源端视频重定向器从所述源端重定向实例的重定向上下文中获取得到;基于所述配置帧进行视频解码配置。15.根据权利要求14所述的方法,其特征在于,所述方法还包括:接收所述源端设备传输的旋转帧,其中,在所述目的端设备之前存在其他目的端设备
接入的情况下,所述旋转帧由所述源端视频重定向器从所述重定向上下文中获取得到,且所述旋转帧由所述视频编码器在所述源端设备旋转时上报至所述重定向上下文;基于所述旋转帧配置画面显示方向。16.根据权利要求13所述的方法,其特征在于,所述方法还包括:通过所述目的端视频重定向器与源端视频重定向器之间的链路,向所述源端设备发送接入请求;接收所述源端设备发送的所述源端重定向实例的实例标识,其中,在所述目的端设备之前存在其他目的端设备接入的情况下,所述实例标识由所述源端视频重定向器从所述源端重定向实例的重定向上下文中获取得到;通过所述目的端视频重定向器与源端视频重定向器之间的链路,向所述源端设备发送参数获取请求;接收所述源端设备发送的目标投屏参数,其中,在所述目的端设备之前存在其他目的端设备接入的情况下,所述目标投屏参数由所述源端视频重定向器从所述源端重定向实例的重定向上下文中获取得到;基于所述目标投屏参数初始化所述视频解码器。17.根据权利要求12所述的方法,其特征在于,所述目标重定向对象对应的媒体类型为音频;所述创建目的端重定向器,包括:创建目的端音频重定向器;所述通过所述目的端重定向器与源端重定向器之间的链路,接收所述源端设备传输的所述重定向数据,包括:通过所述目的端视频重定向器与源端视频重定向器之间的链路,接收所述源端设备传输的音频数据流;所述通过复用重定向数据解析器解析所述重定向数据,包括:通过复用音频解码器对所述音频数据流进行音频解码,得到所述源端重定向实例对应的音频。18.一种重定向装置,其特征在于,所述装置用于源端设备,所述装置包括:创建模块,用于基于源端设备标识以及目标重定向对象标识创建源端重定向实例,所述目标重定向对象标识用于表征目标重定向对象;复用模块,用于在同一所述源端重定向实例对应至少两个目的端重定向实例的情况下,通过复用重定向数据生成器生成所述源端重定向实例对应的重定向数据,所述目的端重定向实例基于目的端设备标识以及目标屏幕标识创建得到,所述目的端设备标识用于表征目的端设备,所述目标屏幕标识用于表征所述目的端设备的目标屏幕;第一传输模块,用于向所述目的端设备传输所述重定向数据,以便所述目的端设备基于所述重定向数据,通过所述目标屏幕对所述目标重定向对象进行展示。19.一种重定向装置,其特征在于,所述装置用于目的端设备,所述装置包括:创建模块,用于基于目的端设备标识以及目标屏幕标识创建目的端重定向实例,所述目标屏幕标识用于表征所述目的端设备的目标屏幕;第一接收模块,用于接收源端设备传输的源端重定向实例对应的重定向数据,所述源
端重定向实例基于源端设备标识以及目标重定向对象标识创建得到,所述目标重定向对象标识用于表征目标重定向对象;复用模块,用于在存在至少两个所述目的端重定向实例对应同一所述源端重定向实例的情况下,通过复用重定向数据解析器解析所述重定向数据;展示模块,用于基于所述重定向数据的解析结果,通过所述目标屏幕对所述目标重定向对象进行展示。20.一种重定向系统,其特征在于,所述重定向系统包括:至少一个源端设备和至少一个目的端设备;所述源端设备,用于基于源端设备标识以及目标重定向对象标识创建源端重定向实例,所述目标重定向对象标识用于表征目标重定向对象;在同一所述源端重定向实例对应至少两个目的端重定向实例的情况下,通过复用重定向数据生成器生成所述源端重定向实例对应的重定向数据;向目的端设备传输所述重定向数据,以便所述目的端设备基于所述重定向数据,通过所述目标屏幕对所述目标重定向对象进行展示;所述目的端设备,用于基于目的端设备标识以及目标屏幕标识创建目的端重定向实例,所述目标屏幕标识用于表征所述目的端设备的目标屏幕;接收所述源端设备传输的所述源端重定向实例对应的重定向数据;在存在至少两个所述目的端重定向实例对应同一所述源端重定向实例的情况下,通过复用重定向数据解析器解析所述重定向数据;基于所述重定向数据的解析结果,通过所述目标屏幕对所述目标重定向对象进行展示。21.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器;所述存储器存储有至少一条指令,所述至少一条指令用于被所述处理器执行以实现如权利要求1至10任一所述的重定向方法,或,实现如权利要11至17任一所述的重定向方法。22.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条程序代码,所述程序代码由处理器加载并执行以实现如权利要求1至10任一所述的重定向方法,或,实现如权利要11至17任一所述的重定向方法。23.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机指令,所述计算机指令存储在计算机可读存储介质中;计算机设备的处理器从所述计算机可读存储介质读取所述计算机指令,所述处理器执行所述计算机指令,使得所述计算机设备执行如权利要求1至10任一所述的重定向方法,或,如权利要11至17任一所述的重定向方法。

技术总结
本申请实施例公开了一种重定向方法、装置、设备、存储介质及程序产品,属于投屏技术领域。该方法包括:基于源端设备标识以及目标重定向对象标识创建源端重定向实例,目标重定向对象标识用于表征目标重定向对象;在同一源端重定向实例对应至少两个目的端重定向实例的情况下,通过复用重定向数据生成器生成源端重定向实例对应的重定向数据,目的端重定向实例基于目的端设备标识以及目标屏幕标识创建得到;向目的端设备传输重定向数据,以便目的端设备基于重定向数据,通过目标屏幕对目标重定向对象进行展示。采用本申请实施例提供的方案能够减小源端设备与目的端设备间进行数据传输产生的编码以及解码开销。输产生的编码以及解码开销。输产生的编码以及解码开销。


技术研发人员:何轩 杨俊拯 钟江 张子煜
受保护的技术使用者:OPPO广东移动通信有限公司
技术研发日:2021.12.02
技术公布日:2022/3/8

最新回复(0)