一种基于IOS系统的录屏直播方法、装置、设备及存储介质与流程

文档序号:16404121发布日期:2018-12-25 20:19阅读:256来源:国知局
一种基于IOS系统的录屏直播方法、装置、设备及存储介质与流程

本申请涉及互联网技术,特别涉及一种基于ios系统的录屏直播方法、装置、设备及存储介质。

背景技术

录屏直播是目前直播行业常用的方式之一,录屏直播是主播客户端通过录制屏幕上显示的内容以制作直播视频流,并将所述直播视频流发送给服务端,以使服务端分发给对应观众客户端播放的过程。

但是在实际应用中发现,主播客户端使用基于ios系统的终端设备进行录屏直播时,对应的观众客户端出现卡顿的概率会更高,并且有时是该主播客户端对应的所有观众客户端同时出现卡顿现象。而ios系统是由苹果公司开发的移动操作系统,是目前主流的操作系统之一,如何解决上述基于ios系统进行录屏直播时出现的技术问题,是目前直播行业技术人员一直未攻克的难题。



技术实现要素:

有鉴于此,本申请提供一种基于ios系统的录屏直播方法、装置、设备及存储介质,旨在解决现有技术中,主播客户端使用基于ios系统的终端设备进行录屏直播时,对应的观众客户端出现卡顿概率高的技术问题。

具体地,本申请是通过如下技术方案实现的:

在本申请的第一方面,提供一种基于ios系统的录屏直播方法,所述方法包括步骤:

直播的录屏过程中,将录屏获得的图像帧存放在缓存区,并向服务端发送所述缓存区中的各帧图像帧;

若所述缓存区单位时间内获得的图像帧的数量少于预设值,重复向服务端发送缓存区中的部分图像帧,以使服务端在单位时间接收到的图像帧的数量符合预设条件。

在一些例子中,所述重复向服务端发送缓存区中的部分图像帧包括:所述缓存区中获取时间最晚的一帧图像帧。

在一些例子中,所述向服务端发送所述缓存区中的各帧图像帧,包括:

将缓存区中的图像帧按照获取时间的先后顺序以及预设的时间频率,逐一发送给服务端。

在一些例子中,所述方法还包括步骤:每次向服务端发送所述缓存区中的一帧图像帧后,判断所述缓存区中图像帧的数量,若数量大于1,释放缓存区中已发送给服务端的图像帧。

在一些例子中,所述若所述缓存区单位时间内获得的图像帧的数量少于预设值,重复向服务端发送缓存区中的部分图像帧,包括:

若所述缓存区中的图像帧的数量为1时,将所述图像帧发送给服务端后,保留所述图像帧;

在达到预设时间后,再次将所述图像帧发送给服务端。

在本申请的第二方面,提供一种基于ios系统的录屏直播方法,所述方法包括步骤:

接收主播客户端发送的录屏获得的图像帧,并将所述图像帧存放至缓存区;

若所述缓存区单位时间内获得的图像帧的数量少于预设值,重复向所述主播客户端对应的直播客户端发送所述缓存区中的部分图像帧,以使各对应的直播客户端在单位时间接收到的图像帧的数量符合预设条件。

在一些例子中,所述若所述缓存区单位时间内获得的图像帧的数量少于预设值,重复向所述主播客户端对应的直播客户端发送所述缓存区中的部分图像帧,包括:

若所述缓存区中的图像帧的数量大于1时,在所述图像帧发送给主播客户端对应的直播客户端后,释放所述图像帧;

若所述缓存区中的图像帧的数量为1时,在所述图像帧发送给主播客户端对应的直播客户端后,保留所述图像帧,并在达到预设时间后,再次将所述图像帧发送给主播客户端对应的直播客户端。

在本申请的第三方面,提供一种基于ios系统的录屏直播装置,所述装置包括:

缓存模块,用于直播的录屏过程中,将录屏获得的图像帧存放在缓存区;

