移动终端及其录屏中的音视频丢帧方法、计算机存储介质与流程

文档序号:18544302发布日期:2019-08-27 21:31阅读:465来源:国知局
移动终端及其录屏中的音视频丢帧方法、计算机存储介质与流程

本申请涉及视频处理技术领域,特别是涉及一种移动终端及其录屏中的音视频丢帧方法、计算机存储介质。



背景技术:

ios(原名iphoneos,自ios4后改名为ios)是为一些移动设备所开发的专有移动操作系统,所支持的设备包括iphone、ipodtouch和ipad。

replaykit是ios对屏幕进行直播推出的框架,replaykit框架作用是从屏幕录制或流式传输视频,以及来自应用和麦克风的音频。使用replaykit框架,用户可以从屏幕录制视频,从应用程序和麦克风录制音频。

由于replaykit返回音视频数据时可能会出现终端设备性能不足或者网络带宽不足等情况,导致内存中的音视频数据无法得到及时的发送。



技术实现要素:

为解决上述问题,本申请提供了一种移动终端及其录屏中的音视频补帧方法、计算机存储介质,能够在终端设备性能不足或者网络带宽不足时丢弃部分音视频,从而保证内存中的音视频数据能够得到及时的发送。

本申请采用的一个技术方案是:提供一种录屏中的音视频丢帧方法,所述视频丢帧方法包括:获取录屏产生的音频帧和视频帧,并获取当时的终端性能和/或网络状态;判断所述终端性能和/或所述网络状态是否满足音视频传输条件;若否,则基于所述终端性能和/或所述网络状态按照预设规则丢弃所述音频帧和/或所述视频帧。

本申请采用的另一个技术方案是:提供一种移动终端,所述移动终端包括:获取模块,用于获取录屏产生的音频帧和视频帧,并获取当时的终端性能和/或网络状态;处理模块,用于判断终端性能和/或网络状态是否满足音视频传输条件;处理模块,还用于在所述终端性能和/或所述网络状态不满足所述音视频传输条件时,基于所述终端性能和/或所述网络状态按照预设规则丢弃音频帧和/或视频帧。

本申请采用的另一个技术方案是:提供一种移动终端,所述移动终端包括处理器、存储器以及显示屏;其中,所述显示屏用于显示画面,所述存储器用于存储程序数据,所述处理器用于执行所述程序数据以实现如上述的音视频丢帧方法。

本申请采用的另一个技术方案是:提供一种计算机存储介质,所述计算机存储介质中存储有程序数据,所述程序数据在被处理器执行时,用于实现如上述的音视频丢帧方法。

本申请提供的一种录屏中的音视频丢帧方法包括:移动终端获取录屏产生的音频帧和视频帧,并获取当时的终端性能和/或网络状态;判断终端性能和/或网络状态是否满足音视频传输条件;若否,则基于终端性能和/或网络状态按照预设规则丢弃音频帧和/或视频帧;在终端性能和/或网络状态无法满足实时完整接收所有音视频时,移动终端根据实时的终端性能和/或网络状态采取不同的丢帧逻辑将部分音视频帧丢弃,以使后续的音视频帧能够及时发送。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:

图1是本申请提供的录屏中的音视频丢帧方法第一实施例的流程示意图;

图2是本申请提供的录屏中的音视频丢帧方法第二实施例的流程示意图;

图3是本申请提供的录屏中的音视频丢帧方法第三实施例的流程示意图;

图4是本申请提供的录屏中的音视频丢帧方法第四实施例的流程示意图;

图5是本申请提供的移动终端一实施例的结构示意图;

图6是本申请提供的移动终端另一实施例的结构示意图;

图7是本申请提供的计算机存储介质一实施例的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。可以理解的是,此处所描述的具体实施例仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部结构。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。

在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。

参阅图1,图1是本申请提供的录屏中的音视频丢帧方法第一实施例的流程示意图。图1的音视频丢帧方法应用于一种具有音视频帧收发功能和处理功能的移动终端或者电子设备,其中,移动终端或者电子设备可以搭载ios操作系统。

本实施例的音视频丢帧方法包括:

步骤101:获取录屏产生的音频帧和视频帧,并获取当时的终端性能和/或网络状态。

在ios系统中,replaykit开发工具箱的数据返回主要包括音频帧和视频帧。

其中,音频帧包括rpsamplebuffertypeaudioapp,即app(application,应用程序)内部音频数据内容,以下简称app音频,和rpsamplebuffertypeaudioapp,即麦克风音频数据内容,以下简称mic音频。

其中,视频帧,即rpsamplebuffertypevideo,为裸视频帧数据内容。

