CN114205662B - iOS端的低延迟视频渲染方法及装置 - Google Patents

iOS端的低延迟视频渲染方法及装置 Download PDF

Info

Publication number
CN114205662B
CN114205662B CN202111513998.1A CN202111513998A CN114205662B CN 114205662 B CN114205662 B CN 114205662B CN 202111513998 A CN202111513998 A CN 202111513998A CN 114205662 B CN114205662 B CN 114205662B
Authority
CN
China
Prior art keywords
video data
decoded video
read
rendering
frame loss
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202111513998.1A
Other languages
English (en)
Other versions
CN114205662A (zh
Inventor
沙宗超
贾宏伟
郭建君
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Weiling Times Technology Co Ltd
Original Assignee
Beijing Weiling Times Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Weiling Times Technology Co Ltd filed Critical Beijing Weiling Times Technology Co Ltd
Priority to CN202111513998.1A priority Critical patent/CN114205662B/zh
Publication of CN114205662A publication Critical patent/CN114205662A/zh
Application granted granted Critical
Publication of CN114205662B publication Critical patent/CN114205662B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/433Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • H04N21/4331Caching operations, e.g. of an advertisement for later insertion during playback
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44012Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving rendering scenes according to scene graphs, e.g. MPEG-4 scene graphs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • H04N21/440218Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/478Supplemental services, e.g. displaying phone caller identification, shopping application
    • H04N21/4781Games
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

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

Description

iOS端的低延迟视频渲染方法及装置
技术领域
本发明涉及数据处理领域,尤其涉及一种iOS端的低延迟视频渲染方法、装置、电子设备及存储介质。
背景技术
iOS的视频播放或直播方案已经在业界存在多年的技术积累,现市面上关于视频播放渲染方案很多,但在云游戏场景下,要求低延迟性,即有操控反馈后需要尽快能看到反馈结果;但现有网络情况下在60fps场景下极易出现很明显的操作延迟表现(网络传输的不稳定性,视频包的到达时间不均匀),OpenGLES渲染超60fps导致的延迟。
发明内容
本发明的实施例提供了一种iOS端的低延迟视频渲染方法及装置,可以在云游戏场景下现有网络传输不稳定或者网络抖动的情况下,优化操作延迟问题并使帧数不大于60fps,降低操作延迟表现。
第一方面,本发明的实施例提供了一种iOS端的低延迟视频渲染方法,所述渲染方法包括:
使用VideoToolbox对视频数据进行解码;
将所述解码后的视频数据存入预先自定义的缓存队列;
开启新的线程根据丢帧算法对解码后的视频数据进行渲染。
可选地,所述缓存队列采用多读单写的策略保证数据在多线程下的完整性和准确性。
可选地,所述开启新的线程根据丢帧算法对解码后的视频数据进行渲染包括:
循环读取所述缓存队列;
再根据丢帧算法来判断读取到的解码后的视频数据是渲染还是丢弃。
可选地,若没有读取到解码后的视频数据,继续循环读取所述解码后的视频数据。
可选地,在读取所述缓存队列中的解码后的视频数据时设置sleep,降低CPU占用。
可选地,所述丢帧算法包括:
设置丢帧阀值;
读取所述渲染方法中的自定义缓存队列的长度,若所述缓存队列的长度大于所述阀值,将所述解码后的视频数据丢弃并删除当前缓存数据,若所述缓存队列的长度小于所述阀值,用OpenGLES渲染所述解码后的视频数据并以秒为单位计数。
可选地,针对低端机单独设置所述缓存队列阀值。
第二方面,本发明的实施例提供了一种iOS端的低延迟视频渲染装置,所述渲染装置包括:
解码模块,使用VideoToolbox对视频数据进行解码;
缓存模块,自定义一个缓存队列,将解码后的视频数据存入所述自定义缓存队列;
渲染模块,开启新的线程根据丢帧算法对所述解码后的视频数据进行渲染。
第三方面,本发明的实施例提供了一种电子设备,包括存储器和处理器,所述存储器上存储有计算机程序,所述处理器执行所述程序时实现如第一方面任一项所述的方法。
第四方面,本发明的实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面任一项所述的方法。
有益效果
本发明实施例提供了一种iOS端的低延迟视频渲染方法及装置,所述渲染方法通过使用VideoToolbox对视频数据进行解码;自定义一个缓存队列,将所述解码后的视频数据存入所述自定义缓存队列;开启新的线程根据丢帧算法对所述解码后的视频数据进行渲染;可以在云游戏场景下现有网络传输不稳定或者网络抖动的情况下,优化操作延迟问题并使帧数不大于60fps,降低操作延迟表现。
应当理解,发明内容部分中所描述的内容并非旨在限定本发明的实施例的关键或重要特征,亦非用于限制本发明的范围。本发明的其它特征将通过以下的描述变得容易理解。
附图说明
为了更清楚地说明本说明书一个或多个实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1示出了本发明的实施例的一种iOS端的低延迟视频渲染方法的流程图;
图2示出了本发明实施例的一种iOS端的低延迟视频渲染装置的结构示意图;
图3示出了本发明的实施例的一种渲染线程的流程图;
图4示出了本发明的实施例的一种丢帧策略的示意图;
图5示出了本发明实施例的一种电子设备的结构图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书一个或多个实施例中的技术方案,下面将结合本说明书一个或多个实施例中的附图,对本说明书一个或多个实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书一个或多个实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本文件的保护范围。
相关技术中,相关技术中,VideoToolbox,可直接访问硬件的编解码器。能够为视频提供压缩和解压缩的服务,同时也提供存储在CoreVideo像素缓冲区的图像进行格式的转换。
优点:利用GPU或者专用处理器对视频流进行编解码,不用大量占用CPU资源。性能高,很好的实时性。
缺点:低码率下通常质量低于软编。
VideoToolbox数据包括:
CVPixelBuffer是存储在内存中的一个未压缩的光栅图像Buffer,包括图像的宽度、高度等;
CMBlockBuffer是一个任意的Buffer,相当于Buffer中的Any.在管道中压缩视频的时候,会把它包装成CMBlockBuffer。相当于CMBlockBuffer代表着一个压缩的数据;
CMSampleBuffer可能是一个压缩的数据,也可能是一个未压缩的数据,取决于CMSampleBuffer里面是CMBlockBuffer(压缩后)还是CVPixelBuffer(未压缩)。
对于VideoToolbox,可以通过直接访问硬编解码器,将H.264文件或传输流转换为iOS上的CMSampleBuffer并解码成CVPixelBuffer,或将未压缩的CVPixelBuffer编码成CMSampleBuffe(将未编码的CMSampleBuffer(CVPixelBuffer)与已编码CMSampleBuffer(CMBlockBuffer)的相互转换)。
解码:把原始码流包装成CMSampleBuffer;
解码前的原始数据为H264码流,iOS可以使用NSInputStream读取H264文件;
H264有两种封装格式,一种为MP4格式,一种是annexb格式。MP4格式是以NALU的长度分割;annexb格式是以0x00000001或0x0000000001分割;
VideoToolbox解码使用的H264为MP4格式,因此需要替换NALU的Header;
使用CMVideoFormatDescriptionCreateFromH264ParameterSets将SPS和PPS封装成CMVideoFormatDescription;
修改NALU的Header;
NALU只要有两种格式:AnnexB和AVCC。AnnexB格式以0x 00 00 01或0x 00 00 0001开头,AVCC格式以所在NALU的长度开头;
替换掉NALU的StartCode;
使用CMBlockBufferCreateWithMemoryBlock接口将NALUunit封装成CMBlockBuffer;
通过CMSampleBufferCreate将CMBlockBuffer+CMVideoFormatDescription+CMTime创建成CMSampleBuffer。
解码流程:使用VTDecompressionSessionCreate创建解码会话;
使用VTSessionSetProperty设置会话设置;
使用VTDecompressionSessionDecodeFrame编码视频帧,在之前设置的回调函数中获取编码后的结果;
回调函数返回数据;
使用VTCompressionSessionCompleteFrames强制结束并完成编码;
编码完成后使用VTCompressionSessionInvalidate结束编码,并释放内存。
OpenGLES:opengl是一个跨平台(不同的GPU类型,如电脑端NVIDIA,Intel,AMD的显卡,手机端PowerVR(苹果系列),Adreno(高通,安卓系列)等等)、跨编程语言(各个编程语言java,C,OC,js等等都有opengl的接口)的图形图像处理接口,opengl本身只是一组api接口规范,具体的实现一般是由具体的显卡(GPU)设备生产商编码实现的,比如苹果手机是由apple实现的,Linux系统则是由各个显卡生产商通过驱动程序导入的。
opengles是opengl的一个子集,是专门用来针对手机,平板电脑等嵌入式设备的图形图像处理接口,接口设计中不涉及上下文环境和窗口的管理,这由各个平台自行实现;比如ios就是EAGL,安卓就是EGL。
opengles的工作流程:opengles接收API的输入,通过API设定顶点的信息(一般包括顶点坐标,纹理坐标,颜色,变换矩阵等等),一般由顶点着色器接收这些信息作为输入;
顶点着色器处理顶点坐标,前一阶段的输入将在VS中进行运算,以得到最终的顶点坐标;
图元装配,将顶点着色器计算出的最终顶点坐标进行图元装配,构建出最终想要渲染的图形。所有要渲染的图形都可以由三个基本的图元(点、线、三角形)组成,比如正方形或者长方形,就可以由两个三角形组成,圆形可以由无数个三角形组成,只是三角形的数量越多,圆形看上去越圆润;
光栅化,通过计算,将要渲染的图形上所有的像素点找到,并根据插值或者其他方式计算出其颜色等信息的过程;
片元着色器计算像素颜色,光栅化得到了要渲染图形的所有像素的信息,这些信息作为片元着色器的输入,那么在片元着色器中将计算像素颜色;
像素处理,片元着色器计算的像素颜色还不是最终要渲染的颜色,这一步骤还包括AlphaTest、Depth/StencilTest、Blend、Dither等几个步骤,经过这几个步骤后得到的就是最终的渲染颜色。
下面以具体的实施例对本发明进行说明,需要说明的是,本申请实施例描述的仅仅是为了更加清楚的说明本申请实施例的技术方案,并不构成对本申请实施例提供的技术方案的限定。
图1示出了本发明的实施例的一种iOS端的低延迟视频渲染方法的流程图。参见图1,所述渲染方法包括:
S20、使用VideoToolbox对视频数据进行解码;
具体地,使用VideoToolbox对视频数据进行解码时的总体思想是将FFmpegparse到的数据装到CMBlockBuffer中,将extradata分离出的vps,sps,pps装到CMVideoFormatDesc中,将计算好的时间戳装到CMTime中,最后拼成完成的CMSampleBuffer以用来提供给解码器。
解码的步骤包括:
创建formatcontext:avformat_alloc_context;
打开文件流:avformat_open_input;
寻找流信息:avformat_find_stream_info;
获取音视频流的索引值:
formatContext->streams[i]->codecpar->codec_type==(isVideoStream?AVMEDIA_TYPE_VIDEO:AVMEDIA_TYPE_AUDIO);
获取音视频流:m_formatContext->streams[m_audioStreamIndex];
解析音视频数据帧:av_read_frame;
获取extradata:av_bitstream_filter_filter;
比较上一次的extradata,如果数据更新需要重新创建解码器;
分离并保存FFmpegparse到的extradata中分离vps,sps,pps等关键信息(比较NALU头)通过CMVideoFormatDescriptionCreateFromH264ParameterSets,CMVideoFormatDescriptionCreateFromHEVCParameterSets装载vps,sps,pps等NALUheader信息;
指定解码器回调函数与解码后视频数据类型(yuv,RGB...);
创建解码器VTDecompressionSessionCreate;
生成CMBlockBufferRef装载解码前数据,再将其转为CMSampleBufferRef以提供给解码器;
开始解码VTDecompressionSessionDecodeFrame;
在回调函数中CVImageBufferRef即为解码后的数据,转为CMSampleBufferRef传出;
S40、自定义一个缓存队列,将所述解码后的视频数据存入所述自定义缓存队列;
具体地,自定义数据缓存队列,用来将解码完成的视频数据放到缓存队列中,缓存队列采用多读单写的策略以保证数据在多线程下的完整性和准确性;所述多读单写策略即在一个入口写入视频流数据,循环读取该队列数据。
S60、开启新的线程根据丢帧算法对所述解码后的视频数据进行渲染;
本发明实施例提供了一种iOS端的低延迟视频渲染方法,所述渲染方法通过使用VideoToolbox对视频数据进行解码;自定义一个缓存队列,将所述解码后的视频数据存入所述自定义缓存队列;开启新的线程根据丢帧算法对所述解码后的视频数据进行渲染;可以在云游戏场景下现有网络传输不稳定或者网络抖动的情况下,优化操作延迟问题并使帧数不大于60fps,降低操作延迟表现。
图3示出了本发明的实施例的一种渲染线程的流程图;图4示出了本发明的实施例的一种丢帧策略的示意图;如图3-4所示,开启新的线程根据丢帧算法对所述解码后的视频数据进行渲染,循环读取所述缓存队列,若没有读取到解码后的视频数据,继续循环读取所述解码后的视频数据;若读取到解码后的视频数据,再根据丢帧算法来判断所述获取到的解码后的视频数据是进行渲染还是直接丢弃;在读取所述缓存队列中的解码后的视频数据时设置sleep,降低CPU占用;使用丢帧算法判断时,设置丢帧阀值,读取所述渲染方法中的自定义缓存队列的长度,若所述缓存队列的长度大于所述阀值,将所述解码后的视频数据丢弃并删除当前缓存数据,若所述缓存队列的长度小于所述阀值,用OpenGLES渲染所述解码后的视频数据并以秒为单位计数;针对低端机单独设置所述缓存队列阀值。
缓存队列采用多读单写的策略以保证数据在多线程下的完整性和准确性;在读取所述缓存队列中的解码后的视频数据时设置sleep,降低CPU占用;运用所述iOS端的低延迟视频渲染方法可以在云游戏场景下现有网络传输不稳定或者网络抖动的情况下,优化操作延迟问题并使帧数不大于60fps,降低操作延迟表现。
基于同一发明构思,本发明实施例还提供了一种iOS端的低延迟视频渲染装置,可以用于实现上述实施例中所描述的一种iOS端的低延迟视频渲染方法,如下面实施例所述:由于该iOS端的低延迟视频渲染装置解决问题的原理与iOS端的低延迟视频渲染方法相似,因此iOS端的低延迟视频渲染装置的实施可以参见iOS端的低延迟视频渲染方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的系统较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图2示出了本发明的实施例的iOS端的低延迟视频渲染装置的结构框图。如图2所示,所述渲染装置包括:
解码模块20,使用VideoToolbox对视频数据进行解码;
缓存模块40,自定义一个缓存队列,将解码后的视频数据存入所述自定义缓存队列;
渲染模块60,开启新的线程根据丢帧算法对所述解码后的视频数据进行渲染。具体地,开启新的线程根据丢帧算法对所述解码后的视频数据进行渲染,循环读取所述缓存队列,若没有读取到解码后的视频数据,继续循环读取所述解码后的视频数据;若读取到解码后的视频数据,再根据丢帧算法来判断所述获取到的解码后的视频数据是进行渲染还是直接丢弃;在读取所述缓存队列中的解码后的视频数据时设置sleep,降低CPU占用;使用丢帧算法判断时,设置丢帧阀值,读取所述渲染方法中的自定义缓存队列的长度,若所述缓存队列的长度大于所述阀值,将所述解码后的视频数据丢弃并删除当前缓存数据,若所述缓存队列的长度小于所述阀值,用OpenGLES渲染所述解码后的视频数据并以秒为单位计数;针对低端机单独设置所述缓存队列阀值。
缓存队列采用多读单写的策略以保证数据在多线程下的完整性和准确性;在读取所述缓存队列中的解码后的视频数据时设置sleep,降低CPU占用;运用所述iOS端的低延迟视频渲染方法可以在云游戏场景下现有网络传输不稳定或者网络抖动的情况下,优化操作延迟问题并使帧数不大于60fps,降低操作延迟表现。
本发明实施例提供了一种iOS端的低延迟视频渲染装置,所述渲染装置通过解码模块20,使用VideoToolbox对视频数据进行解码;通过缓存模块40,自定义一个缓存队列,将解码后的视频数据存入所述自定义缓存队列;渲染模块60,开启新的线程根据丢帧算法对所述解码后的视频数据进行渲染。
本发明实施例还提供了一种计算机电子设备,图5示出了可以应用本发明实施例的电子设备的结构示意图,如图5所示,该计算机电子设备包括,中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM 503中,还存储有系统操作所需的各种程序和数据。CPU 501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,可以描述为:一种处理器包括缓存模块,解码模块和渲染模块,其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,缓存模块还可以被描述为“存放服务端下发的视频流数据的缓存模块”。
作为另一方面,本发明还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中所述一种iOS端的低延迟视频渲染装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入电子设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本发明的一种iOS端的低延迟视频渲染方法。
以上描述仅为本发明的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本发明中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本发明中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (6)

1.一种iOS端的低延迟视频渲染方法,其特征在于,所述渲染方法包括:
使用VideoToolbox对视频数据进行解码;
将解码后的视频数据存入预先自定义的缓存队列;
开启新的线程根据丢帧算法对解码后的视频数据进行渲染;
其中,所述开启新的线程根据丢帧算法对解码后的视频数据进行渲染包括:
循环读取所述缓存队列,所述缓存队列采用多读单写的策略保证数据在多线程下的完整性和准确性;
再根据丢帧算法来判断读取到的解码后的视频数据是渲染还是丢弃;
其中,在读取所述缓存队列中的解码后的视频数据时设置sleep,降低CPU占用;
其中,所述丢帧算法包括:
设置丢帧阀值;
读取所述渲染方法中的自定义缓存队列的长度,若所述缓存队列的长度大于所述阀值,将所述解码后的视频数据丢弃并删除当前缓存数据,若所述缓存队列的长度小于所述阀值,用OpenGLES渲染所述解码后的视频数据并以秒为单位计数。
2.根据权利要求1所述的渲染方法,其特征在于,若没有读取到解码后的视频数据,继续循环读取所述解码后的视频数据。
3.根据权利要求2所述的渲染方法,其特征在于,针对低端机单独设置所述缓存队列阀值。
4.一种iOS端的低延迟视频渲染装置,其特征在于,所述渲染装置包括:
解码模块,使用VideoToolbox对视频数据进行解码;
缓存模块,将所述解码后的视频数据存入预先自定义的缓存队列;
渲染模块,开启新的线程根据丢帧算法对所述解码后的视频数据进行渲染;
其中,所述渲染模块还用于循环读取所述缓存队列,再根据丢帧算法来判断读取到的解码后的视频数据是渲染还是丢弃,所述缓存队列采用多读单写的策略保证数据在多线程下的完整性和准确性;
其中,所述渲染模块还用于,在读取所述缓存队列中的解码后的视频数据时设置sleep,降低CPU占用;
其中,所述渲染模块还用于设置丢帧阀值,读取自定义缓存队列的长度,若所述缓存队列的长度大于所述阀值,将所述解码后的视频数据丢弃并删除当前缓存数据,若所述缓存队列的长度小于所述阀值,用OpenGLES渲染所述解码后的视频数据并以秒为单位计数。
5.一种电子设备,包括存储器和处理器,所述存储器上存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至3任一项所述的方法。
6.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至3任一项所述的方法。
CN202111513998.1A 2021-12-13 2021-12-13 iOS端的低延迟视频渲染方法及装置 Active CN114205662B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111513998.1A CN114205662B (zh) 2021-12-13 2021-12-13 iOS端的低延迟视频渲染方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111513998.1A CN114205662B (zh) 2021-12-13 2021-12-13 iOS端的低延迟视频渲染方法及装置

Publications (2)

Publication Number Publication Date
CN114205662A CN114205662A (zh) 2022-03-18
CN114205662B true CN114205662B (zh) 2024-02-20

Family

ID=80652689

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111513998.1A Active CN114205662B (zh) 2021-12-13 2021-12-13 iOS端的低延迟视频渲染方法及装置

Country Status (1)

Country Link
CN (1) CN114205662B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116069187B (zh) * 2023-01-28 2023-09-01 荣耀终端有限公司 一种显示方法及电子设备
CN116916095B (zh) * 2023-09-12 2024-01-12 深圳云天畅想信息科技有限公司 一种云视频的平滑显示方法、装置、设备及存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014102337A1 (en) * 2012-12-27 2014-07-03 Barco Nv A method and system for managing a queue of video frames
CN106303693A (zh) * 2015-05-25 2017-01-04 北京视联动力国际信息技术有限公司 一种视频数据解码的方法及装置
CN109996104A (zh) * 2019-04-22 2019-07-09 北京奇艺世纪科技有限公司 一种视频播放方法、装置及电子设备
CN110771160A (zh) * 2018-07-23 2020-02-07 深圳市大疆创新科技有限公司 视频均匀显示方法、终端设备、机器可读存储介质
CN110832875A (zh) * 2018-07-23 2020-02-21 深圳市大疆创新科技有限公司 视频处理方法、终端设备、机器可读存储介质
CN111372138A (zh) * 2018-12-26 2020-07-03 杭州登虹科技有限公司 一种播放器端的直播低延迟技术方案
CN111510759A (zh) * 2020-03-17 2020-08-07 视联动力信息技术股份有限公司 视频显示方法、装置及可读存储介质
CN112153082A (zh) * 2020-11-25 2020-12-29 深圳乐播科技有限公司 一种在安卓系统中平滑显示实时流视频画面的方法及装置
CN112887510A (zh) * 2021-01-19 2021-06-01 三一重工股份有限公司 基于视频检测的视频播放方法及系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2843766A1 (en) * 2011-08-16 2013-02-21 Destiny Software Productions Inc. Script-based video rendering
CN105898541B (zh) * 2014-11-12 2019-11-26 恩智浦美国有限公司 降低多媒体系统中等待时间的方法和装置

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014102337A1 (en) * 2012-12-27 2014-07-03 Barco Nv A method and system for managing a queue of video frames
CN106303693A (zh) * 2015-05-25 2017-01-04 北京视联动力国际信息技术有限公司 一种视频数据解码的方法及装置
CN110771160A (zh) * 2018-07-23 2020-02-07 深圳市大疆创新科技有限公司 视频均匀显示方法、终端设备、机器可读存储介质
CN110832875A (zh) * 2018-07-23 2020-02-21 深圳市大疆创新科技有限公司 视频处理方法、终端设备、机器可读存储介质
CN111372138A (zh) * 2018-12-26 2020-07-03 杭州登虹科技有限公司 一种播放器端的直播低延迟技术方案
CN109996104A (zh) * 2019-04-22 2019-07-09 北京奇艺世纪科技有限公司 一种视频播放方法、装置及电子设备
CN111510759A (zh) * 2020-03-17 2020-08-07 视联动力信息技术股份有限公司 视频显示方法、装置及可读存储介质
CN112153082A (zh) * 2020-11-25 2020-12-29 深圳乐播科技有限公司 一种在安卓系统中平滑显示实时流视频画面的方法及装置
CN112887510A (zh) * 2021-01-19 2021-06-01 三一重工股份有限公司 基于视频检测的视频播放方法及系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Evaluating the Performance and Energy Efficiency of OpenGL and Vulkan on a Graphics Rendering Server;Michael Lujan et al.;《2019 International Conference on Computing, Networking, and Communications(ICNC)》;20190411;全文 *
基于多线程的OpenGL渲染方法研究;李鑫;《微计算机信息》;20050309;全文 *
混合实时渲染关键技术研究;蔡至诚;《中国优秀硕士学位论文全文数据库(电子期刊)》;20200715;全文 *

Also Published As

Publication number Publication date
CN114205662A (zh) 2022-03-18

Similar Documents

Publication Publication Date Title
CN114205662B (zh) iOS端的低延迟视频渲染方法及装置
US10575007B2 (en) Efficient decoding and rendering of blocks in a graphics pipeline
US10574955B2 (en) Re-projecting flat projections of pictures of panoramic video for rendering by application
TWI587693B (zh) 用於減少視訊編碼及解碼中之延遲的方法、系統及電腦可讀取媒體
US20180152663A1 (en) View-dependent operations during playback of panoramic video
CN113473126B (zh) 视频流的处理方法、装置、电子设备及计算机可读介质
US20140204107A1 (en) Video processor with frame buffer compression and methods for use therewith
US10715847B2 (en) Custom data indicating nominal range of samples of media content
JP2018191269A (ja) 復号された画像データから画像データを再構成する方法および装置
JP2010171609A (ja) 画像処理装置
US20230362388A1 (en) Systems and methods for deferred post-processes in video encoding
WO2019137171A1 (zh) 视频码流的解码、生成方法及装置、存储介质、电子装置
US8233534B2 (en) Frame buffer compression and memory allocation in a video decoder
CN116250011A (zh) 用于对动画3d对象的至少一个属性进行编码/解码的方法和装置
CN110049347B (zh) 在直播界面配置图像的方法、系统、终端和装置
US20240080487A1 (en) Method, apparatus for processing media data, computer device and storage medium
WO2024078066A1 (zh) 视频解码方法、视频编码方法、装置、存储介质及设备
CN113923507B (zh) Android端的低延迟视频渲染方法及装置
CN115914745A (zh) 视频的解码方法、装置、电子设备及计算机可读介质
US20140205017A1 (en) Video processor with reduced memory bandwidth and methods for use therewith
CN114079823A (zh) 基于Flutter的视频渲染方法、装置、设备及介质
CN108933945B (zh) 一种gif图片的压缩方法、装置及存储介质
US20060267996A1 (en) Apparatus and method for digital video decoding
CN113450293A (zh) 视频信息处理方法、装置、系统、电子设备及存储介质
CN115426519A (zh) H265视频在浏览器中的播放方法及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant