CN117093168A - 接收屏幕镜像的方法、镜像接收装置、系统、设备及介质 - Google Patents

接收屏幕镜像的方法、镜像接收装置、系统、设备及介质 Download PDF

Info

Publication number
CN117093168A
CN117093168A CN202311001922.XA CN202311001922A CN117093168A CN 117093168 A CN117093168 A CN 117093168A CN 202311001922 A CN202311001922 A CN 202311001922A CN 117093168 A CN117093168 A CN 117093168A
Authority
CN
China
Prior art keywords
data
image
information
screen
image frame
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202311001922.XA
Other languages
English (en)
Inventor
刘帅
张鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Netease Youdao Hangzhou Intelligent Technology Co ltd
Original Assignee
Netease Youdao Hangzhou Intelligent Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Netease Youdao Hangzhou Intelligent Technology Co ltd filed Critical Netease Youdao Hangzhou Intelligent Technology Co ltd
Priority to CN202311001922.XA priority Critical patent/CN117093168A/zh
Publication of CN117093168A publication Critical patent/CN117093168A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1454Digital output to display device ; Cooperation and interconnection of the display device with other functional units involving copying of the display data of a local workstation or window to a remote workstation or window so that an actual copy of the data is displayed simultaneously on two or more displays, e.g. teledisplay

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

本披露公开了一种接收屏幕镜像的方法、镜像接收装置、系统、设备及介质,该方法包括:响应于接收到屏幕镜像的图像帧数据,创建画布;获取所述画布的绘制区域的内存地址;以及基于所述内存地址,渲染所述图像帧数据,以得到用于显示的镜像画面。本披露实施例的方法,能够适应于词典笔、学习机等设备的显示框架,使得词典笔、学习机等设备能够实现屏幕镜像的接收。

Description