可以理解的,replaykit框架是用于进行录屏的一个框架,在录屏的过程中,一方面有来自app的音频,如视频app、游戏app、音乐app等,另一方面又来自麦克风接收的音频,如用户说话。

可选的,初始化时分别创建app音频线程安全列表、mic音频线程安全列表和视频线程安全列表。在收到replaykit音频帧时,在各自的线程中将其插入线程安全列表,使得replaykit能够迅速返回,尽可能地做到不阻塞replaykit的线程。

可以理解的是,replaykit的线程只用于读取和写入应用音频、麦克风音频以及视频帧。

可以理解的,app音频、mic音频以及视频帧读取时,如果出现阻塞情况,则会导致音频停顿与跳跃问题,视频帧不连续与画面来回跳问题,所以应当确保不阻塞replaykit的线程。

可选的,在一实施例中,在接收到app音频时,插入至app音频线程安全列表;在接收到mic音频时,插入至mic音频线程安全列表;在接收到视频帧时,插入至视频线程安全列表。

具体地,在初始化时创建视频线程安全列表,在收到replaykit的视频帧时,在接收线程中将视频帧插入视频线程安全列表,使得replaykit能够迅速返回,尽可能地做到不阻塞replaykit的线程。

可以进一步理解的为,获取到录屏产生的应用音频、麦克风音频和视频帧,将录屏产生的应用音频和麦克风音频交给独立的第一线程,将录屏产生的视频帧交给独立的第二线程。

在获取上述音频帧和视频帧的同时,移动终端还可以检测自身的终端设备性能以及获取数据传输中网络状态等数据,从而判断音频帧和视频帧的传输过程是否正常,以确定内存中的音频帧和视频帧能否得到及时的发送。

步骤102:判断终端性能和/或网络状态是否满足音视频传输条件。

其中,终端性能可以由一个终端性能指标或多个终端性能指标组合评价。例如,终端性能指标可以包括cpu处理速度、内存运行速度、显卡性能等。同样地,网络状态也可以由一个网络性能指标或多个网络性能指标组合评价。例如,网络性能指标可以包括流量走向、网络速度大小、网络运营商、网络类型等。

音视频传输条件可以设置为终端性能的某个评价阈值,或者网络状态的某个评价阈值,或者终端性能和网络状态的某个综合评价阈值。

例如,音视频传输条件可以设置为终端cpu处理的某个速度阈值,当终端实时cpu处理速度小于该速度阈值,则说明移动终端的终端性能无法满足音视频传输条件,即无法做到及时发送内存中的音频帧和视频帧。

或者,音视频传输条件可以设置为某个网络速度阈值,当终端发送音频帧和视频帧的同时,检测并获取实时网络速度大小。若实时网络速度大小小于该网络速度阈值,则说明当时的网络环境无法满足音视频传输条件,即无法做到及时发送内存中的音频帧和视频帧。

或者,音视频传输条件还可以设置为cpu处理速度阈值和网络速度阈值的加权值,其中,加权值可以设置为50%cpu处理速度阈值和50%网络速度阈值。在其它实施例中,加权值的分配也可以基于技术人员的考虑进行调整,在此不再赘述。

当实时获取的终端性能和/或网络状态满足音视频传输条件时,移动终端继续进行音视频的录制;当实时获取的终端性能和/或网络状态无法满足音视频传输条件时,则进入步骤103。

步骤103:基于终端性能和/或网络状态按照预设规则丢弃音频帧和/或视频帧。

其中,对于终端性能和网络状态无法满足音视频传输条件的情况,移动终端按照不同的丢帧逻辑丢弃部分音频帧和/或视频帧。

具体地,由于终端性能无法满足音视频传输条件时,移动终端可以采用第一丢帧逻辑丢弃部分音视频帧;由于网络状态无法满足音视频传输条件时,移动终端可以采用第二丢帧逻辑丢弃部分或所有音视频帧。

在由于终端性能不足或网络状态不足的情况下,移动终端可以采用不同的丢帧逻辑,也可以采用相同的丢帧逻辑。进一步地,在相同的终端性能或网络状态下,对于音频帧和视频帧,移动终端也可以采用不同的丢帧逻辑,在此不再赘述。

在本实施例中,移动终端在获取录屏产生的音频帧和视频帧的同时,还获取当时的终端性能和/或网络状态;当终端性能和/或网络状态无法满足音视频传输条件时,移动终端基于终端性能和/或网络状态采用相同或不同的丢帧逻辑丢弃部分或所有音频帧和/或视频帧;通过丢弃部分或所有音频帧和/或视频帧,放弃部分录屏中产生的音频帧和/或视频帧,以使内存中的音频帧和/或视频帧能够得到及时的发送;使得程序占用的设备资源控制在合理范围内,也使得直播音视频延时保持在可控范围内。

对于图1所示实施例中的步骤102,本申请进一步提出了另一种具体的方法。具体请参阅图2,图2是本申请提供的录屏中的音视频丢帧方法第二实施例的流程示意图。

具体在上述步骤102中,终端性能可以由cpu处理速度、内存运行速度、显卡性能等性能指标评价。在本实施例中,终端性能也可以由cpu使用率和/或内存占用大小评价。其中,cpu使用率即移动终端运行的程序占用的cpu资源,表示终端在某个时间点的运行程序的情况。cpu使用率越高,说明终端在同一时刻运行了很多程序,会导致音视频传输的进程,因此,cpu使用率也是评价终端性能的一个重要指标。

为了提高终端性能的评价准确性,本实施例的音视频丢帧方法具体提出了以下方法:

步骤201:判断内存占用大小是否大于内存占用阈值。

其中,在获取上述音频帧和视频帧的同时,移动终端获取自身内存占用大小,即存储空间中已用于存放音频帧和视频帧的空间大小。

进一步地,移动终端获取预设的内存占用阈值,并将内存占用阈值与内存占用大小进行比较,以判断内存占用大小是否大于内存占用阈值;当内存占用大小大于内存占用阈值时,则说明终端的状态不满足音视频传输条件,进入步骤202。

具体地,在预设内存占用阈值时,内存占用阈值可以低于50m。由于replaykit属于ios系统的extension模块,最大允许内存为50m,500毫秒的裸视频数据需要的内存远远超过50m,因此,内存占用阈值应当低于50m,以免触及ios系统的extension模块的内存上线。

在其它实施例中,移动终端也可以获取自身的cpu使用率,即移动终端运行的程序占用的cpu资源。

进一步地,移动终端获取预设的cpu使用率阈值,并将cpu使用率阈值与cpu使用率进行比较,以判断cpu使用率是否大于cpu使用率阈值;当cpu使用率大于cpu使用率阈值时,则说明终端的状态不满足音视频传输条件,进入步骤202。

具体地,cpu使用率阈值也可以由技术人员基于具体情况进行定义。例如,extension模块或录屏的应用程序占用cpu超过40%设置为预警阈值,超过60%为紧急阈值,超过80为临界阈值等。

步骤202:基于视频帧的帧间间隔丢弃预设跨度的视频帧,其中,视频帧为编码前的裸视频帧。

其中,本实施例提出了一种丢帧逻辑,在其它实施例中也可以采用其它丢帧逻辑。

具体地,移动终端根据视频帧的帧间间隔丢弃预设跨度的视频帧,例如,每当移动终端接收到3帧视频帧时,移动终端丢弃其中的1帧视频帧。其中,预设跨度也可以相应调整,例如,移动终端可以每接收到5帧视频帧,丢弃其中的1帧视频帧。

其中,步骤202中丢弃的视频帧为编码前的裸视频帧,不需要丢弃编码后的视频帧。

对于音频帧而言,移动终端也可以采用步骤202的丢帧逻辑。其中,上述阈值设定与丢帧算法均可以与性能不足时的视频丢帧方式保持一致,也可以设置不同数值的阈值。但是,与视频帧不同的是,移动终端不能直接丢弃原始音频帧,需要丢弃app音频线程安全列表、mic音频线程安全列表中的音频帧。

在本实施例中,移动终端设备性能不足分为cpu性能不足与内存占用过高导致的剩余内存不足;移动终端可以基于这两种情况采用相同的丢帧逻辑丢弃录屏中产生的部分音频帧和/或视频帧,以使内存中的音频帧和/或视频帧能够得到及时的发送。

对于图1所示实施例中的步骤102,本申请进一步提出了另一种具体的方法。具体请参阅图3,图3是本申请提供的录屏中的音视频丢帧方法第三实施例的流程示意图。

具体在上述步骤102中,网络状态可以由流量走向、网络速度大小、网络运营商、网络类型等性能指标评价。在本实施例中,网络状态也可以由网络带宽大小评价。其中,带宽又叫频宽,指在固定的时间内可传输的资料数据,即在传输管道中可以传递数据的能力。因此,网络带宽大小也是评价网络状态的一个重要指标。

为了提高网络状态的评价准确性,本实施例的音视频丢帧方法具体提出了以下方法:

步骤301:判断网络带宽大小是否小于第一网络带宽阈值。

其中,在获取上述音频帧和视频帧的同时,移动终端获取实时网络带宽大小。

进一步地,移动终端获取预设的第一网络带宽阈值,并将第一网络带宽阈值与网络带宽大小进行比较,以判断网络带宽大小是否小于第一网络带宽阈值;当网络带宽大小小于第一网络带宽阈值时,则说明网络的状态不满足音视频传输条件,进入步骤302。

