本发明实施例涉及通信技术领域,特别涉及一种投屏方法、装置、计算机设备及存储介质。
背景技术:
随着智能技术的渗透与迭代发展,投屏应用正在成为家庭场景下的流行应用,各大互联网公司纷纷携硬件产品进入该市场。随着智能技术的应用和业务模式的演进,电视大屏的业务形态与商业生态在不断演变中,而投屏应用正是其中之一。
相关技术中,主要存在两种投屏方法:dlna(digitallivingnetworkalliance,数字生活网络联盟)和miracast(由wi-fi联盟于2012年所制定,以wi-fi直连为基础的无线显示标准)。但是,在采用dlna进行投屏时,其需要wifi通路具有较高的质量要求,并且在投屏时存在画面延迟率高、清晰度低等缺点。在采用miracast进行投屏时,也存在一定的缺陷,例如其画面传输过程涉及到编解码时,对安卓设备硬件配置要求高、且对设备硬件的性能消耗较高,同时对wifi通路要求也较高,容易产生延迟率并对投屏清晰度造成影响。
技术实现要素:
本发明实施例提供了一种投屏方法、装置、计算机设备及存储介质,旨在打破不同系统生态间的隔阂,从而实现跨平台的投屏。
第一方面,本发明实施例提供了一种投屏方法,包括:
建立客户端与移动服务端的通信连接;
所述客户端获取所述移动服务端发送的设备信息,并根据所述设备信息设置对应的多媒体开发库窗口;
所述客户端获取所述服务端发送的编码视频,并对所述编码视频进行解码,得到解码视频;
所述客户端基于所述多媒体开发库窗口对所述解码视频进行界面渲染并显示。
第二方面,本发明实施例提供了一种投屏装置,包括:
通信连接单元,用于建立客户端与移动服务端的通信连接;
窗口设置单元,用于所述客户端获取所述移动服务端发送的设备信息,并根据所述设备信息设置对应的多媒体开发库窗口;
视频解码单元,用于所述客户端获取所述服务端发送的编码视频,并对所述编码视频进行解码,得到解码视频;
渲染显示单元,用于所述客户端基于所述多媒体开发库窗口对所述解码视频进行界面渲染并显示。
第三方面,本发明实施例提供了一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面所述的投屏方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的投屏方法。
本发明实施例提供了一种投屏方法、装置、计算机设备及存储介质,所述方法包括:建立客户端与移动服务端的通信连接;所述客户端获取所述移动服务端发送的设备信息,并根据所述设备信息设置对应的多媒体开发库窗口;所述客户端获取所述服务端发送的编码视频,并对所述编码视频进行解码,得到解码视频;所述客户端基于所述多媒体开发库窗口对所述解码视频进行界面渲染并显示。本发明实施例通过多媒体开发库窗口对解码视频进行界面渲染,实现跨平台的投屏,从而打破不同系统生态间的隔阂。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种投屏方法的流程示意图;
图2为本发明实施例提供的一种投屏装置的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
下面请参见图1,图1为本发明实施例提供的一种投屏方法的流程示意图,具体包括:步骤s101~s104。
s101、建立客户端与移动服务端的通信连接;
s102、所述客户端获取所述移动服务端发送的设备信息,并根据所述设备信息设置对应的多媒体开发库窗口;
s103、所述客户端获取所述服务端发送的编码视频,并对所述编码视频进行解码,得到解码视频;
s104、所述客户端基于所述多媒体开发库窗口对所述解码视频进行界面渲染并显示。
本实施例中,客户端首先与移动服务端进行通信连接,然后获取移动服务端的设备信息用于创建对应的多媒体开发库窗口,当移动服务端向客户端发送已编码的视频数据时,客户端接收编码视频,并对该编码视频进行解码,然后将解码的视频数据发送至创建的多媒体开发库窗口中进行相应的界面渲染,并在需要渲染完成后显示画面,实现投屏效果。
本实施例使客户端与移动服务端进行通信连接,可以采用usb连接方式进行有线连接或者采用wifi连接方式进行无线连接。同时本实施例创建的多媒体开发库窗口基于多媒体开发库,而多媒体开发库可用于跨平台方案,实现跨平台投屏,消除了不同系统生态间的隔阂。需要说明的是,本实施例中的移动服务端的载体可以是移动手机等终端,特别适用于安卓手机终端。另外,本实施例中的客户端支持windows系统、linux系统、web浏览器、mac等客户端。所述客户端的载体可以是电脑、电视或者安装了操作系统的其他硬件设备。
在一实施例中,所述步骤s101包括:
所述客户端通过安卓调试桥命令将端口配置文件发送至所述移动服务端,并使所述移动服务端运行所述端口配置文件,从而建立所述客户端与所述移动服务端之间的socket通信连接。
本实施例中,客户端可以通过有线连接或者无线连接的方式与所述移动服务端建立通信连接。优选的,当客户端与移动服务端进行有线连接时,可以保证二者在传输数据的过程中具有一定的稳定性,降低外界干扰。此时,移动服务端首先开启开发者模式以及开启usb调试模式,然后客户端通过ucb连接方式(例如usb数据线等)连接移动服务端。在有线连接完成后,客户端调用安卓调试桥指令(即adb)使移动服务端对应进行端口配置以实现二者之间的通信连接。具体的,客户端adb命令将端口配置文件(例如jar文件)推送至移动服务端并使之运行该端口配置文件,完成相应的端口配置,从而建立socket通信连接。本实施例通过有线连接的方式可以有效避免在数据传输过程中出现丢包导致投屏画面延迟和清晰度限制等问题。
在一具体实施例中,当客户端和移动服务端建立socket连接后,客户端向移动服务端发送一个测试字节,以确定已建立通信连接。
在一实施例中,所述客户端通过安卓调试桥命令配置socket通信端口,并将端口配置文件发送至所述移动服务端,并使所述移动服务端运行所述端口配置文件,从而建立所述客户端与所述移动服务端之间的socket通信连接,包括:
利用端口映射将所述客户端的第一端口映射到所述移动服务端的第二端口,使所述第一端口作为发送端以及所述第二端口作为接收端,并利用所述发送端访问所述接收端;
或者,利用端口反向映射将所述移动服务端的第二端口映射到所述客户端的第一端口,使所述第二端口作为发送端以及所述第一端口作为接收端,并利用所述发送端访问所述接收端。
本实施例中,利用adbforward(端口映射)将本地pc指定port端口(即客户端的第一端口)映射到移动服务端的指定port端口(即移动服务端的第二端口)以解决客户端对移动服务端的访问问题,此时,可以客户端的第一端口作为发送端,从而可以任意访问移动服务端上的服务器。还可以利用adbreverse(即端口反向映射)将移动服务端的第二端口映射到客户端的第一端口,使客户端可以对第三方服务server服务器进行访问,adbreverse反向代理可以达到通过客户端访问第三方服务server服务器从而实现通信的效果。需要说明的是,不论是adbforward(端口映射),还是adbreverse(即端口反向映射),均是为了实现客户端和移动服务端的通信连接,二者(即adbforward和adbreverse)的差异只在于具体的实现方式,其最终产生的效果是相同的。
在一实施例中,所述设备信息包括移动服务端的界面大小,所述步骤s102包括:
所述客户端根据所述移动服务端的界面大小以及所述客户端的界面大小创建所述多媒体开发库窗口。
本实施例中,客户端在与移动服务端建立通信连接后,获取移动服务端的设备信息,该设备信息具体可以包括移动服务端的界面大小,还可以包括移动服务端的设备型号,以及移动服务端发送的编码视频的大小等。客户端根据移动服务端的界面大小以及自身的界面大小创建一个大小相匹配的多媒体开发库窗口(window)并保存该多媒体开发库窗口。在一具体实施例中,将多媒体开发库窗口的标题设置为device_name。
在一实施例中,所述步骤s103包括:
所述客户端利用视频编解码线程接收所述服务端发送的编码视频,并根据所述编码视频的大小在多媒体处理工具中创建窗口结构体;
通过所述多媒体处理工具对所述编码视频进行解码,得到所述解码视频。
本实施例中,客户端利用预先创建的视频编解码线程(例如videoencoder线程用于接受移动服务端发送的视频数据)接收编码视频,然后根据编码视频的大小在多媒体处理工具中创建对应的frame结构体(即窗口结构体),再利用多媒体处理工具(ffmpeg)对该编码视频进行解码,获取视频的原始数据。在一具体实施例中,移动服务端通过mediacodec(是一种android提供的用于对音视频进行编解码的类)对视频数据进行编码,得到编码视频。
在一实施例中,所述通过所述多媒体处理工具对所述编码视频进行解码,得到所述解码视频的步骤后,包括:
所述客户端调用推送指令将所述解码视频推送至多媒体开发库;
利用所述多媒体开发库启动预先创建的视频接收线程,以接收所述解码视频;
利用所述多媒体开发库为所述解码视频创建对应的上下文对象,并将所述解码视频发送至所述上下文对象。
本实施例中,客户端在通过ffmpeg对编码视频进行解码得到解码视频后,客户端会将该解码视频推送至多媒体开发库(sdl)中,由sdl完成对解码视频的显示。具体地,在sdl预先创建一个可以接收该解码视频的线程(即视频接收线程),该线程在启动时可以执行run_decoder方法,其中的decoder为传递的参数;然后为解码视频创建对应的context对象(即上下文对象)以接收该解码视频。在一具体实施例中,客户端通过push_frame(decoder)推送指令将解码视频推送至sdl中。在另一具体实施例中,根据h.264(高度压缩数字视频编解码器标准)创建对应的context对象以接收该解码视频。
在一实施例中,所述步骤s104包括:
利用所述多媒体开发库窗口创建纹理渲染器对象和纹理对象,并使所述多媒体开发库窗口基于所述纹理渲染器对象和纹理对象,在所述上下文对象中对所述解码视频进行数据填充和纹理更新,从而完成界面渲染并显示。
本实施例中,客户端在将解码视频推送至sdl中后,还需要sdl对解码视频进行渲染以显示,从而实现投屏。具体来说,sdl在创建的多媒体开发库窗口中会创建纹理渲染器对象sdl_renderer和纹理对象sdl_texture,然后根据创建的对象(即sdl_renderer和sdl_texture)对解码视频进行相应的数据填充和纹理更新,以达到渲染的效果,并在渲染完成后显示,进而实现投屏的目的。
图2为本发明实施例提供的一种投屏装置200的示意性框图,该投屏装置200包括:
通信连接单元201,用于建立客户端与移动服务端的通信连接;
窗口设置单元202,用于所述客户端获取所述移动服务端发送的设备信息,并根据所述设备信息设置对应的多媒体开发库窗口;
视频解码单元203,用于所述客户端获取所述服务端发送的编码视频,并对所述编码视频进行解码,得到解码视频;
渲染显示单元204,用于所述客户端基于所述多媒体开发库窗口对所述解码视频进行界面渲染并显示。
在一实施例中,所述通信连接单元201包括:
文件运行单元,用于所述客户端通过安卓调试桥命令将端口配置文件发送至所述移动服务端,并使所述移动服务端运行所述端口配置文件,从而建立所述客户端与所述移动服务端之间的socket通信连接。
在一实施例中,所述文件运行单元包括:
端口映射单元,用于利用端口映射将所述客户端的第一端口映射到所述移动服务端的第二端口,使所述第一端口作为发送端以及所述第二端口作为接收端,并利用所述发送端访问所述接收端;
端口反向映射单元,用于或者,利用端口反向映射将所述移动服务端的第二端口映射到所述客户端的第一端口,使所述第二端口作为发送端以及所述第一端口作为接收端,并利用所述发送端访问所述接收端。
在一实施例中,所述设备信息包括移动服务端的界面大小,所述窗口设置单元202包括:
界面创建单元,用于所述客户端根据所述移动服务端的界面大小以及所述客户端的界面大小创建所述多媒体开发库窗口。
在一实施例中,所述视频解码单元203包括:
结构体创建单元,用于所述客户端利用视频编解码线程接收所述服务端发送的编码视频,并根据所述编码视频的大小在多媒体处理工具中创建窗口结构体;
工具解码单元,用于通过所述多媒体处理工具对所述编码视频进行解码,得到所述解码视频。
在一实施例中,所述视频解码单元203后,包括:
视频推送单元,用于所述客户端调用推送指令将所述解码视频推送至多媒体开发库;
视频接收单元,用于利用所述多媒体开发库启动预先创建的视频接收线程,以接收所述解码视频;
上下文对象创建单元,用于利用所述多媒体开发库为所述解码视频创建对应的上下文对象,并将所述解码视频发送至所述上下文对象。
在一实施例中,所述渲染显示单元204包括:
填充更新单元,用于利用所述多媒体开发库窗口创建纹理渲染器对象和纹理对象,并使所述多媒体开发库窗口基于所述纹理渲染器对象和纹理对象,在所述上下文对象中对所述解码视频进行数据填充和纹理更新,从而完成界面渲染并显示。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
本发明实施例还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例还提供了一种计算机设备,可以包括存储器和处理器,存储器中存有计算机程序,处理器调用存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然计算机设备还可以包括各种网络接口,电源等组件。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
1.一种投屏方法,其特征在于,包括:
建立客户端与移动服务端的通信连接;
所述客户端获取所述移动服务端发送的设备信息,并根据所述设备信息设置对应的多媒体开发库窗口;
所述客户端获取所述服务端发送的编码视频,并对所述编码视频进行解码,得到解码视频;
所述客户端基于所述多媒体开发库窗口对所述解码视频进行界面渲染并显示。
2.根据权利要求1所述的投屏方法,其特征在于,所述建立客户端与移动服务端的通信连接,包括:
所述客户端通过安卓调试桥命令将端口配置文件发送至所述移动服务端,并使所述移动服务端运行所述端口配置文件,从而建立所述客户端与所述移动服务端之间的socket通信连接。
3.根据权利要求2所述的投屏方法,其特征在于,所述客户端通过安卓调试桥命令配置socket通信端口,并将端口配置文件发送至所述移动服务端,并使所述移动服务端运行所述端口配置文件,从而建立所述客户端与所述移动服务端之间的socket通信连接,包括:
利用端口映射将所述客户端的第一端口映射到所述移动服务端的第二端口,使所述第一端口作为发送端以及所述第二端口作为接收端,并利用所述发送端访问所述接收端;
或者,利用端口反向映射将所述移动服务端的第二端口映射到所述客户端的第一端口,使所述第二端口作为发送端以及所述第一端口作为接收端,并利用所述发送端访问所述接收端。
4.根据权利要求1所述的投屏方法,其特征在于,所述设备信息包括移动服务端的界面大小,所述客户端获取所述移动服务端发送的设备信息,并根据所述设备信息设置对应的多媒体开发库窗口,包括:
所述客户端根据所述移动服务端的界面大小以及所述客户端的界面大小创建所述多媒体开发库窗口。
5.根据权利要求1所述的投屏方法,其特征在于,所述客户端获取所述服务端发送的编码视频,并对所述编码视频进行解码,得到解码视频,包括:
所述客户端利用视频编解码线程接收所述服务端发送的编码视频,并根据所述编码视频的大小在多媒体处理工具中创建窗口结构体;
通过所述多媒体处理工具对所述编码视频进行解码,得到所述解码视频。
6.根据权利要求5所述的投屏方法,其特征在于,所述通过所述多媒体处理工具对所述编码视频进行解码,得到所述解码视频的步骤后,包括:
所述客户端调用推送指令将所述解码视频推送至多媒体开发库;
利用所述多媒体开发库启动预先创建的视频接收线程,以接收所述解码视频;
利用所述多媒体开发库为所述解码视频创建对应的上下文对象,并将所述解码视频发送至所述上下文对象。
7.根据权利要求1所述的投屏方法,其特征在于,所述客户端基于所述多媒体开发库窗口对所述解码视频进行界面渲染并显示,包括:
利用所述多媒体开发库窗口创建纹理渲染器对象和纹理对象,并使所述多媒体开发库窗口基于所述纹理渲染器对象和纹理对象,在所述上下文对象中对所述解码视频进行数据填充和纹理更新,从而完成界面渲染并显示。
8.一种投屏装置,其特征在于,包括:
通信连接单元,用于建立客户端与移动服务端的通信连接;
窗口设置单元,用于所述客户端获取所述移动服务端发送的设备信息,并根据所述设备信息设置对应的多媒体开发库窗口;
视频解码单元,用于所述客户端获取所述服务端发送的编码视频,并对所述编码视频进行解码,得到解码视频;
渲染显示单元,用于所述客户端基于所述多媒体开发库窗口对所述解码视频进行界面渲染并显示。
9.一种计算机设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述的投屏方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的投屏方法。
技术总结