接收屏幕镜像的方法、镜像接收装置、系统、设备及介质
技术领域
本披露一般涉及屏幕显示技术领域。更具体地,本披露涉及一种接收屏幕镜像的方法、镜像接收装置、用于屏幕镜像的系统、用于接收屏幕镜像的设备及计算机可读存储介质。
背景技术
本部分旨在为权利要求书中陈述的本披露的实施方式提供背景或上下文。此处的描述可包括可以探究的概念,但不一定是之前已经想到或者已经探究的概念。因此,除非在此指出,否则在本部分中描述的内容对于本申请的说明书和权利要求书而言不是现有技术,并且并不因为包括在本部分中就承认是现有技术。
屏幕镜像是指将发起端当前屏幕所呈现的画面同屏到接收端的屏幕上。在目前的屏幕镜像领域,通常是将平板或者手机的屏幕画面同屏到电脑或者电视等更大的显示屏上,而尚未出现将平板、手机、电脑或者电视等设备的屏幕画面同屏到例如词典笔、学习机等设备的屏幕上的技术。
发明内容
为此,非常需要一种改进的屏幕镜像方案,以使例如词典笔、学习机等设备也可以接收其他类型设备的同屏画面。
在本上下文中,本披露的实施方式期望提供一种接收屏幕镜像的方法、镜像接收装置、用于屏幕镜像的系统、用于接收屏幕镜像的设备及计算机可读存储介质。
在第一方面中,本披露提供一种接收屏幕镜像的方法,包括:响应于接收到屏幕镜像的图像帧数据,创建画布;获取所述画布的绘制区域的内存地址;以及基于所述内存地址,渲染所述图像帧数据,以得到用于显示的镜像画面。
在一些实施例中,基于所述内存地址,渲染所述图像帧数据包括:将所述图像帧数据中每个像素的像素信息,拷贝到所述内存地址对应的内存位置上。
在另一些实施例中,基于所述内存地址,渲染所述图像帧数据还包括:在所述内存位置上对应每个像素的透明通道处,填充每个像素的透明度数据。
在又一些实施例中,所述像素信息包括像素的RGB值,并且填充透明度数据包括:在所述内存地址对应的内存位置上,每隔三个字节,填充一个透明度数据。
在一些实施例中,在渲染所述图像帧数据之前,所述方法还包括:响应于所述图像帧数据的数据格式为YUV格式,将该YUV格式的图像帧数据转换为RGB格式的图像帧数据。
在另一些实施例中,将YUV格式的图像帧数据转换为RGB格式的图像帧数据通过如下方式实现:R=Y+1.13983V;G=Y-0.39465U-0.5806V;B=Y+2.03211U;其中,R表示图像像素的红色强度值,G表示图像像素的绿色强度值,B表示图像像素的蓝色强度值,Y表示图像像素的亮度,U表示图像像素的色度,V表示图像像素的饱和度。
在又一些实施例中,所述方法在Haas UI显示框架下执行。
在一些实施例中,所述图像帧数据的数据包包括一个或者多个数据组,每个数据组包括类型信息和数据信息,所述类型信息包括:所述数据信息的类型;和/或对所述数据信息的控制信息;所述方法还包括:根据所述类型信息,使用相应的数据信息进行渲染。
在另一些实施例中,所述数据信息包括像素信息。
在又一些实施例中,每个数据组还包括尺寸信息,所述尺寸信息用于表示所述数据信息的字节数大小。
在一些实施例中,所述图像帧数据的数据包包括多个数据组,多个数据组包括以下中的至少两个:第一数据组,其包括第一类型信息和第一数据信息,所述第一类型信息表示第一数据信息的类型为视频或者图像;第二数据组,其包括第二类型信息和第二数据信息,所述第二类型信息表示第二数据信息的类型为音频;第三数据组,其包括第三类型信息和第三数据信息,所述第三类型信息表示第三数据信息的控制信息,其中所述控制信息包括透明度。
在另一些实施例中,所述图像帧数据包括多个图像帧的数据,所述数据包中的至少一个数据组用于表示对应一个图像帧的类型信息和数据信息。
在又一些实施例中,所述图像帧数据还包括包头,所述包头位于所述数据包的头部,并且包括用于表示所述数据包的数据长度的长度信息。
在一些实施例中,在创建画布之前,所述方法还包括:响应于接收到所述包头,根据所述包头中的长度信息,判断所述包头后的数据包是否传输完成;以及响应于所述包头后的数据包传输完成,获取所述图像帧数据。
在第二方面中,本披露提供一种镜像接收装置,其用于执行根据本披露在第一方面中任一所述的方法。
在一些实施例中,所述镜像接收装置包括词典笔或者学习机。
在第三方面中,本披露提供一种用于屏幕镜像的系统,包括:根据本披露在第二方面中任一所述的镜像接收装置;以及镜像发起装置,其配置用于:发送用于屏幕镜像的图像帧数据。
在一些实施例中,所述镜像发起装置在发送所述图像帧数据之前,还配置用于:获取屏幕数据;对所述屏幕数据进行编码,以生成数据信息;以及基于所述数据信息,生成所述图像帧数据的数据包。
在另一些实施例中,所述镜像发起装置在生成数据包时,还配置用于:根据所述数据信息的类型和/或对所述数据信息的控制信息,确定所述数据信息的类型信息;基于所述类型信息和所述数据信息,生成所述数据包。
在又一些实施例中,生成的所述数据包包括一个或多个数据组,每个数据组包括至少一种类型信息和与其对应的数据信息。
在一些实施例中,所述数据包包括多个数据组,多个数据组包括以下中的至少两个:第一数据组,其包括第一类型信息和第一数据信息,所述第一类型信息表示第一数据信息的类型为视频或者图像;第二数据组,其包括第二类型信息和第二数据信息,所述第二类型信息表示第二数据信息的类型为音频;第三数据组,其包括第三类型信息和第三数据信息,所述第三类型信息表示第三数据信息的控制信息,其中所述控制信息包括透明度。
在另一些实施例中,所述镜像发起装置进一步配置用于:获取多帧的屏幕数据,以生成多个图像帧的数据信息;基于每个图像帧的数据信息和对应的类型信息,生成至少一个数据组;基于多个图像帧对应的多个数据组,生成所述数据包。
在又一些实施例中,所述镜像发起装置在生成所述数据包时,还配置为:在所述数据包中添加尺寸信息,所述尺寸信息用于表示所述数据信息的字节数大小。
在一些实施例中,所述镜像发起装置还配置用于:在所述数据包的头部添加包头,以生成包括包头和数据包的图像帧数据,其中所述包头包括用于表示所述数据包的数据长度的长度信息。
在另一些实施例中,所述编码包括H264编码。
在又一些实施例中,所述镜像发起装置和所述镜像接收装置之间,通过TCP协议进行所述图像帧数据的传输。
在第四方面中,本披露提供一种用于接收屏幕镜像的设备,包括,至少一个处理器;存储器,其存储有程序指令,当所述程序指令由所述至少一个处理器执行时,使得所述设备执行根据本披露在第一方面中的任一项所述的方法。
在第五方面中,本披露提供一种计算机可读存储介质,其存储有用于接收屏幕镜像的程序,当所述程序由处理器来运行时,执行根据本披露在第一方面中的任一项所述的方法。
通过如上所提供的接收屏幕镜像的方案,本披露实施例通过基于创建的画布的绘制区域的内存地址,渲染图像帧数据,不仅能够适应于词典笔、学习机等设备的显示框架,使得词典笔、学习机等设备能够实现屏幕镜像的接收,还能够加快渲染的速度和效率,更适应于词典笔、学习机等设备上进行屏幕镜像的应用需求,为用户带来了更好的体验。
附图说明
通过参考附图阅读下文的详细描述,本披露示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本披露的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
图1示意性地示出了根据本披露实施例的接收屏幕镜像的方法流程图;
图2示意性地示出了根据本披露另一个实施例的接收屏幕镜像的方法流程图;
图3示意性地示出了根据本披露又一个实施例的接收屏幕镜像的方法流程图;
图4示意性示出了根据本披露实施例的用于屏幕镜像的系统的示意性框图;
图5示意性地示出了根据本披露实施例的镜像接收装置和镜像发起装置之间实现屏幕镜像的流程框图;
图6示出了适于实现本披露实施方式的示例性设备600的框图。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
下面将参考若干示例性实施方式来描述本披露的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本披露,而并非以任何方式限制本披露的范围。相反,提供这些实施方式是为了使本披露更加透彻和完整,并且能够将本披露的范围完整地传达给本领域的技术人员。
下面将参照本披露实施例的方法的流程图和设备(或系统)的框图描述本披露的实施方式。根据本披露的实施方式,提出了一种接收屏幕镜像的方法、镜像接收装置、用于屏幕镜像的系统、用于接收屏幕镜像的设备及计算机可读存储介质。
在本文中,需要理解的是,所涉及的术语包括:
Haas UI,是一种跨平台应用显示框架,它利用JS语言与移动开发Web理念大幅度降低了IoT应用的研发难度;
H264,是一种属于视频的编码层的编码格式;
YUV,是一种颜色编码格式,其中,Y表示图像像素的亮度,U表示图像像素的色度,V表示图像像素的饱和度;
图像帧,是组成视频的最小单位;
TCP,Transmission Control Protocol,传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议。
此外,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。下面参考本披露的若干代表性实施方式,详细阐释本披露的原理和精神。
发明概述
本发明人发现,目前的词典笔、学习机(例如听力宝等)均不具有接收屏幕镜像的功能,这是由于词典笔、学习机等采用的是Haas UI显示框架,与电脑、平板等设备中的显示框架不同,而目前还未出现在Haas UI显示框架中实现屏幕镜像的技术手段。
在介绍了本披露的基本原理之后,下面具体介绍本披露的各种非限制性实施方式。
应用场景总览
在一些应用场景中,本披露实施方式的接收屏幕镜像的方法可以通过在机器上运行的应用程序来实施。这种应用程序例如可以是屏幕镜像APP等。通常,在开启这种屏幕镜像APP后,可以通过接收镜像发起端发送的镜像画面数据,并经过相应处理来实现在实施这种屏幕镜像APP的机器上同屏显示的功能。进一步地,在实施该屏幕镜像APP的机器上通常还可以设置例如显示屏等用来显示镜像画面,或者可以设置扬声器等来播放镜像画面中的音频。在一些应用场景中,实施该屏幕镜像APP的机器可以包括扫描笔、词典笔、学习机(例如听力宝等)等,或者其他使用Haas UI显示框架的大屏设备。通过执行本披露实施方式的方法来接收屏幕镜像的设备,能够方便用户在该设备上观看屏幕镜像发起端(例如电脑端)的显示内容,或者可以供多个用户在不同的设备上观看PPT等内容。
示例性方法
下面结合上面描述的应用场景,参考图1来描述根据本披露示例性实施方式的接收屏幕镜像的方法。需要注意的是,上述应用场景仅是为了便于理解本披露的精神和原理而示出,本披露的实施方式在此方面不受任何限制。相反,本披露的实施方式可以应用于适用的任何场景。
图1示意性地示出了根据本披露实施例的接收屏幕镜像的方法流程图。如图1中所示,根据本披露实施例的接收屏幕镜像的方法100可以包括:在步骤101中,响应于接收到屏幕镜像的图像帧数据,创建画布。画布可以是用于绘制图像的空白区域,也可以看作是用户界面组件(简称UI组件)中的容器,用于容纳多种用户界面元素(简称UI元素)。
在一些实施例中,图像帧数据可以包括一个或多个图像帧的数据。每个图像帧的数据中可以包括图像数据和/或音频数据等。在一些应用场景中,屏幕镜像发起端的屏幕画面为一幅静止画面,在步骤101中接收到的图像帧数据可以包括一个图像帧的数据。在另一些应用场景中,屏幕镜像发起端的屏幕画面为视频,在步骤101中接收到的图像帧数据可以包括多个图像帧的数据,以便在屏幕镜像接收端能够同屏显示该视频。在又一些应用场景中,屏幕镜像发起端的屏幕画面中还包含音频,在步骤101中接收到的图像帧数据中也可以包括音频数据。
接着,在步骤102中,可以获取画布的绘制区域的内存地址。绘制区域为画布中用于绘制图像的区域,该绘制区域中的图像将可以用于呈现到屏幕上。
进一步地,在步骤103中,可以基于内存地址,渲染图像帧数据,以得到用于显示的镜像画面。在一些实施例中,基于内存地址渲染图像帧数据可以包括:在内存地址对应的内存位置上,渲染图像帧数据。具体地,在另一些实施例中,基于内存地址,渲染图像帧数据可以包括:将图像帧数据中每个像素的像素信息,拷贝到内存地址对应的内存位置上。
相比于在创建画布后,直接在画布上进行图像帧数据的绘制,本披露实施例的在内存地址对应的内存位置上渲染图像帧数据,具有更快的渲染速度,从而有利于提高屏幕镜像同屏显示的实时性,降低显示镜像画面的延迟时间。
在又一些实施例中,方法100可以是在Haas UI显示框架下执行。通过在Haas UI显示框架下执行方法100,可以实现扫描笔、词典笔、学习机等采用Haas UI显示框架的设备接收屏幕镜像的功能。具体地,在Haas UI显示框架下,可以通过createCanvasContext创建canvas对象(即步骤101中的创建画布)。然后,为了提高渲染效率,可以使用getImageData获取画布的绘制区域的内存地址(即步骤102),并可以基于该内存地址,对接收到的用于屏幕镜像的图像帧数据进行渲染(即步骤103)。在一些实施例中,在Haas UI显示框架下,在基于内存地址进行渲染时,可以将接收到的用于屏幕镜像的图像帧数据中每个像素的像素信息,拷贝到该内存地址对应的内存位置上(或称内存地址所指向的内存位置上),即可实现在镜像接收端实时、流畅的同屏播放镜像画面。
以上结合图1对根据本披露实施例的接收屏幕镜像的方法进行了描述,可以理解的是,上面的描述是示例性的而非限制性的。例如,在步骤103中的渲染可以不限于仅包括拷贝每个像素的像素信息,在另一些实施例中,还可以在内存位置上对应每个像素的透明通道处,填充每个像素的透明度数据。在Haas UI显示框架下创建画布(或称canvas),创建的画布可以存在透明通道(例如alpha通道),通过在画布的内存地址上对应每个像素的透明通道处填充透明度数据,可以使得呈现的镜像画面具有透明效果或者不透明效果。
在一些应用场景中,可以将每个透明通道处填充表示不透明的透明度数据,以呈现不透明的镜像画面。在另一些应用场景中,可以将图像帧数据中某些图像元素(例如弹窗等)的像素的透明通道处,填充表示一定透明度的透明度数据,以呈现这些图像元素悬浮的视觉效果。在一些实施例中,透明度数据的数值范围可以包括0-255,其中透明度数据为0表示全透明,透明度数据为128表示半透明,透明度数据255表示不透明。在另一些实施例中,透明度数据的数值范围可以包括0-1,其中透明度数据为0表示全透明,透明度数据为0.5表示半透明,透明度数据为1表示不透明。
图2示意性地示出了根据本披露另一个实施例的接收屏幕镜像的方法流程图。通过下面的描述可知,图2示出的方法200可以是前文中结合图1描述的方法100的一个具体化实现方式,因此前文中结合图1对方法100的描述也可以适用于下面对方法200的描述中。
如图2中所示,方法200可以包括:在步骤201中,响应于接收到屏幕镜像的图像帧数据,且图像帧数据的数据格式为YUV格式,可以将该YUV格式的图像帧数据转换为RGB格式的图像帧数据。具体地,在一些实施例中,将YUV格式的图像帧数据转换为RGB格式的图像帧数据可以通过如下方式实现:R=Y+1.13983V;G=Y-0.39465U-0.5806V;B=Y+2.03211U;其中,R表示图像像素的红色强度值,G表示图像像素的绿色强度值,B表示图像像素的蓝色强度值,Y表示图像像素的亮度,U表示图像像素的色度,V表示图像像素的饱和度。通过将图像帧数据中每个像素的YUV值转换为RGB值,即可得到RGB格式的图像帧数据。
接着,在步骤202中,可以创建画布。然后,流程可以前进到步骤203中,可以获取画布的绘制区域的内存地址。步骤202和步骤203可以与前文中结合图1描述的步骤101和步骤102相同或相似,此处不再赘述。
进一步地,在步骤204中,可以基于内存地址,渲染图像帧数据。在一些实施例中,可以将图像帧数据中每个像素的像素信息,拷贝到内存地址对应的内存位置上,其中像素信息包括像素的RGB值。在此基础上,步骤204可以包括步骤2041(虚线框示出),在步骤2041中,可以在内存地址对应的内存位置上,每隔三个字节,填充一个透明度数据。由于将每个像素的RGB值拷贝到对应的内存位置上时,R值、G值和B值可以分别占据一个字节的位置,因此可以在该三个字节后填充一个透明度数据,每个像素对应的透明度数据可以占据一个字节,这样一来,每个像素的信息(像素信息和透明度数据)可以在内存位置上占用四个字节。在实际操作中,假如图像帧数据的各像素的透明度数据设置的相同,则可以在内存位置上,每隔三个字节,填充一个固定数值的透明度数据;假如图像帧数据中某些像素的透明度数据与其他像素的透明度数据不同,则可以根据各像素的像素信息所在位置,在相应像素信息后填充相应的透明度数据。
以上结合图2对根据本披露实施例的包括填充透明度数据的接收屏幕镜像的方法进行了示例性的描述,可以理解的是,图中所示是示例性的而非限制性的,例如步骤201可以不限于图示中的在步骤202之前执行,也可以根据需要在步骤202之后执行,或者可以在步骤203之后执行。还例如,根据本披露实施例的方法可以不限于包括图1或图2中所示的步骤,还可以包括其他步骤。下面将结合图3进行示例性的说明。
图3示意性地示出了根据本披露又一个实施例的接收屏幕镜像的方法流程图。如图3中所示,方法300可以包括:在步骤301中,响应于接收到包头,根据包头中的长度信息,判断包头后的数据包是否传输完成。在一些实施例中,图像帧数据可以包括包头和数据包,其中包头位于数据包的头部,并且包头包括用于表示数据包的数据长度的长度信息。
在一些实施例中,包头可以为固定长度的信息,例如设置为4字节数据等。根据这样的设置,可以便于分辨出接收到的数据是否为包头,或者数据包。在一个具体实施例中,图像帧数据的数据格式可以为{4字节数据,n字节数据},其中4字节数据可以为包头,并用于表示长度n(即长度信息);n字节数据可以为数据包,该数据包的数据长度为n字节。这里包头选用4字节,足够容纳4GB的内存,从而能够用于表示足够的长度信息。
在一些实施例中,响应于接收到的包头后的数据包的数据长度不满足包头中的长度信息(即不足一个完整的数据包),则可以继续等待数据的到来。在另一些实施例中,例如图示中的步骤302中,响应于包头后的数据包传输完成,获取图像帧数据。这里的传输完成可以包括接收到的包头后的数据包的数据长度满足包头中的长度信息,即一个完整的数据包传输完成,此时可以通过至少获取该完整的数据包来实现获取图像帧数据的目的。
通过基于包头来判断一个完整数据包是否传输完成,可以实现对图像帧数据流的分割,以分割得到每个完整的数据包,从而可以有效避免数据传输过程中的粘包问题。
在获得了完整的数据包之后,流程可以前进到步骤303中,根据数据包中的类型信息,使用相应的数据信息进行渲染。具体地,在一些实施例中,图像帧数据的数据包可以包括一个或者多个数据组,每个数据组可以包括类型信息和数据信息,其中类型信息可以包括:数据信息的类型;和/或对数据信息的控制信息等。
在一些实施例中,数据信息的类型可以包括视频、图像或音频等。当某个数据组中的数据信息是图像数据(例如数据信息包括像素信息)时,其对应的类型信息可以为视频或者图像;当某个数据组中的数据信息是音频数据时,其对应的类型信息可以为音频。在另一些实施例中,类型信息包括控制信息时,可以是用于控制对应的数据信息的某些性质,例如控制信息包括透明度时,可以用于表示对应的数据信息的透明度性质。在又一些实施例中,可以设置类型信息占用一个字节,则包括类型信息和数据信息的一个数据组的格式可以表示为:{type:1字节,data:m字节},其中type表示类型信息,data表示数据信息,m表示数据信息的字节数。在一些实施例中,数据包包括多个数据组时,该数据包的格式可以表示为{type:1字节,data:m字节,type:1字节,data:m字节,…}。
在一些实施例中,图像帧数据包括一个图像帧的数据,图像帧数据的数据包可以包括一个或者多个数据组。基于此,通过解析该图像帧数据,可以呈现一个图像帧的完整信息。例如,在一个应用场景中,当该一个图像帧的数据仅包括图像数据时,数据包可以只包括一个数据组,且该数据组中的类型信息可以为图像或视频,数据信息可以包括该一个图像帧的各像素的像素信息,以便后续根据该像素信息获取镜像画面。
在另一些实施例中,图像帧数据的数据包包括多个数据组,多个数据组可以包括以下中的至少两个:第一数据组,其包括第一类型信息和第一数据信息,第一类型信息表示第一数据信息的类型为视频或者图像;第二数据组,其包括第二类型信息和第二数据信息,第二类型信息表示第二数据信息的类型为音频;第三数据组,其包括第三类型信息和第三数据信息,第三类型信息表示第三数据信息的控制信息,其中控制信息包括透明度。
例如,在一个应用场景中,当一个图像帧的数据包括图像数据和该图像帧上播放的音频数据时,数据包可以包括至少两个数据组(例如上述的第一数据组和第二数据组),其中第一数据组包括第一类型信息和第一数据信息,第一类型信息表示第一数据信息的类型为视频或者图像;第二数据组包括第二类型信息和第二数据信息,第二类型信息表示第二数据信息的类型为音频,例如该数据包的格式可以表示为:{type(图像):1字节,data(像素信息):m1字节,type(音频):1字节,data(音频数据):m2字节},其中靠前的type和data表示第一数据组,靠后的type和data表示第二数据组,m1和m2分别表示不同数据的字节数。
在又一个应用场景中,当该一个图像帧的数据包括图像数据,且对该图像数据具有透明度要求,则数据包可以包括至少两个数据组(例如上述的第一数据组和第三数据组),其中第一数据组包括第一类型信息和第一数据信息,第一类型信息表示第一数据信息的类型为视频或者图像;第三数据组包括第三类型信息和第三数据信息,第三类型信息表示第三数据信息的控制信息,其中控制信息包括透明度。例如该数据包的格式可以表示为:{type(图像):1字节,data(像素信息):m字节,type(透明度):1字节,data(像素信息):m字节},其中靠前的type和data表示第一数据组,靠后的type和data表示第三数据组,m表示像素信息的字节数。
进一步地,在另一个实施例中,当该一个图像帧的数据包括图像数据,且对该图像数据具有透明度要求,数据包也可以仅包括一个数据组,该数据组中的类型信息包括图像类型和透明度,例如表示为{type(图像、透明度):1字节,data(像素信息):m字节}。
在一些实施例中,图像帧数据可以包括多个图像帧的数据,数据包中的至少一个数据组用于表示对应一个图像帧的类型信息和数据信息。例如,在一个应用场景中,包括多个图像帧的数据的图像帧数据的数据包可以表示为{type1(视频):1字节,data1(像素信息):m1字节,type2(视频):1字节,data2(像素信息):m2字节,type2(音频):1字节,data2(音频数据):m3字节,…},其中type1、data1可以表示第一个图像帧的数据,type2、data2可以表示第二个图像帧的数据,m1、m2、m3分别代表不同数据的字节数。基于这样的设置,可以通过获取一个完整的数据包,实现一次性获取视频数据,以及解析得到相应的镜像视频画面。
在又一些实施例中,每个数据组还可以包括尺寸信息,尺寸信息用于表示数据信息的字节数大小。例如,数据包的格式可以表示为:{type:1字节,size:4字节,data:m字节,...},其中type表示类型信息,m表示数据信息的字节数,size表示尺寸信息(即数据信息的字节数m的大小)。当数据包包括多个数据组时,可以用type、size、data循环表示多种数据,直到数据包的n字节数据全部表示完成。
接着,在确定了数据包中每个数据组中数据信息的类型之后,可以根据每个数据组中的类型信息,使用相对应的数据信息进行渲染。在一些实施例中,响应于数据包中的类型信息为视频或图像,则可以采用后续步骤304-306对图像数据进行渲染;响应于数据包中的数据类型包括音频,可以使用音频处理方法对音频数据进行处理,以得到镜像音频,并可以在对图像或视频类型的数据信息进行渲染后,将渲染得到的镜像图像与镜像音频合成,以得到镜像画面;响应于数据包的类型信息包括控制信息时,可以在渲染图像帧数据时控制渲染过程,以得到镜像画面。
具体地,在步骤304中,可以创建画布。在步骤305中,可以获取画布的绘制区域的内存地址。进一步地,在步骤306中,可以基于内存地址,渲染图像帧数据,以得到用于显示的镜像画面。步骤304、步骤305和步骤306的执行过程可以与前文中结合图1描述的步骤101、步骤102、步骤103相同或相似,或者可以与前文中结合图2描述的步骤202、步骤203和步骤204相同或相似,此处不再赘述。
以上结合图3对根据本披露又一个实施例的接收屏幕镜像的方法进行了示例性的说明,可以理解的是,通过接收包括类型信息的数据包,可以获取更全面和完整的图像帧数据,以便能够呈现出每个数据帧的完整信息(例如包括视频和音频等),还能够根据需要接收数据信息的控制信息,适用于更多的屏幕镜像的显示场景中。还可以理解的是,上面的描述是示例性的而非限制性的。例如,步骤301-步骤303可以根据需要进行选择。在一些实施例中,当图像帧数据不包含包头时,可以无需执行步骤301和步骤302。在另一些实施例中,当数据包中不包括类型信息时,或者仅包括图像数据时,可以无需执行步骤303。
在第二方面中,本披露提供一种镜像接收装置,其用于执行根据图1-图3任一所描述的方法。在一些实施例中,镜像接收装置可以包括词典笔或者学习机等,其中学习机可以包括听力宝等。在另一些实施例中,镜像接收装置可以包括使用Haas UI显示框架的大屏装置、小屏装置等。
可以理解的是,通过执行根据本披露实施例的接收屏幕镜像的方法,能够适应于词典笔、学习机等设备的显示框架,使得词典笔、学习机等设备以及使用Haas UI显示框架的大屏设备均能够实现屏幕镜像的接收;并且通过基于画布的绘制区域的内存地址,渲染图像帧数据,可以具有较高的渲染效率,有利于保证屏幕镜像的同步性以及降低显示延时。
示例性系统
在介绍了本披露示例性实施方式的方法之后,接下来,参考图4对本披露示例性实施方式的系统进行介绍。
图4示意性示出了根据本披露实施例的用于屏幕镜像的系统的示意性框图。如图4中所示,系统400可以包括镜像接收装置401和镜像发起装置402,镜像接收装置401可以配置用于执行前文中结合图1-图3任一所述的方法,镜像发起装置402可以配置用于发送用于屏幕镜像的图像帧数据。
在一些实施例中,镜像发起装置402可以包括电脑、平板等。在另一些实施例中,镜像发起装置402可以为中间设备,例如用于接收来自电脑或者平板的屏幕镜像,然后向镜像接收装置401发送。为了便于理解镜像发起装置402与镜像接收装置401之间的交互过程,下面将结合图5的一个具体实施例进行说明。
图5示意性地示出了根据本披露实施例的镜像接收装置和镜像发起装置之间实现屏幕镜像的流程框图。如图5中所示,在镜像发起装置402处,在发送图像帧数据之前,镜像发起装置402可以配置用于:执行操作501,可以获取屏幕数据。镜像发起装置402可以获取待镜像的每帧屏幕数据。在一些实施例中,镜像发起装置402可以采用Windows系统、Linux系统、或者macOS系统等,通过各自操作系统的API(Application Programming Interface,应用程序编程接口),可以获取每帧屏幕数据。
以镜像发起装置402采用Linux系统的X11环境为例,其可以引入X11库头文件,然后创建显示对象(或称Display对象),并获取屏幕的根窗口以及屏幕的宽度和高度;接着,基于Display对象、根窗口、屏幕的宽度和高度,可以创建XImage对象;将该XImage对象保存为图片文件,即可获得屏幕数据。
接着,在镜像发起装置402的操作502中,可以对屏幕数据进行编码,以生成数据信息。在一些实施例中,编码可以包括H264编码。具体地,仍以Linux系统的X11环境为例,可以对操作501中获得的XImage格式的图片文件进行H264编码,可以先将XImage对象转换成YUV格式的数据,然后使用H264编码器进行编码。常用的H264编码器有x264和openh264等。在一个具体实施例中,对XImage对象进行H264编码可以包括:可以使用libswscale库中的sws_scale函数,将XImage对象转换为YUV格式的数据;使用H264编码器的API函数,如x264_encoder_open或openh264_encoder_create等,初始化H264编码器;设置H264编码器的参数,如编码器的分辨率、帧率、码率等;对于每一帧图像,将YUV数据传入编码器进行编码,得到编码后的H264数据(即数据信息);最后可以释放H264编码器和相关资源。
进一步地,镜像发起装置402还可以配置用于:基于数据信息,生成图像帧数据的数据包。在另一些实施例中,镜像发起装置402在生成数据包时,还配置用于:根据数据信息的类型和/或对数据信息的控制信息,确定数据信息的类型信息;基于类型信息和数据信息,生成数据包。在又一些实施例中,生成的数据包包括一个或多个数据组,每个数据组包括至少一种类型信息和与其对应的数据信息。
在一些实施例中,数据包可以包括多个数据组,多个数据组包括以下中的至少两个:第一数据组,其包括第一类型信息和第一数据信息,第一类型信息表示第一数据信息的类型为视频或者图像;第二数据组,其包括第二类型信息和第二数据信息,第二类型信息表示第二数据信息的类型为音频;第三数据组,其包括第三类型信息和第三数据信息,第三类型信息表示第三数据信息的控制信息,其中控制信息可以包括透明度。
在另一些实施例中,镜像发起装置402可以进一步配置用于:获取多帧的屏幕数据,以生成多个图像帧的数据信息;基于每个图像帧的数据信息和对应的类型信息,生成至少一个数据组;基于多个图像帧对应的多个数据组,生成数据包。
在又一些实施例中,镜像发起装置402在生成数据包时,还可以配置为:在数据包中添加尺寸信息,尺寸信息用于表示数据信息的字节数大小。
在一些实施例中,镜像发起装置402还可以配置用于:在数据包的头部添加包头,以生成包括包头和数据包的图像帧数据,其中包头包括用于表示所述数据包的数据长度的长度信息。
以上关于镜像发起装置402生成的数据包、添加包头形成的图像帧数据等已经在前文中结合图3进行了详细的描述,此处将不再赘述。
如图5中进一步示出的,在获得图像帧数据后,镜像发起装置402可以在操作503中,基于网络协议,将图像帧数据传输给镜像接收装置401。在一些实施例中,镜像发起装置402和镜像接收装置401之间,可以通过TCP协议进行图像帧数据的传输。镜像发起装置402发送的图像帧数据可以缓存于镜像接收装置401的接收缓冲区中。
镜像接收装置401在操作504中,可以基于网络协议,从接收缓冲区中读取图像帧数据。在一些实施例中,镜像接收装置401在读取到包头后,可以根据包头中的长度信息来读取数据包,根据这样的方式,可以解决基于TCP网络协议传输的数据流的粘包问题,以支持完整的数据包的传输。镜像接收装置401在读取完一个完整数据包后,可以继续基于下一个包头来读取下一个数据包。
然后,镜像接收装置401在操作505中,可以针对H264编码后的数据进行H264解码。具体地,可以将H264编码后得到的数据信息进行解码,还可以将YUV格式的数据信息转换为RGB格式的数据信息。
进一步地,镜像接收装置401在操作506中,可以执行前述结合图1-图3任一所述的创建画布以及渲染等操作,以实现在镜像接收装置401的屏幕上显示镜像画面的目的。
在第四方面中,本披露提供一种用于接收屏幕镜像的设备,包括,至少一个处理器;存储器,其存储有程序指令,当该程序指令由至少一个处理器执行时,使得设备执行根据本披露在前文中结合图1-图3任一所描述的方法。
图6示出了适于实现本披露实施方式的示例性设备600的框图。如图1所示,设备600可以包括:中央处理单元(CPU)601、随机存取存储器(RAM)602、只读存储器(ROM)603、系统总线604、硬盘控制器605、键盘控制器606、串行接口控制器607、并行接口控制器608、显示控制器609、硬盘610、键盘611、串行外部设备612、并行外部设备613和显示器614。这些设备中,与系统总线604耦合的有CPU 601、RAM 602、ROM 603、硬盘控制器605、键盘控制器606、串行控制器607、并行控制器608和显示控制器609。硬盘610与硬盘控制器605耦合,键盘611与键盘控制器606耦合,串行外部设备612与串行接口控制器607耦合,并行外部设备613与并行接口控制器608耦合,以及显示器614与显示控制器609耦合。应当理解,图6所述的结构框图仅仅是为了示例的目的,而不是对本披露范围的限制。在某些情况下,可以根据具体情况增加或减少某些设备。
在第五方面中,本披露提供一种计算机可读存储介质,其存储有用于接收屏幕镜像的程序,当该程序由处理器来运行时,执行根据本披露在前文中结合图1-图3任一所描述的方法。
本领域技术技术人员知道,本披露的实施方式可以实现为一种系统、方法或计算机程序产品。因此,本披露可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本披露还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是,但不限于,电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举示例)例如可以包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本披露操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络(包括局域网(LAN)或广域网(WAN))连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置的产品。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
应当注意,尽管在上文详细描述中提及了设备的若干装置或子装置,但是这种划分仅仅并非强制性的。实际上,根据本披露的实施方式,上文描述的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。
此外,尽管在附图中以特定顺序描述了本披露方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本披露的精神和原理,但是应该理解,本披露并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本披露旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。所附权利要求的范围符合最宽泛的解释,从而包含所有这样的修改及等同结构和功能。
本披露的技术方案中,所涉及的用户个人信息的获取、存储和应用等,均符合相关法律法规的规定,且不违反公序良俗。

Claims (10)

1.一种接收屏幕镜像的方法,包括:
响应于接收到屏幕镜像的图像帧数据,创建画布;
获取所述画布的绘制区域的内存地址;
基于所述内存地址,渲染所述图像帧数据,以得到用于显示的镜像画面。
2.根据权利要求1所述的方法,其中基于所述内存地址,渲染所述图像帧数据包括:
将所述图像帧数据中每个像素的像素信息,拷贝到所述内存地址对应的内存位置上。
3.根据权利要求2所述的方法,其中基于所述内存地址,渲染所述图像帧数据还包括:
在所述内存位置上对应每个像素的透明通道处,填充每个像素的透明度数据。
4.根据权利要求1-3任一所述的方法,所述方法在Haas UI显示框架下执行。
5.根据权利要求1所述的方法,其中所述图像帧数据的数据包包括一个或者多个数据组,每个数据组包括类型信息和数据信息,所述类型信息包括:所述数据信息的类型;和/或对所述数据信息的控制信息;
所述方法还包括:
根据所述类型信息,使用相应的数据信息进行渲染。
6.根据权利要求5所述的方法,其中所述图像帧数据还包括包头,所述包头位于所述数据包的头部,并且包括用于表示所述数据包的数据长度的长度信息。
7.一种镜像接收装置,其用于执行根据权利要求1-6任一所述的方法。
8.一种用于屏幕镜像的系统,包括:
根据权利要求7所述的镜像接收装置;以及
镜像发起装置,其配置用于:发送用于屏幕镜像的图像帧数据。
9.一种用于接收屏幕镜像的设备,包括,
至少一个处理器;
存储器,其存储有程序指令,当所述程序指令由所述至少一个处理器执行时,使得所述设备执行根据权利要求1-6的任一项所述的方法。
10.一种计算机可读存储介质,其存储有用于接收屏幕镜像的程序,当所述程序由处理器来运行时,执行根据权利要求1-6的任一项所述的方法。
CN202311001922.XA 2023-08-09 2023-08-09 接收屏幕镜像的方法、镜像接收装置、系统、设备及介质 Pending CN117093168A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311001922.XA CN117093168A (zh) 2023-08-09 2023-08-09 接收屏幕镜像的方法、镜像接收装置、系统、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311001922.XA CN117093168A (zh) 2023-08-09 2023-08-09 接收屏幕镜像的方法、镜像接收装置、系统、设备及介质

Publications (1)

Publication Number Publication Date
CN117093168A true CN117093168A (zh) 2023-11-21

Family

ID=88778031

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311001922.XA Pending CN117093168A (zh) 2023-08-09 2023-08-09 接收屏幕镜像的方法、镜像接收装置、系统、设备及介质

Country Status (1)

Country Link
CN (1) CN117093168A (zh)

Similar Documents

Publication Publication Date Title
US10110936B2 (en) Web-based live broadcast
CN109600666B (zh) 游戏场景中的视频播放方法、装置、介质以及电子设备
US11012489B2 (en) Picture file processing method, picture file processing device, and storage medium
EP3465673B1 (en) Transitioning between video priority and graphics priority
KR102617258B1 (ko) 이미지 프로세싱 방법 및 장치
CN105874807B (zh) 用于在电视设备上对Web内容远程渲染的方法、系统和介质
WO2018129924A1 (zh) 图像处理方法和电子设备
CN112714357A (zh) 视频播放方法、视频播放装置、电子设备和存储介质
CN115225615B (zh) 虚幻引擎像素流送方法及装置
CN117093168A (zh) 接收屏幕镜像的方法、镜像接收装置、系统、设备及介质
CN114938408B (zh) 一种云手机的数据传输方法、系统、设备及介质
CN116248889A (zh) 图像编码及解码方法、装置和电子设备
CN108737877B (zh) 图像处理的方法、装置和终端设备
CN115866254A (zh) 一种传输视频帧及摄像参数信息的方法与设备
CN113052748B (zh) 图形处理器以及视频解码显示方法
CN114979541A (zh) 一种视频显示系统
CN114079823A (zh) 基于Flutter的视频渲染方法、装置、设备及介质
CN115136594A (zh) 在沉浸式视频中对于每个图集标示启用视图的方法和装置
CN117093167A (zh) 发起屏幕镜像的方法、镜像发起装置、系统、设备及介质
CN111131857A (zh) 图像压缩方法、装置及电子设备
CN106851134B (zh) 传输图像数据的方法、装置及系统
CN117528098B (zh) 基于深压缩码流提升画质的编解码系统、方法及设备
CN110876069A (zh) 视频截图的获取方法、装置、设备及存储介质
CN114760525A (zh) 视频生成及播放方法、装置、设备、介质
WO2023036111A1 (zh) 视频处理方法、装置、设备及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination