一种云手机数据传输方法、装置及存储介质与流程

文档序号:19792102发布日期:2020-01-24 14:27阅读:197来源:国知局
一种云手机数据传输方法、装置及存储介质与流程

本发明涉及数据传输技术领域,尤其涉及一种云手机数据传输方法、装置及存储介质。



背景技术:

传统的方法通过单线程去截取云手机的屏幕rgb图像,然后将图像压缩成h264格式数据进行视频的传输。

使用传统的技术进行视频数据的传输,存在以下问题:将截图和图像压缩放在单一线程上将产生很大的时间代价,无法保证数据传输的实时性;现有的处理办法是将截图和图像压缩放在两个线程上去做,以此降低了处理时间,但是由于截图的时间复杂度远低于图像压缩的复杂度,存在压码线程刚刚压缩好一帧图像,然而截图线程已经截取了四五帧的图像到内存;这四五帧具有非常高的内容重合,于是这几帧的价值将很小,长时间于此会产生内存浪费甚至溢出的情况。



技术实现要素:

本发明实施例提供一种云手机数据传输方法、装置及存储介质,能够在降低处理时间的同时,优化系统的内存空间,从而能够有效地提高数据传输的效率。

一方面,本发明的一个实施例提供了一种云手机数据传输方法,包括:

根据截图线程获取framebuffer可读状态的视频帧数据,并将所述视频帧数据拷贝到预设的视频帧堆中;

将所述视频帧堆推入视频帧队列,并通过管道发送通知消息至压码线程;

所述压码线程接收到所述通知消息后,从所述视频帧队列中取出预设的视频帧堆对应的视频帧数据,并根据编码器对所述视频帧数据进行编码,生成待传输视频数据;

将所述预设的视频帧堆返还到所述视频帧队列中。

进一步地,在步骤“截图线程通过多路复用方法获取framebuffer可读状态的待传输视频数据,并将所述待传输视频数据拷贝到预设的视频帧堆中”,之前,还包括步骤:

framebuffer接收surfaceflinger传输至的视频帧数据,并通过驱动接口修改文件描述符为可读状态。

进一步地,所述“截图线程获取framebuffer可读状态的视频帧数据,并将所述视频帧数据拷贝到预设的视频帧堆中”,具体为:

截图线程通过多路复用的方式读取framebuffer的可读状态,并根据所述可读状态将所述framebuffer的视频帧数据拷贝到预设的视频帧堆中。

进一步地,所述根据编码器对所述视频帧数据进行编码,生成待传输视频数据,具体为:

根据x264或者vpu编码器对所述视频帧数据进行编码,生成h264数据格式的待传输视频数据。

另一方面,本发明的另一实施例提供了一种云手机数据传输装置,包括拷贝模块、通知模块、编码模块和返还模块;

所述拷贝模块,用于根据截图线程获取framebuffer可读状态的视频帧数据,并将所述视频帧数据拷贝到预设的视频帧堆中;

所述通知模块,用于将所述视频帧堆推入视频帧队列,并通过管道发送通知消息至压码线程;

所述编码模块,用于所述压码线程接收到所述通知消息后,从所述视频帧队列中取出预设的视频帧堆对应的视频帧数据,并根据编码器对所述视频帧数据进行编码,生成待传输视频数据;

所述返还模块,用于将所述预设的视频帧堆返还到所述视频帧队列中。

进一步地,还包括修改模块,所述修改模块,用于framebuffer在接收到surfaceflinger传输至的视频帧数据后,通过驱动接口修改文件描述符为可读状态。

进一步地,所述拷贝模块,具体为:

截图线程通过多路复用的方式读取framebuffer的可读状态,并根据所述可读状态将所述framebuffer的视频帧数据拷贝到预设的视频帧堆中。

进一步地,所述根据编码器对所述视频帧数据进行编码,生成待传输视频数据,具体为:

根据x264或者vpu编码器对所述视频帧数据进行编码,生成h264数据格式的待传输视频数据。

又一方面,本发明的又一实施例提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如上述发明实施例所述的云手机数据传输方法。

