iOS端的低延迟视频渲染方法及装置制造方法及图纸

技术编号:32740600 阅读:12 留言:0更新日期:2022-03-20 08:47
本发明专利技术提供了一种iOS端的低延迟视频渲染方法、装置、电子设备及存储介质,涉及数据处理技术领域,所述渲染方法通过使用VideoToolbox对视频数据进行解码;自定义一个缓存队列,将所述解码后的视频数据存入所述自定义缓存队列;开启新的线程根据丢帧算法对所述解码后的视频数据进行渲染;本发明专利技术可以在云游戏场景下现有网络传输不稳定或者网络抖动的情况下,优化操作延迟问题并使帧数不大于60fps,降低操作延迟表现。作延迟表现。作延迟表现。

【技术实现步骤摘要】
iOS端的低延迟视频渲染方法及装置


[0001]本专利技术涉及数据处理领域,尤其涉及一种iOS端的低延迟视频渲染方法、装置、电子设备及存储介质。

技术介绍

[0002]iOS的视频播放或直播方案已经在业界存在多年的技术积累,现市面上关于视频播放渲染方案很多,但在云游戏场景下,要求低延迟性,即有操控反馈后需要尽快能看到反馈结果;但现有网络情况下在60fps场景下极易出现很明显的操作延迟表现(网络传输的不稳定性,视频包的到达时间不均匀),OpenGLES渲染超60fps导致的延迟。

技术实现思路

[0003]本专利技术的实施例提供了一种iOS端的低延迟视频渲染方法及装置,可以在云游戏场景下现有网络传输不稳定或者网络抖动的情况下,优化操作延迟问题并使帧数不大于60fps,降低操作延迟表现。
[0004]第一方面,本专利技术的实施例提供了一种iOS端的低延迟视频渲染方法,所述渲染方法包括:
[0005]使用VideoToolbox对视频数据进行解码;
[0006]将所述解码后的视频数据存入预先自定义的缓存队列;
[0007]开启新的线程根据丢帧算法对解码后的视频数据进行渲染。
[0008]可选地,所述缓存队列采用多读单写的策略保证数据在多线程下的完整性和准确性。
[0009]可选地,所述开启新的线程根据丢帧算法对解码后的视频数据进行渲染包括:
[0010]循环读取所述缓存队列;
[0011]再根据丢帧算法来判断读取到的解码后的视频数据是渲染还是丢弃。
[0012]可选地,若没有读取到解码后的视频数据,继续循环读取所述解码后的视频数据。
[0013]可选地,在读取所述缓存队列中的解码后的视频数据时设置sleep,降低CPU占用。
[0014]可选地,所述丢帧算法包括:
[0015]设置丢帧阀值;
[0016]读取所述渲染方法中的自定义缓存队列的长度,若所述缓存队列的长度大于所述阀值,将所述解码后的视频数据丢弃并删除当前缓存数据,若所述缓存队列的长度小于所述阀值,用OpenGLES渲染所述解码后的视频数据并以秒为单位计数。
[0017]可选地,针对低端机单独设置所述缓存队列阀值。
[0018]第二方面,本专利技术的实施例提供了一种iOS端的低延迟视频渲染装置,所述渲染装置包括:
[0019]解码模块,使用VideoToolbox对视频数据进行解码;
[0020]缓存模块,自定义一个缓存队列,将解码后的视频数据存入所述自定义缓存队列;
[0021]渲染模块,开启新的线程根据丢帧算法对所述解码后的视频数据进行渲染。
[0022]第三方面,本专利技术的实施例提供了一种电子设备,包括存储器和处理器,所述存储器上存储有计算机程序,所述处理器执行所述程序时实现如第一方面任一项所述的方法。
[0023]第四方面,本专利技术的实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面任一项所述的方法。
[0024]有益效果
[0025]本专利技术实施例提供了一种iOS端的低延迟视频渲染方法及装置,所述渲染方法通过使用VideoToolbox对视频数据进行解码;自定义一个缓存队列,将所述解码后的视频数据存入所述自定义缓存队列;开启新的线程根据丢帧算法对所述解码后的视频数据进行渲染;可以在云游戏场景下现有网络传输不稳定或者网络抖动的情况下,优化操作延迟问题并使帧数不大于60fps,降低操作延迟表现。
[0026]应当理解,
技术实现思路
部分中所描述的内容并非旨在限定本专利技术的实施例的关键或重要特征,亦非用于限制本专利技术的范围。本专利技术的其它特征将通过以下的描述变得容易理解。
附图说明
[0027]为了更清楚地说明本说明书一个或多个实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0028]图1示出了本专利技术的实施例的一种iOS端的低延迟视频渲染方法的流程图;
[0029]图2示出了本专利技术实施例的一种iOS端的低延迟视频渲染装置的结构示意图;
[0030]图3示出了本专利技术的实施例的一种渲染线程的流程图;
[0031]图4示出了本专利技术的实施例的一种丢帧策略的示意图;
[0032]图5示出了本专利技术实施例的一种电子设备的结构图。
具体实施方式
[0033]为了使本
的人员更好地理解本说明书一个或多个实施例中的技术方案,下面将结合本说明书一个或多个实施例中的附图,对本说明书一个或多个实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书一个或多个实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本文件的保护范围。
[0034]相关技术中,相关技术中,VideoToolbox,可直接访问硬件的编解码器。能够为视频提供压缩和解压缩的服务,同时也提供存储在CoreVideo像素缓冲区的图像进行格式的转换。
[0035]优点:利用GPU或者专用处理器对视频流进行编解码,不用大量占用CPU资源。性能高,很好的实时性。
[0036]缺点:低码率下通常质量低于软编。
[0037]VideoToolbox数据包括:
[0038]CVPixelBuffer是存储在内存中的一个未压缩的光栅图像Buffer,包括图像的宽度、高度等;
[0039]CMBlockBuffer是一个任意的Buffer,相当于Buffer中的Any.在管道中压缩视频的时候,会把它包装成CMBlockBuffer。相当于CMBlockBuffer代表着一个压缩的数据;
[0040]CMSampleBuffer可能是一个压缩的数据,也可能是一个未压缩的数据,取决于CMSampleBuffer里面是CMBlockBuffer(压缩后)还是CVPixelBuffer(未压缩)。
[0041]对于VideoToolbox,可以通过直接访问硬编解码器,将H.264文件或传输流转换为iOS上的CMSampleBuffer并解码成CVPixelBuffer,或将未压缩的CVPixelBuffer编码成CMSampleBuffe(将未编码的CMSampleBuffer(CVPixelBuffer)与已编码CMSampleBuffer(CMBlockBuffer)的相互转换)。
[0042]解码:把原始码流包装成CMSampleBuffer;
[0043]解码前的原始数据为H264码流,iOS可以使用NSInputStream读取H264文件;
[0044]H264有两种封装格式,一种为MP4格式,一本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种iOS端的低延迟视频渲染方法,其特征在于,所述渲染方法包括:使用VideoToolbox对视频数据进行解码;将解码后的视频数据存入预先自定义的缓存队列;开启新的线程根据丢帧算法对解码后的视频数据进行渲染。2.根据权利要求1所述的渲染方法,其特征在于,所述缓存队列采用多读单写的策略保证数据在多线程下的完整性和准确性。3.根据权利要求1所述的渲染方法,其特征在于,所述开启新的线程根据丢帧算法对解码后的视频数据进行渲染包括:循环读取所述缓存队列;再根据丢帧算法来判断读取到的解码后的视频数据是渲染还是丢弃。4.根据权利要求3所述的渲染方法,其特征在于,若没有读取到解码后的视频数据,继续循环读取所述解码后的视频数据。5.根据权利要求4所述的渲染方法,其特征在于,在读取所述缓存队列中的解码后的视频数据时设置sleep,降低CPU占用。6.根据权利要求3所述的渲染方法,其特征在于,所述丢帧算法包括:设置丢帧阀值;读取所述渲...

【专利技术属性】
技术研发人员:沙宗超贾宏伟郭建君
申请(专利权)人:北京蔚领时代科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1