处理模块,用于将所述缓存区中的各帧图像帧发送至服务端,若所述缓存区单位时间内获得的图像帧的数量少于预设值,重复向服务端发送缓存区中的部分图像帧,以使服务端在单位时间接收到的图像帧的数量符合预设条件。

在一些例子中,所述处理模块还用于:每次向服务端发送所述缓存区中的一帧图像帧后,判断所述缓存区中图像帧的数量,若数量大于1,释放缓存区中已发送给服务端的图像帧。

在一些例子中,所述若所述缓存区单位时间内获得的图像帧的数量少于预设值,重复向服务端发送缓存区中的部分图像帧时,所述处理模块具体用于:

若所述缓存区中的图像帧的数量为1时,将所述图像帧发送给服务端后,保留所述图像帧;

在达到预设时间后,再次将所述图像帧发送给服务端。

在本申请的第四方面,提供一种终端设备,包括:

处理器;用于存储所述处理器可执行指令的存储器;

其中,所述处理器被配置为执行如前述第一方面所述任意一项方法所述的操作。

在本申请的第五方面,提供一种存储介质,其上存储有程序,该程序被处理器执行如前述第一方面所述的任意一项方法的操作。

本申请针对基于ios系统的录屏直播,在录屏直播过程中,将录屏获得的图像帧先存放在缓存区内,并向服务端发送所述缓存区中的各帧图像帧;在检测到所述缓存区单位时间内获得的图像帧的数量少于预设值时,通过重复向服务端发送缓存区中的部分图像帧,使服务端在单位时间接收到的图像帧的数量符合预设条件,以解决传统技术中,主播客户端使用基于ios系统的终端设备进行录屏直播时,对应的观众客户端出现卡顿概率高的技术问题。并且本申请实施例提出的方法,尤其适用于解决基于ios系统的终端设备录屏直播时,因屏幕画面静止使得ios系统刷新频率降低,而造成录屏实际捕获的图像帧减少而遭到造成的观众客户端出现卡顿的问题。

附图说明

图1为一种录屏直播的示意图;

图2为本申请实施例示例性示出的一种基于ios系统的录屏直播方法的流程图;

图3为本申请实施例示例性示出的另一种基于ios系统的录屏直播方法的流程图;

图4为本申请实施例示例性示出的一种录屏直播的示意图;

图5为本申请实施例示例性示出的基于ios系统的录屏直播方法应用在与基于ios系统的终端设备相连的终端设备上的一个交互流程图;

图6为本申请实施例示例性示出的基于ios系统的录屏直播方法运用在服务端的流程图;

图7是本申请一示例性实施例示出的一种基于ios系统的录屏直播装置的结构示意图;

图8是本申请一示例性实施例示出的一种终端设备的硬件结构示意图。

具体实施方式

以下将结合附图所示的具体实施方式对本申请进行详细描述。但这些实施方式并不限制本申请,本领域的普通技术人员根据这些实施方式所做出的结构、方法、或功能上的变换均包含在本申请的保护范围内。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

录屏直播是目前直播行业常用的方式之一,尤其适用于游戏、软件教学等直播形式。参照图1,为录屏直播的场景示意图,第一观众客户端、第二观众客户端及主播客户端分别被安装在电子设备110、120及130上,主播客户端可以通过屏幕捕捉,以及配合调用摄像头录制视频、拍摄照片等其他方式制作直播数据,直播数据包括一帧帧图像帧及音频数据,然后通过网络将制作的直播数据发送给服务端100。服务端100用于提供直播的后台服务,例如保存各主播客户端与观众客户端的对应关系,进行直播数据的分发等,当第一观众客户端、第二观众客户端与主播客户端在同一直播间内,主播客户端就可以通过服务端将想要展示的直播数据分享给在同一直播间的第一观众客户端及第二观众客户端播放,以供第一观众客户端及第二观众客户端的用户观看。在本申请中与主播客户端在同一直播间的客户端被称为主播客户端对应的客户端。

但是在实际应用中发现,主播客户端使用基于ios系统的终端设备进行录屏直播时,对应的观众客户端出现卡顿的概率会更高,并且有时是该主播客户端对应的所有观众客户端同时出现卡顿现象。而ios系统是由苹果公司开发的移动操作系统,是目前主流的操作系统之一,如何解决上述基于ios系统进行录屏直播时出现的技术问题,是目前直播行业技术人员一直未攻克的难题。

申请人通过大量的实验及研究发现,造成主播客户端使用基于ios系统的终端设备进行录屏直播时,对应的观众客户端出现卡顿概率高的问题是如下原因造成的:ios系统为了节省设备的耗电量,存在一耗电保护机制,耗电保护机制规定:在屏幕画面静止(未检测到像素点的变化)的状态下,减少屏幕刷新率,以此减少耗电量。由于ios系统的上述耗电保护机制,以及通过录屏的方式捕获图像帧与屏幕刷新率相关,使得基于ios系统进行录屏直播时,若所在终端设备屏幕画面处于静止状态,主播客户端将无法捕获到规定帧率的图像帧,例如规定的帧率为24帧/秒,主播客户端可能1s实际捕获的图像帧会小于24,当主播客户端未捕获到规定帧率的图像帧时,经由服务端发送给观众客户端播放的视频流会出现视觉上的卡顿。

针对上述技术问题以及出现该技术问题的原因分析,本申请提出一种基于ios系统的录屏直播方案。参照图2,为本申请实施例示例性示出的一种基于ios系统的录屏直播方法的流程图,本申请实施例所述的方法可以运用在基于ios系统的终端设备上,所述终端设备可以是智能手机、平板电脑、pda(personaldigitalassistant,个人数字助理)等。终端设备上可以安装有应用程序,通过该应用程序可以实现录屏直播,所述应用程序可以是:互联网直播软件,一些例子中,互联网直播软件进行录屏直播时,可以被称为主播客户端。所述基于ios系统的录屏直播方法的部分步骤如下:

s210:直播的录屏过程中,将录屏获得的图像帧存放在缓存区。

所述录屏获得的图像帧指的是其中一部分内容或全部内容通过录屏的方式得到。一种常见的情况是:录屏获得的图像帧由录屏的方式得到的图像及摄像头采集的图像以画中画的形式合成,当然可能是其他形式,此处不一一赘述。

本申请实施例提出的缓存区可以使用队列的形式存放缓存的图像帧。在一些例子中,该缓存区可以包括至少一个队列,一些例子中,一些缓存区可以包括多个队列。

s220:向服务端发送所述缓存区中的各帧图像帧。

在一些例子中,具体可以是:将缓存区中的图像帧按照获取时间的先后顺序以及预设的时间频率,逐一发送给服务端。在一些例子中,所述预设的时间频率可以是:40毫秒,当然所述时间频率还可以依据直播数据的帧率确定。一些例子中,步骤s210及s220可以是:直播的录屏过程中,每通过录屏获取一帧图像帧后,将该图像帧存放在缓存区,并按照预设时间频率将该图像帧发送至服务端。

s230:若所述缓存区单位时间内获得的图像帧的数量少于预设值,重复向服务端发送缓存区中的部分图像帧,以使服务端在单位时间接收到的图像帧的数量符合预设条件。

本步骤中,“所述缓存区单位时间内获得的图像帧的数量少于预设值”可以是表征录屏画面静止持续时间超过一定值。正常情况下,单位时间内(如每秒)录屏获取的图像帧的数量与直播数据的帧率相匹配,例如1秒24帧,当每秒获取的图像帧少于24帧时,说明存在录屏画面静止问题,且该静止持续时间超过1/24秒,在该条件下,若不进行处理,对应的客户端播放直播数据时会出现视觉上的卡顿。

在一些例子中,本步骤提出的重复向服务端发送缓存区中的部分图像帧可以包括:所述缓存区中获取时间最晚的一帧图像帧。例如:判断所述缓存区单位时间内获得的图像帧的数量是否少于预设值的时刻,缓存区缓存有两帧图像帧,即图像帧a和图像帧b,且图像帧b存放至缓存区的时间晚于图像帧a,那么可以将图像帧b重复发送至服务端,以使服务端在单位时间接收到的图像帧的数量符合预设条件。

本申请实施例提出的预设条件也可以与直播数据的帧率相匹配。例如:直播数据的帧率为每秒24帧,那么预设条件可以是服务端每秒接收到24帧图像帧,才能保证对应的客户端播放该直播数据时,不会因为缺帧而产生视觉上的卡顿。

参照图1,以一个具体的例子进行说明,主播客户端运行在基于ios系统的终端设备130上,主播客户端用户采用录屏直播后,主播客户端通过录屏的方式抓取电子设备屏幕上展示的图像,得到录屏获得的图像帧,每获得一帧图像帧,将所述图像帧存放至缓存区,并从缓存区将一帧帧图像帧发送至服务端100,以使服务端100将所述图像帧发送至与所述主播客户端相对应的客户端(如第一观众客户端及第二观众客户端)进行播放。并且在所述缓冲区初始化的同时会开启一个子线程,该子线程会执行一个任务:不断轮询该缓冲区统计所述缓存区单位时间内获得的图像帧的数量,若缓存区单位时间内获得的图像帧的数量少于预设值,则重复向服务端发送缓存区中的部分图像帧,例如预设值是每秒获得的图像帧的数量为24帧,而目前1s只获得22帧图像帧,则重复发送两帧已发送给服务器的图像帧(这两帧重复发送的图像帧可以相同也不可以不同),使得服务端1s内接收到的图像帧的数量为24,即服务端在单位时间接收到的图像帧的数量符合预设条件。若缓存区单位时间内获得的图像帧的数量不少于预设值,则可以执行释放已发送给服务器的图像帧的操作,并继续轮询缓存区。

至此,图2所述的方法针对基于ios系统的录屏直播,在录屏直播过程中,将录屏获得的图像帧先存放在缓存区内,并向服务端发送所述缓存区中的各帧图像帧;在检测到所述缓存区单位时间内获得的图像帧的数量少于预设值时,通过重复向服务端发送缓存区中的部分图像帧,使服务端在单位时间接收到的图像帧的数量符合预设条件,以解决传统技术中,主播客户端使用基于ios系统的终端设备进行录屏直播时,对应的观众客户端出现卡顿概率高的技术问题。并且本申请实施例提出的方法,尤其适用于解决基于ios系统的终端设备录屏直播时的屏幕画面静止,因屏幕画面静止使得ios系统刷新频率降低,而造成录屏实际捕获的图像帧减少而遭到造成的观众客户端出现卡顿的问题。

进一步,在一些例子中,每次向服务端发送所述缓存区中的一帧图像帧后,判断所述缓存区中图像帧的数量,例如利用子线程轮询缓存区,统计缓存区缓存的图像帧的数量,若数量大于1,释放缓存区中已发送给服务端的图像帧。以降低缓存区的内存占用。一个具体的例子中,例如将图像帧a发送给服务端后,缓存区还有两个图像帧,一个图像帧a,另一个图像帧b,其中图像帧b获取时间晚于图像帧a,且并未发送给服务端,那么释放所述图像帧a。

参照图3,为本申请实施例示例性示出的另一基于ios系统的录屏直播方法的流程图,所述方法包括步骤:

s310:直播的录屏过程中,将录屏获得的图像帧存放在缓存区。

本步骤的具体实现方式可以参照图2的步骤s210,此处不再赘述。

s311:向服务端发送所述缓存区中的各帧图像帧。

本步骤的具体实现方式可以参照图2的步骤s220,此处不再赘述。

s320:每次向服务端发送所述缓存区中的一帧图像帧后,判断所述缓存区中图像帧的数量。

本步骤中,可以是在缓存区运行一子线程,在每次向服务端发送所述缓存区中的一帧图像帧后轮询该缓冲区,判断所述缓存区中图像帧的数量。

s330:若数量大于1,释放缓存区中已发送给服务端的图像帧。

s340:若所述缓存区中的图像帧的数量为1时,将所述图像帧发送给服务端后,保留所述图像帧;在达到预设时间后,再次将所述保留的图像帧发送给服务端。

一个具体的例子中,本步骤可以是:当缓冲区的图像帧只有一个时,把该图像帧发送给服务端,并将该图像帧继续保留在缓冲区中,同时开启一个子线程,该子线程设置睡眠机制,确定睡眠时间(相当于预设时间),该睡眠时间可以根据帧率确定,例如当帧率为24帧(一秒播放24帧图像帧)时,睡眠时间可以是40毫秒,具体计算睡眠时间的方式可以是:用1秒除以帧率,根据得到的数据值,确定睡眠时间,例如1秒/24帧约为40毫秒/帧,所以当帧率为24时,睡眠时间可以是40毫秒,按照该睡眠时间发送图像帧可保证对应观众客户端播放视频不卡顿。其中,所述睡眠时间与上述的预设频率可以相同或相对应。当子线程睡眠机制结束后,将该图像帧发送给服务端。

执行完步骤s330或s340,可以继续接着执行步骤s320,根据判断结果选择执行步骤s330或s340,若缓存区中的图像帧的数量持续为1,则不断重复将该保留的图像帧发送给服务端,以使服务端在单位时间接收到的图像帧的数量符合预设条件,不让对应的客户端因为缺少图像帧而出现卡顿问题。

图2及图3所述的方法除了可以应用在基于ios系统的终端设备上,还可以运用与基于ios系统的终端设备相连的终端设备上,该终端设备上可以安装有应用程序,通过该应用程序可以实现录屏直播,所述应用程序可以是:互联网直播软件。参照图4,为本申请实施例示例性示出的录屏直播的场景示意图。基于ios系统的终端设备410上运行投屏客户端411,所述投屏客户端411用于捕获终端设备410屏幕的画面,与所述终端设备410通过网络连接的终端设备420上运行主播客户端412,所述终端设备420通过网络与服务端400相连,服务端400与运行有直播客户端的终端设备430及440相连,其中,终端设备430及440上运行的直播客户端与主播客户端412在同一直播间内。结合图5,基于ios系统的录屏直播方法应用在与基于ios系统的终端设备相连的终端设备上的一个交互流程图。部分步骤如下:

s510:投屏客户端411通过录屏方式获取的图像;

s520:将所述图像发送给所述主播客户端412;

s530:主播客户端412将所述投屏客户端411发送的图像处理后,得到录屏获得的图像帧,并将获得的图像帧存放在缓存区;

s540:主播客户端412向服务端400发送所述缓存区中的各帧图像帧;

s550:若所述缓存区单位时间内获得的图像帧的数量少于预设值,主播客户端412重复向服务端400发送缓存区中的部分图像帧,以使服务端400在单位时间接收到的图像帧的数量符合预设条件。

图5各步骤的具体实现可以参照前述图2及图3对应的具体实施例,此处不再赘述。

在一些例子中,前述基于ios系统的录屏直播方法还可以由服务端执行,参照图6,主播客户端在直播的录屏过程中,将录屏获得的图像帧发送至服务端(s610);

s620:服务端接收所述图像帧并存放至一缓存区;

s630:若所述缓存区单位时间内获得的图像帧的数量少于预设值,重复向所述主播客户端对应的直播客户端发送缓存区中的部分图像帧,以使各对应的直播客户端在单位时间接收到的图像帧的数量符合预设条件。