本发明实施例提供一种云手机数据传输方法、装置及存储介质,能够通过双线程对数据进行数据传输处理,在优先降低处理时间的同时,能够优化系统的内存空间,从而能够有效地提高数据传输的效率。

附图说明

图1是本发明提供的一种云手机数据传输方法的流程示意图;

图2是本发明提供的一种云手机数据传输装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参阅图1:

本发明的第一实施例。

本发明实施例提供了一种云手机数据传输方法,包括:

s1、根据截图线程获取framebuffer可读状态的视频帧数据,并将视频帧数据拷贝到预设的视频帧堆中;

s2、将视频帧堆推入视频帧队列,并通过管道发送通知消息至压码线程;

s3、压码线程接收到通知消息后,从视频帧队列中取出预设的视频帧堆对应的视频帧数据,并根据编码器对视频帧数据进行编码,生成待传输视频数据;

s4、将预设的视频帧堆返还到视频帧队列中。

在本发明实施例中,截图线程通过epoll获取framebuffer可读状态下的视频帧数据,当监测到有新的视频帧数据时,将监测到的视频帧数据拷贝到预设的视频帧堆中,并将预设的视频帧堆推入压码线程的视频帧队列中。由于频繁申请内存与释放内存将会产生较多的内存碎片,从而降低程序运行的性能。优选地,由于云手机对视频帧的时效性很高,因此没有必要申请过大的内存空间,本发明实施例优选地预先申请5帧的内存空间作为预设的视频帧堆。压码线程通过编码器对视频帧数据进行编码生成待传输视频数据,将待传输视频数据发送到客户端,并预设的视频帧堆返回视频帧队列中。本发明实施例通过截图线程获取视频帧数据,并通过压码线程将视频帧数据编码成用于发送至客户端的待传输视频数据,通过双线程实现云手机数据的传输,能够有效地降低处理的时间,从而提高数据传输的效率;在完成视频帧数据的编码后,将并预设的视频帧堆返回视频帧队列中,能够重复利用内存,避免出现内存碎片而降低系统的运行性能,从而进一步提高数据传输的效率。

作为本发明实施的一种具体实施方式,在步骤“截图线程通过多路复用方法获取framebuffer可读状态的待传输视频数据,并将待传输视频数据拷贝到预设的视频帧堆中”,之前,还包括步骤:

framebuffer接收surfaceflinger传输至的视频帧数据,并通过驱动接口修改文件描述符为可读状态。

在本发明实施例中,surfaceflinger通过驱动接口修改视频帧数据的文件描述符为可读状态,时截图线程通过多路复用的方式获取到到framebuffer的可读状态,从而将framebuffer的视频帧数据读取出来。

作为本发明实施的一种具体实施方式,“截图线程获取framebuffer可读状态的视频帧数据,并将视频帧数据拷贝到预设的视频帧堆中”,具体为:

截图线程通过多路复用的方式读取framebuffer的可读状态,并根据可读状态将framebuffer的视频帧数据拷贝到预设的视频帧堆中。

作为本发明实施的一种具体实施方式,根据编码器对视频帧数据进行编码,生成待传输视频数据,具体为:

根据x264或者vpu编码器对视频帧数据进行编码,生成h264数据格式的待传输视频数据。

在本发明实施例中,x264是一个开源的h.264/mpeg-4avc视频编码函数库,是最好的有损视频编码器之一,在技术上,h264数据格式的标准中有多个闪光之处,如统一的vlc符号编码,高精度、多模式的位移估计,基于4块的整数变换、分层的编码语法等。这些措施使得h264具有很高的编码效率,在相同的重建图像质量下,能够比h263节约50%左右的码率。h264的码流结构网络适应性强,增加了差错恢复能力,能够有效地地适应ip和无线网络的应用。

实施本发明实施例,具有如下有益效果:

本发明实施例通过截图线程获取视频帧数据,并通过压码线程将视频帧数据编码成用于发送至客户端的待传输视频数据,通过双线程实现云手机数据的传输,能够有效地降低处理的时间,从而提高数据传输的效率;在完成视频帧数据的编码后,将并预设的视频帧堆返回视频帧队列中,能够重复利用内存,避免出现内存碎片而降低系统的运行性能,从而进一步提高数据传输的效率。

请参阅图2:

本发明的第二实施例。

本发明实施例提供了一种云手机数据传输装置,包括拷贝模块、通知模块、编码模块和返还模块;

拷贝模块,用于根据截图线程获取framebuffer可读状态的视频帧数据,并将视频帧数据拷贝到预设的视频帧堆中;

通知模块,用于将视频帧堆推入视频帧队列,并通过管道发送通知消息至压码线程;

编码模块,用于压码线程接收到通知消息后,从视频帧队列中取出预设的视频帧堆对应的视频帧数据,并根据编码器对视频帧数据进行编码,生成待传输视频数据;

返还模块,用于将预设的视频帧堆返还到视频帧队列中。

在本发明实施例中,截图线程通过epoll获取framebuffer可读状态下的视频帧数据,当监测到有新的视频帧数据时,将监测到的视频帧数据拷贝到预设的视频帧堆中,并将预设的视频帧堆推入压码线程的视频帧队列中。由于频繁申请内存与释放内存将会产生较多的内存碎片,从而降低程序运行的性能。优选地,由于云手机对视频帧的时效性很高,因此没有必要申请过大的内存空间,本发明实施例优选地预先申请5帧的内存空间作为预设的视频帧堆。压码线程通过编码器对视频帧数据进行编码生成待传输视频数据,将待传输视频数据发送到客户端,并预设的视频帧堆返回视频帧队列中。本发明实施例通过截图线程获取视频帧数据,并通过压码线程将视频帧数据编码成用于发送至客户端的待传输视频数据,通过双线程实现云手机数据的传输,能够有效地降低处理的时间,从而提高数据传输的效率;在完成视频帧数据的编码后,将并预设的视频帧堆返回视频帧队列中,能够重复利用内存,避免出现内存碎片而降低系统的运行性能,从而进一步提高数据传输的效率。

作为本发明实施例的一种具体实施方式,还包括修改模块,修改模块,用于framebuffer在接收到surfaceflinger传输至的视频帧数据后,通过驱动接口修改文件描述符为可读状态。

在本发明实施例中,surfaceflinger通过驱动接口修改视频帧数据的文件描述符为可读状态,时截图线程通过多路复用的方式获取到到framebuffer的可读状态,从而将framebuffer的视频帧数据读取出来。

作为本发明实施例的一种具体实施方式,拷贝模块,具体为:

截图线程通过多路复用的方式读取framebuffer的可读状态,并根据可读状态将framebuffer的视频帧数据拷贝到预设的视频帧堆中。

作为本发明实施例的一种具体实施方式,根据编码器对视频帧数据进行编码,生成待传输视频数据,具体为:

根据x264或者vpu编码器对视频帧数据进行编码,生成h264数据格式的待传输视频数据。

在本发明实施例中,x264是一个开源的h.264/mpeg-4avc视频编码函数库,是最好的有损视频编码器之一,在技术上,h264数据格式的标准中有多个闪光之处,如统一的vlc符号编码,高精度、多模式的位移估计,基于4块的整数变换、分层的编码语法等。这些措施使得h264具有很高的编码效率,在相同的重建图像质量下,能够比h263节约50%左右的码率。h264的码流结构网络适应性强,增加了差错恢复能力,能够有效地地适应ip和无线网络的应用。

实施本发明实施例,具有如下有益效果:

本发明实施例通过截图线程获取视频帧数据,并通过压码线程将视频帧数据编码成用于发送至客户端的待传输视频数据,通过双线程实现云手机数据的传输,能够有效地降低处理的时间,从而提高数据传输的效率;在完成视频帧数据的编码后,将并预设的视频帧堆返回视频帧队列中,能够重复利用内存,避免出现内存碎片而降低系统的运行性能,从而进一步提高数据传输的效率。

又一方面,本发明的又一实施例提供了一种计算机可读存储介质,计算机可读存储介质包括存储的计算机程序,其中,在计算机程序运行时控制计算机可读存储介质所在设备执行如上述发明实施例的云手机数据传输方法。

需说明的是,以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1