步骤302:判断网络带宽大小是否大于第二网络带宽阈值。

其中,移动终端进一步获取预设的第二网络带宽阈值,并将第二网络带宽阈值与网络带宽大小进行比较,以判断网络带宽大小是否大于第二网络带宽阈值。其中,第二网络带宽阈值小于第一网络带宽阈值。

若移动终端判断网络带宽大小大于第二网络带宽阈值,且小于第一网络带宽阈值,则说明移动终端连接的网络的状态处于预警状态,进入步骤303;若移动终端判断网络带宽大小小于第二网络带宽阈值,则说明移动终端连接的网络的状态处于紧急状态,进入步骤304。

步骤303:丢弃视频非关键帧。

其中,裸视频帧经过编码后插入视频线程安全列表,移动终端基于每帧视频帧的内容将编码后的视频帧分为视频非关键帧和视频关键帧。当移动终端连接的网络的状态处于预警状态时,移动终端一次性丢弃视频线程安全列表中的所有视频非关键帧。

步骤304:丢弃视频关键帧以及视频非关键帧。

其中,当移动终端连接的网络的状态处于紧急状态时,移动终端一次性丢弃视频线程安全列表中的所有视频非关键帧以及视频关键帧。

在本实施例中,移动终端基于连接的网络的状态采用不同的丢帧逻辑丢弃编码后的视频非关键帧和/或视频关键帧,以使内存中的视频帧能够得到及时的发送。

对于图1所示实施例中的步骤103之后,本申请进一步提出了另一种具体的方法。具体请参阅图4,图4是本申请提供的录屏中的音视频丢帧方法第四实施例的流程示意图。

具体在上述步骤103,移动终端基于终端性能和/或网络状态丢弃部分音频帧和/或视频帧。由于在录屏技术中,处理后的音频帧和视频帧需要进行音视频同步,此时,需要对音频帧和视频帧计算时间戳,最终进行音视频同步处理。

为了对丢帧处理后的音频帧和视频帧同步处理,本实施例的音视频丢帧方法具体提出了以下方法:

步骤401:设置音频计数器。

其中,移动终端设置音频计数器,音频计数器初始化为0,用于计算移动终端丢弃的音频帧的数量。

步骤402:当丢弃每一帧音频帧时,音频计数器加1。

其中,当移动终端丢弃每一帧音频帧时,音频计数器累加1。

步骤403:设置视频计数器。

其中,移动终端设置视频计数器,音频计数器初始化为0,用于计算移动终端丢弃的视频帧的数量。

步骤404:当丢弃每一帧视频帧时,视频计数器加1,以保持音频帧和视频帧同步。

其中,当移动终端丢弃每一帧音频帧时,音频计数器累加1。

在移动终端对音频帧和视频帧进行同步处理时,移动终端基于音频计数器的数值和视频计数器的数值计算时间戳,用以保持音视频同步。

在本实施例中,移动终端通过设置音频计数器和视频计数器,统计丢弃的音频帧和视频帧,并基于音频计数器的数值和视频计数器的数值计算时间戳,用以保持音视频同步。

为实现上述实施例的音视频丢帧方法,本申请还提供了一种移动终端,具体请参阅图5,图5是本申请提供的移动终端一实施例的结构示意图。

该移动终端50包括获取模块51以及处理模块52。

其中,获取模块51用于获取录屏产生的音频帧和视频帧,并获取当时的终端性能和/或网络状态。

处理模块52用于判断终端性能和/或网络状态是否满足音视频传输条件;还用于在所述终端性能和/或所述网络状态不满足所述音视频传输条件时,基于所述终端性能和/或所述网络状态按照预设规则丢弃音频帧和/或视频帧。

为实现上述实施例的音视频丢帧方法,本申请还提供了另一种移动终端,具体请参阅图6,图6是本申请提供的移动终端另一实施例的结构示意图。

该移动终端60包括处理器61、存储器62以及显示屏63。

该移动终端60可以是以ios为操作系统的终端,如手机、平板电脑、智能穿戴设备等等,其中,该显示屏63可以是液晶显示屏(lcd),也可以是有机发光二极管显示屏(oled),其用于显示视频画面,如移动终端60中app的操作界面,或者系统的操作界面。

存储器62中存储有程序数据,处理器61用于执行该程序数据以实现上述实施例的音视频丢帧方法。

请继续参阅图7,图7是本申请提供的计算机存储介质一实施例的结构示意图,该计算机存储介质70中存储有程序数据71,该程序数据71在被处理器执行时,用以实现上述实施例的音视频丢帧方法。

本申请的实施例以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

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