图6各步骤的具体实现可以参照前述图2及图3对应的具体实施例,此处不再赘述。

此外,各个步骤的描述,可以实现为软件、硬件或者其结合的形式,例如,本领域技术人员可以将其实现为软件代码的形式,可以为能够实现所述步骤对应的逻辑功能的计算机可执行指令。当其以软件的方式实现时,所述的可执行指令可以存储在存储器中,并被设备中的处理器执行。

与前述基于ios系统的录屏直播方法的实施例相对应,本申请还提供了基于ios系统的录屏直播装置及图像设备的实施例。

参见图7,为本申请一种基于ios系统的录屏直播装置700的一个实施例框图,该装置包括:

缓存模块710,用于直播的录屏过程中,将录屏获得的图像帧存放在缓存区;

处理模块720,用于将所述缓存区中的各帧图像帧发送至服务端,若所述缓存区单位时间内获得的图像帧的数量少于预设值,重复向服务端发送缓存区中的部分图像帧,以使服务端在单位时间接收到的图像帧的数量符合预设条件。

在一些例子中,所述重复向服务端发送缓存区中的部分图像帧包括:所述缓存区中获取时间最晚的一帧图像帧。

在一些例子中,所述处理模块720用于将所述缓存区中的各帧图像帧发送至服务端时,具体用于:

将缓存区中的图像帧按照获取时间的先后顺序以及预设的时间频率,逐一发送给服务端。

在一些例子中,所述处理模块720还用于:每次向服务端发送所述缓存区中的一帧图像帧后,判断所述缓存区中图像帧的数量,若数量大于1,释放缓存区中已发送给服务端的图像帧。

在一些例子中,所述处理模块720用于所述若所述缓存区单位时间内获得的图像帧的数量少于预设值,重复向服务端发送缓存区中的部分图像帧时,具体用于:

若所述缓存区中的图像帧的数量为1时,将所述图像帧发送给服务端后,保留所述图像帧;

在达到预设时间后,再次将所述图像帧发送给服务端。

参见图8所示,对应于上述方法,本申请同时提供一种终端设备。如图8所示,该设备可以包括处理器801以及机器可读存储介质802,其中,处理器801和机器可读存储介质802通常借由内部总线803相互连接。在其他可能的实现方式中,所述设备还可能包括外部接口804,以能够与其他设备或者部件进行通信。进一步地,机器可读存储介质802上存储有基于ios系统的录屏直播的控制逻辑805,该控制逻辑805从功能上划分的逻辑模块,可以是图7所示的基于ios系统的录屏直播装置的结构。所述处理器801用于执行如下步骤:

直播的录屏过程中,将录屏获得的图像帧存放在缓存区,并向服务端发送所述缓存区中的各帧图像帧;

若所述缓存区单位时间内获得的图像帧的数量少于预设值,重复向服务端发送缓存区中的部分图像帧,以使服务端在单位时间接收到的图像帧的数量符合预设条件。

在一些例子中,所述重复向服务端发送缓存区中的部分图像帧包括:所述缓存区中获取时间最晚的一帧图像帧。

在一些例子中,所述向服务端发送所述缓存区中的各帧图像帧,包括:

将缓存区中的图像帧按照获取时间的先后顺序以及预设的时间频率,逐一发送给服务端。

在一些例子中,所述处理器801还用于执行:每次向服务端发送所述缓存区中的一帧图像帧后,判断所述缓存区中图像帧的数量,若数量大于1,释放缓存区中已发送给服务端的图像帧。

在一些例子中,所述若所述缓存区单位时间内获得的图像帧的数量少于预设值,重复向服务端发送缓存区中的部分图像帧,包括:

若所述缓存区中的图像帧的数量为1时,将所述图像帧发送给服务端后,保留所述图像帧;

在达到预设时间后,再次将所述图像帧发送给服务端。

图8所述的机器可读存储介质802可以是:ram(radomaccessmemory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

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