CN112153082B - 一种在安卓系统中平滑显示实时流视频画面的方法及装置 - Google Patents

一种在安卓系统中平滑显示实时流视频画面的方法及装置 Download PDF

Info

Publication number
CN112153082B
CN112153082B CN202011336196.3A CN202011336196A CN112153082B CN 112153082 B CN112153082 B CN 112153082B CN 202011336196 A CN202011336196 A CN 202011336196A CN 112153082 B CN112153082 B CN 112153082B
Authority
CN
China
Prior art keywords
vsync
vertical synchronization
video frame
synchronization signal
signals
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
CN202011336196.3A
Other languages
English (en)
Other versions
CN112153082A (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.)
Shenzhen Happycast Technology Co Ltd
Original Assignee
Shenzhen Happycast 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 Shenzhen Happycast Technology Co Ltd filed Critical Shenzhen Happycast Technology Co Ltd
Priority to CN202011336196.3A priority Critical patent/CN112153082B/zh
Publication of CN112153082A publication Critical patent/CN112153082A/zh
Application granted granted Critical
Publication of CN112153082B publication Critical patent/CN112153082B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/70Media network packetisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS
    • 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/4302Content synchronisation processes, e.g. decoder synchronisation
    • 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/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/854Content authoring
    • H04N21/8547Content authoring involving timestamps for synchronizing content

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

本发明涉及实时视频播放器的渲染技术领域,公开了一种在安卓系统中平滑显示实时流视频画面的方法、装置、计算机设备及计算机可读存储介质,可在获取到解码的纹理信息后,不进行立即显示,而是将纹理信息缓存起来,然后由相对比较精准的垂直同步信号Vsync来触发进行纹理信息的读取及视频画面渲染,以及触发进行已渲染视频画面的显示,因此可以比较好地适配各个芯片厂家解码处理过程,使得实时流视频画面能够被比较均匀的显示出来,达到视频画面的平滑播放效果,避免给观看者带来卡顿等不好的画面观赏体验。此外,通过在发现硬件Vsync信号不准确时,启动软件模块来模拟Vsync信号,可获取到相对准确的软件Vsync信号,进一步确保达到视频画面的平滑播放效果。

Description

一种在安卓系统中平滑显示实时流视频画面的方法及装置
技术领域
本发明属于实时视频播放器的渲染技术领域,具体地涉及一种在安卓系统中平滑显示实时流视频画面的方法、装置、计算机设备及计算机可读存储介质。
背景技术
流媒体(Streaming Media)是指将一连串的媒体数据压缩后,经过网上分段发送数据,在网上即时传输影音以供观赏的一种技术与过程,此技术使得数据包得以像流水一样发送;如果不使用此技术,就必须在使用前下载整个媒体文件。流式传输可传送现场影音或预存于服务器上的影片,当观看者在收看这些影音文件时,影音数据在送达观看者的计算机后立即由特定播放软件播放。
实现流式传输主要有如下两种方式:顺序流式传输(Progressive Streaming)和实时流式传输(Real Time Streaming)。前者是指顺序下载,即观看者在观看在线媒体的同时下载文件,在这一过程中,观看者只能观看下载完的部分,而不能直接观看未下载部分,也就是说,观看者总是在一段延时后才能看到服务器传送过来的信息。而后者是指在保证匹配连接带宽的前提下,能够使媒体可以被实时观看到,即在观看过程中,观看者可以任意观看媒体前面或后面的内容。
目前在实时流媒体的处理过程中,主要处理方式是将实时流视频数据传给多媒体数字信号解码器MediaCodec,然后由MediaCodec解码获取视频帧及纹理信息,最后通过表面着色器将纹理信息实时渲染到视频帧的视频画面上,实现实时输出显示目的。但是一方面由于各个芯片厂家对解码器的输出控制存在差异,以及另一方面由于实时流视频画面因连接带宽限制导致帧率一般不超过60帧/秒,使得很难做到实时流视频画面的平滑输出,可能给观看者带来卡顿等不好的画面观赏体验。
发明内容
为了解决在实时流媒体的处理过程中所存在的难以做到实时流视频画面平滑输出的问题,本发明目的在于提供一种在安卓系统中平滑显示实时流视频画面的方法、装置、计算机设备及计算机可读存储介质。
第一方面,本发明提供了一种在安卓系统中平滑显示实时流视频画面的方法,包括:
接收实时流视频数据;
对所述实时流视频数据进行解码,获取视频帧和纹理信息;
缓存所述纹理信息;
输入垂直同步信号Vsync,其中,所述垂直同步信号Vsync为脉冲信号;
根据所述垂直同步信号Vsync的到达时间戳与所述视频帧的显示时间戳PTS的时刻关系,触发将所述纹理信息渲染到目标视频帧的视频画面上,并显示渲染后的视频画面。
基于上述发明内容,可在获取到解码的纹理信息后,不进行立即显示,而是将纹理信息缓存起来,然后由相对比较精准的垂直同步信号Vsync来触发进行纹理信息的读取及视频画面渲染,以及触发进行已渲染视频画面的显示,因此可以比较好地适配各个芯片厂家解码处理过程,使得实时流视频画面能够被比较均匀的显示出来,达到视频画面的平滑播放效果,避免给观看者带来卡顿等不好的画面观赏体验。此外,可利用纹理信息的拷贝,减少从解码器拷贝数据的系统消耗。
在一个可能的设计中,对所述实时流视频数据进行解码,获取视频帧和纹理信息,包括:
使用多媒体数字信号解码器MediaCodec和开发图像绘制库嵌入式系统OpenGL Es对所述实时流视频数据进行解码,获取所述视频帧和所述纹理信息。
在一个可能的设计中,缓存所述纹理信息,包括:
通过开发图像绘制库OpenGL的纹理缓冲区缓存所述纹理信息。
在一个可能的设计中,输入垂直同步脉冲信号Vsync,包括:
输入通过硬件中断方式产生的硬件Vsync信号;
判断所述硬件Vsync信号是否准确;
若不准确,启动安卓系统的软件模块,以便通过软件模拟方式产生软件Vsync信号;
输入用于作为所述垂直同步信号Vsync的软件Vsync信号。
在一个可能的设计中,判断所述硬件Vsync信号是否准确,包括:
在预设时长范围内接收多个连续的硬件Vsync信号;
确定在所述多个连续的硬件Vsync信号中所有相邻两硬件Vsync信号之间的时间间隔;
统计所有时间间隔的方差;
若所述方差大于预设的方差阈值,则判定所述硬件Vsync信号不准确。
在一个可能的设计中,根据所述垂直同步信号Vsync的到达时间戳与所述视频帧的显示时间戳PTS的时刻关系,触发将所述纹理信息渲染到目标视频帧的视频画面上,并显示渲染后的视频画面,包括:
在所述垂直同步信号Vsync到达时,若目标视频帧的显示时间戳PTS与所述垂直同步信号Vsync的到达时间戳的时间差大于所述垂直同步信号Vsync的1/2周期且小于或等于所述垂直同步信号Vsync的3/2周期,则触发从所述纹理缓冲区中读取所述纹理信息,并采用纹理映射方式将所述纹理信息渲染到与所述目标视频帧对应的视频画面上,其中,所述目标视频帧为显示时间戳PTS位于所述垂直同步信号Vsync之后的且视频画面还未进行渲染的视频帧;
在下一个垂直同步信号Vsync到达时,触发显示渲染后的视频画面。
在一个可能的设计中,根据所述垂直同步信号Vsync的到达时间戳与所述视频帧的显示时间戳PTS的时刻关系,触发将所述纹理信息渲染到目标视频帧的视频画面上,并显示渲染后的视频画面,包括:
在所述垂直同步信号Vsync到达时,若多个目标视频帧的显示时间戳PTS与所述垂直同步信号Vsync的到达时间戳的时间差大于所述垂直同步信号Vsync的1/2周期且小于或等于所述垂直同步信号Vsync的3/2周期,则针对所述时间差最接近所述垂直同步信号Vsync的周期的目标视频帧,触发从所述纹理缓冲区中读取所述纹理信息,并采用纹理映射方式将所述纹理信息渲染到对应的视频画面上,其中,所述目标视频帧为显示时间戳PTS位于所述垂直同步信号Vsync之后的且视频画面还未进行渲染的视频帧;
在下一个垂直同步信号Vsync到达时,触发显示渲染后的视频画面。
第二方面,本发明提供了一种在安卓系统中平滑显示实时流视频画面的装置,包括有数据接收单元、数据解码单元、信息缓存单元、信号输入单元和显示触发单元;
所述数据接收单元,用于接收实时流视频数据;
所述数据解码单元,通信连接所述数据接收单元,用于对所述实时流视频数据进行解码,获取视频帧和纹理信息;
所述信息缓存单元,通信连接所述数据解码单元,用于缓存所述纹理信息;
所述信号输入单元,用于输入垂直同步信号Vsync,其中,所述垂直同步信号Vsync为脉冲信号;
所述显示触发单元,分别通信连接所述数据解码单元、所述信息缓存单元和所述信号输入单元,用于根据所述垂直同步信号Vsync的到达时间戳与所述视频帧的显示时间戳PTS的时刻关系,触发将所述纹理信息渲染到目标视频帧的视频画面上,并显示渲染后的视频画面。
第三方面,本发明提供了一种计算机设备,包括通信相连的存储器和处理器,其中,所述存储器用于存储计算机程序,所述处理器用于读取所述计算机程序,执行如第一方面或第一方面中任意一种可能设计所述的方法。
第四方面,本发明提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,当所述指令在计算机上运行时,执行如上第一方面或第一方面中任意一种可能设计的所述方法。
第五方面,本发明提供了一种包含指令的计算机程序产品,当所述指令在计算机上运行时,使所述计算机执行如上第一方面或第一方面中任意一种可能设计的所述方法。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的在安卓系统中平滑显示实时流视频画面的方法流程示意图。
图2是本发明提供的根据时刻关系触发进行纹理信息渲染及显示的第一示例图。
图3是本发明提供的根据时刻关系触发进行纹理信息渲染及显示的第二示例图。
图4是本发明提供的在安卓系统中平滑显示实时流视频画面的装置结构示意图。
图5是本发明提供的计算机设备的结构示意图。
具体实施方式
下面结合附图及具体实施例来对本发明作进一步阐述。在此需要说明的是,对于这些实施例方式的说明虽然是用于帮助理解本发明,但并不构成对本发明的限定。本文公开的特定结构和功能细节仅用于描述本发明的示例实施例。然而,可用很多备选的形式来体现本发明,并且不应当理解为本发明限制在本文阐述的实施例中。
应当理解,尽管本文可能使用术语第一、第二等等来描述各种单元,但是这些单元不应当受到这些术语的限制。这些术语仅用于区分一个单元和另一个单元。例如可以将第一单元称作第二单元,并且类似地可以将第二单元称作第一单元,同时不脱离本发明的示例实施例的范围。
应当理解,对于本文中可能出现的术语“和/或”,其仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,单独存在B,同时存在A和B三种情况;对于本文中可能出现的术语“/和”,其是描述另一种关联对象关系,表示可以存在两种关系,例如,A/和B,可以表示:单独存在A,单独存在A和B两种情况;另外,对于本文中可能出现的字符“/”,一般表示前后关联对象是一种“或”关系。
应当理解,在本文中若将单元称作与另一个单元“连接”、“相连”或“耦合”时,它可以与另一个单元直相连接或耦合,或中间单元可以存在。相対地,在本文中若将单元称作与另一个单元“直接相连”或“直接耦合”时,表示不存在中间单元。另外,应当以类似方式来解释用于描述单元之间的关系的其他单词(例如,“在……之间”对“直接在……之间”,“相邻”对“直接相邻”等等)。
应当理解,本文使用的术语仅用于描述特定实施例,并不意在限制本发明的示例实施例。若本文所使用的,单数形式“一”、“一个”以及“该”意在包括复数形式,除非上下文明确指示相反意思。还应当理解,若术语“包括”、“包括了”、“包含”和/或“包含了”在本文中被使用时,指定所声明的特征、整数、步骤、操作、单元和/或组件的存在性,并且不排除一个或多个其他特征、数量、步骤、操作、单元、组件和/或他们的组合存在性或增加。
应当理解,还应当注意到在一些备选可能设计中,所出现的功能/动作可能与附图出现的顺序不同。例如,取决于所涉及的功能/动作,实际上可以实质上并发地执行,或者有时可以以相反的顺序来执行连续示出的两个图。
应当理解,在下面的描述中提供了特定的细节,以便于对示例实施例的完全理解。然而,本领域普通技术人员应当理解可以在没有这些特定细节的情况下实现示例实施例。例如可以在框图中示出系统,以避免用不必要的细节来使得示例不清楚。在其他实例中,可以不以非必要的细节来示出众所周知的过程、结构和技术,以避免使得示例实施例不清楚。
如图1~3所示,本实施例第一方面提供的所述在安卓系统中平滑显示实时流视频画面的方法,可以但不限于由基于安卓系统的且能够接收并播放实时流媒体的终端设备执行,例如在智能手机或平板电脑等电子设备上执行。所述在安卓系统中平滑显示实时流视频画面的方法,可以但不限于包括有如下步骤S101~S105。
S101.接收实时流视频数据。
在所述步骤S101中,所述实时流视频数据为在匹配连接带宽的前提下,通过互联网络实时传输的且来自现场影音采集设备(例如监控摄像头等)或视频服务器的视频数据,以便能够被终端设备的用户实时观看到。
S102.对所述实时流视频数据进行解码,获取视频帧和纹理信息。
在所述步骤S102中,解码获取所述视频帧和所述纹理信息(纹理是计算机图形学中的常用术语,既包括通常意义上物体表面的纹理,即使物体表面呈现凹凸不平的沟纹,同时也包括在物体的光滑表面上的彩色图案,等等)的方式为现有常规方式,具体的,优选使用多媒体数字信号解码器MediaCodec(其是安卓系统自带的视频编解码工具,由于使用的是硬解码,其效率相对多媒体处理工具FFMPEG高出来不少)和开发图像绘制库嵌入式系统OpenGL Es(OpenGL for Embedded System,其是开发图像绘制库OpenGL 三维图形 API 的子集,针对手机、PDA和游戏主机等嵌入式设备而设)对所述实时流视频数据进行解码,获取所述视频帧和所述纹理信息。
S103.缓存所述纹理信息。
在所述步骤S103中,具体的,优选通过开发图像绘制库OpenGL的纹理缓冲区缓存所述纹理信息。
S104.输入垂直同步信号Vsync,其中,所述垂直同步信号Vsync为脉冲信号。
在所述步骤S104中,所述垂直同步信号Vsync是在安卓系统4.1之后对显示系统进行不断地进化和改变而引入的三个核心元素之一(另两个是Triple Butter和Choreographer),其是由HWC(Hardware Composer HAL)硬件模块根据屏幕刷新率产生的脉冲信号。为了确保所述垂直同步信号Vsync的准确性,可以但不限于包括有如下步骤S401~S404。
S401.输入通过硬件中断方式产生的硬件Vsync信号。
在所述步骤S401中,所述硬件Vsync信号即是指由HWC硬件模块根据屏幕刷新率产生的脉冲信号。
S402.判断所述硬件Vsync信号是否准确。
在所述步骤S402中,具体的,包括但不限于有如下步骤S4021~S4024:S4021.在预设时长范围内接收多个连续的硬件Vsync信号;S4022.确定在所述多个连续的硬件Vsync信号中所有相邻两硬件Vsync信号之间的时间间隔;S4023.统计所有时间间隔的方差;S4024.若所述方差大于预设的方差阈值,则判定所述硬件Vsync信号不准确。在所述步骤S4021中,所述预设时长范围可举例为1秒,由于屏幕刷新率一般在60Hz以上,因此1秒内可获取到至少60个所述硬件Vsync信号。在所述步骤S4024中,所述方差阈值可以但不限于为0.01ms2,若所述方差小于或等于该方差阈值,表明所述硬件Vsync信号是以恒定周期形式产生的,具有符合要求的准确性,反之则表明所述硬件Vsync信号是以非恒定周期形式产生的,准确性差。
S403.若不准确,启动安卓系统的软件模块,以便通过软件模拟方式产生软件Vsync信号。
在所述步骤S403中,所述软件模块是安卓系统中的现有功能模块,可以基于所述硬件Vsync信号产生高准确性的软件Vsync信号。
S404.输入用于作为所述垂直同步信号Vsync的软件Vsync信号。
S105.根据所述垂直同步信号Vsync的到达时间戳与所述视频帧的显示时间戳PTS的时刻关系,触发将所述纹理信息渲染到目标视频帧的视频画面上,并显示渲染后的视频画面。
在所述步骤S105中,由于是通过相对比较精准的垂直同步信号Vsync来触发进行纹理信息的读取及视频画面渲染,以及进行已渲染视频画面的显示,因此可以比较好地适配各个芯片厂家解码处理过程,使得实时流视频画面能够被比较均匀的显示出来,达到视频画面的平滑播放效果,避免给观看者带来卡顿等不好的画面观赏体验。
在所述步骤S105中,如图2所示,具体的,可以但不限于包括有如下步骤S501~S502。
S501.在所述垂直同步信号Vsync到达时,若目标视频帧的显示时间戳PTS(Presentation Time Stamp)与所述垂直同步信号Vsync的到达时间戳的时间差大于所述垂直同步信号Vsync的1/2周期且小于或等于所述垂直同步信号Vsync的3/2周期,则触发从所述纹理缓冲区中读取所述纹理信息,并采用纹理映射方式将所述纹理信息渲染到与所述目标视频帧对应的视频画面上,其中,所述目标视频帧为显示时间戳PTS位于所述垂直同步信号Vsync之后的且视频画面还未进行渲染的视频帧。
在所述步骤S501中,所述纹理映射方式是指将纹理空间中的纹理像素映射到屏幕空间中的像素的过程。简单来说,就是把一幅图像贴到三维物体的表面上来增强真实感,可以和光照计算、图像混合等技术结合起来形成许多非常漂亮的效果。由于屏幕刷新率一般在60Hz以上,因此所述垂直同步信号Vsync的周期约为16ms,而触发读取纹理信息并进行视频画面渲染所需时间一般只有几毫秒,因此可在下一个垂直同步信号Vsync到达前准备好完成渲染的视频画面。此外,在所述垂直同步信号Vsync到达时,若没有符合条件的所述目标视频帧,将不进行读取和渲染动作。如图2所示,在第一次Vsync信号和第三次Vsync信号到达时,由于对应视频帧1的时间差1为3/4个周期和对应视频帧2的时间差2为5/4个周期,可将视频帧1和视频帧2分别作为所述目标视频帧,而在第二次Vsync信号和第四次Vsync信号到达时,将不存在所述目标视频帧。
S502.在下一个垂直同步信号Vsync到达时,触发显示渲染后的视频画面。
在所述步骤S502中,由于在所述下一个垂直同步信号Vsync到达前已准备好完成渲染的视频画面,因此可通过所述下一个垂直同步信号Vsync的显示触发动作,使在屏幕刷新的同时更新视频画面内容,可进一步确保画面显示的平滑性。举例的,以屏幕刷新率为60Hz为例,若视频帧的帧率为60帧/秒,即可在每个垂直同步信号Vsync到达时,触发进行一次纹理信息的读取及视频画面渲染,并触发进行一次已渲染视频画面的显示;而若视频帧的帧率为30帧/秒,即可在第奇数个垂直同步信号Vsync到达时,触发进行一次纹理信息的读取及视频画面渲染,并在第偶数个垂直同步信号Vsync到达时,触发进行一次已渲染视频画面的显示,即每隔两个垂直同步信号Vsync进行一次纹理信息的显示。
在所述步骤S105中,如图3所示,具体的,可以但不限于还包括有如下步骤S503~S504。
S503.在所述垂直同步信号Vsync到达时,若多个目标视频帧的显示时间戳PTS与所述垂直同步信号Vsync的到达时间戳的时间差大于所述垂直同步信号Vsync的1/2周期且小于或等于所述垂直同步信号Vsync的3/2周期,则针对所述时间差最接近所述垂直同步信号Vsync的周期的目标视频帧,触发从所述纹理缓冲区中读取所述纹理信息,并采用纹理映射方式将所述纹理信息渲染到对应的视频画面上,其中,所述目标视频帧为显示时间戳PTS位于所述垂直同步信号Vsync之后的且视频画面还未进行渲染的视频帧。
S504.在下一个垂直同步信号Vsync到达时,触发显示渲染后的视频画面。
前述步骤S503的实施细节可参见前述步骤S501,由于是针对所述时间差最接近所述垂直同步信号Vsync的周期的目标视频帧进行视频画面渲染,可确保在所述下一个垂直同步信号Vsync到达时,使显示时机最合适的视频帧画面能够被及时显示,进一步确保显示效果。如图3所示,在第一次Vsync信号到达时,由于对应视频帧1的时间差1为3/4个周期和对应视频帧2的时间差2为9/8个周期,可将视频帧2作为所述目标视频帧,而在第二次Vsync信号到达时,由于对应视频帧3的时间差3为7/8个周期和对应视频帧4的时间差4为5/4个周期,可将视频帧3作为所述目标视频帧;在第三次Vsync信号到达时,由于对应视频帧5的时间差5为9/8个周期,可将视频帧5作为所述目标视频帧;而在第四次Vsync信号到达时,将不存在所述目标视频帧。
由此通过前述步骤S101~S105所描述的实时流视频画面平滑显示方案,可在获取到解码的纹理信息后,不进行立即显示,而是将纹理信息缓存起来,然后由相对比较精准的垂直同步信号Vsync来触发进行纹理信息的读取及视频画面渲染,以及触发进行已渲染视频画面的显示,因此可以比较好地适配各个芯片厂家解码处理过程,使得实时流视频画面能够被比较均匀的显示出来,达到视频画面的平滑播放效果,避免给观看者带来卡顿等不好的画面观赏体验。此外,通过在发现硬件Vsync信号不准确时,启动软件模块来模拟Vsync信号,可获取到相对准确的软件Vsync信号,进一步确保达到视频画面的平滑播放效果,以及可利用纹理信息的拷贝,减少从解码器拷贝数据的系统消耗。
如图4所示,本实施例第二方面提供了一种实现第一方面或第一方面中任意一种可能设计所述在安卓系统中平滑显示实时流视频画面的方法的虚拟装置,包括有数据接收单元、数据解码单元、信息缓存单元、信号输入单元和显示触发单元;
所述数据接收单元,用于接收实时流视频数据;
所述数据解码单元,通信连接所述数据接收单元,用于对所述实时流视频数据进行解码,获取视频帧和纹理信息;
所述信息缓存单元,通信连接所述数据解码单元,用于缓存所述纹理信息;
所述信号输入单元,用于输入垂直同步信号Vsync,其中,所述垂直同步信号Vsync为脉冲信号;
所述显示触发单元,分别通信连接所述数据解码单元、所述信息缓存单元和所述信号输入单元,用于根据所述垂直同步信号Vsync的到达时间戳与所述视频帧的显示时间戳PTS的时刻关系,触发将所述纹理信息渲染到目标视频帧的视频画面上,并显示渲染后的视频画面。
本实施例第二方面提供的前述装置的工作过程、工作细节和技术效果,可以参见第一方面或第一方面中任意一种可能设计所述的方法,于此不再赘述。
如图4所示,本实施例第三方面提供了一种执行第一方面或第一方面中任意一种可能设计所述在安卓系统中平滑显示实时流视频画面的方法的计算机设备,包括通信相连的存储器和处理器,其中,所述存储器用于存储计算机程序,所述处理器用于读取所述计算机程序,执行如第一方面或第一方面中任意一种可能设计所述的在安卓系统中平滑显示实时流视频画面的方法。具体举例的,所述存储器可以但不限于包括随机存取存储器(Random-Access Memory,RAM)、只读存储器(Read-Only Memory,ROM)、闪存(FlashMemory)、先进先出存储器(First Input First Output,FIFO)和/或先进后出存储器(First Input Last Output,FILO)等等;所述处理器可以不限于采用型号采用STM32F105系列的微处理器。此外,所述计算机设备还可以但不限于包括有电源模块、显示屏和其它必要的部件。
本实施例第三方面提供的前述计算机设备的工作过程、工作细节和技术效果,可以参见第一方面或第一方面中任意一种可能设计所述的方法,于此不再赘述。
本实施例第四方面提供了一种存储包含第一方面或第一方面中任意一种可能设计所述在安卓系统中平滑显示实时流视频画面的方法的指令的计算机可读存储介质,即所述计算机可读存储介质上存储有指令,当所述指令在计算机上运行时,执行如第一方面或第一方面中任意一种可能设计所述的在安卓系统中平滑显示实时流视频画面的方法。其中,所述计算机可读存储介质是指存储数据的载体,可以但不限于包括软盘、光盘、硬盘、闪存、优盘和/或记忆棒(Memory Stick)等,所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。
本实施例第四方面提供的前述计算机可读存储介质的工作过程、工作细节和技术效果,可以参见第一方面或第一方面中任意一种可能设计所述的方法,于此不再赘述。
本实施例第五方面提供了一种包含指令的计算机程序产品,当所述指令在计算机上运行时,使所述计算机执行如第一方面或第一方面中任意一种可能设计所述的在安卓系统中平滑显示实时流视频画面的方法。其中,所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。
以上所描述的实施例仅仅是示意性的,若涉及到作为分离部件说明的单元,其可以是或者也可以不是物理上分开的;若涉及到作为单元显示的部件,其可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。
最后应说明的是,本发明不局限于上述可选的实施方式,任何人在本发明的启示下都可得出其他各种形式的产品。上述具体实施方式不应理解成对本发明的保护范围的限制,本发明的保护范围应当以权利要求书中界定的为准,并且说明书可以用于解释权利要求书。

Claims (6)

1.一种在安卓系统中平滑显示实时流视频画面的方法,其特征在于,包括:
接收实时流视频数据;
对所述实时流视频数据进行解码,获取视频帧和纹理信息;
缓存所述纹理信息;
在预设时长范围内接收由HWC硬件模块根据屏幕刷新率、采用硬件中断方式产生的且多个连续的硬件Vsync信号,确定在所述多个连续的硬件Vsync信号中所有相邻两硬件Vsync信号之间的时间间隔,统计所有时间间隔的方差,若所述方差大于预设的方差阈值,则启动安卓系统的软件模块,通过软件模拟方式产生软件Vsync信号,最后输入用于作为垂直同步信号Vsync的软件Vsync信号,否则输入用于作为所述垂直同步信号Vsync的硬件Vsync信号,其中,所述垂直同步信号Vsync为脉冲信号;
在所述垂直同步信号Vsync到达时,若至少一个目标视频帧的显示时间戳PTS与所述垂直同步信号Vsync的到达时间戳的时间差大于所述垂直同步信号Vsync的1/2周期且小于或等于所述垂直同步信号Vsync的3/2周期,则针对所述至少一个目标视频帧中的且所述时间差最接近所述垂直同步信号Vsync的周期的目标视频帧,触发从所述纹理缓冲区中读取所述纹理信息,并采用纹理映射方式将所述纹理信息渲染到对应的视频画面上,其中,所述目标视频帧为显示时间戳PTS位于所述垂直同步信号Vsync之后的且视频画面还未进行渲染的视频帧;
在下一个垂直同步信号Vsync到达时,触发显示渲染后的视频画面。
2.如权利要求1所述的方法,其特征在于,对所述实时流视频数据进行解码,获取视频帧和纹理信息,包括:
使用多媒体数字信号解码器MediaCodec和开发图像绘制库嵌入式系统OpenGL Es对所述实时流视频数据进行解码,获取所述视频帧和所述纹理信息。
3.如权利要求1所述的方法,其特征在于,缓存所述纹理信息,包括:
通过开发图像绘制库OpenGL的纹理缓冲区缓存所述纹理信息。
4.一种在安卓系统中平滑显示实时流视频画面的装置,其特征在于,包括有数据接收单元、数据解码单元、信息缓存单元、信号输入单元和显示触发单元;
所述数据接收单元,用于接收实时流视频数据;
所述数据解码单元,通信连接所述数据接收单元,用于对所述实时流视频数据进行解码,获取视频帧和纹理信息;
所述信息缓存单元,通信连接所述数据解码单元,用于缓存所述纹理信息;
所述信号输入单元,用于在预设时长范围内接收由HWC硬件模块根据屏幕刷新率、采用硬件中断方式产生的且多个连续的硬件Vsync信号,确定在所述多个连续的硬件Vsync信号中所有相邻两硬件Vsync信号之间的时间间隔,统计所有时间间隔的方差,若所述方差大于预设的方差阈值,则启动安卓系统的软件模块,通过软件模拟方式产生软件Vsync信号,最后输入用于作为垂直同步信号Vsync的软件Vsync信号,否则输入用于作为所述垂直同步信号Vsync的硬件Vsync信号,其中,所述垂直同步信号Vsync为脉冲信号;
所述显示触发单元,分别通信连接所述数据解码单元、所述信息缓存单元和所述信号输入单元,用于在所述垂直同步信号Vsync到达时,若至少一个目标视频帧的显示时间戳PTS与所述垂直同步信号Vsync的到达时间戳的时间差大于所述垂直同步信号Vsync的1/2周期且小于或等于所述垂直同步信号Vsync的3/2周期,则针对所述至少一个目标视频帧中的且所述时间差最接近所述垂直同步信号Vsync的周期的目标视频帧,触发从所述纹理缓冲区中读取所述纹理信息,并采用纹理映射方式将所述纹理信息渲染到对应的视频画面上,其中,所述目标视频帧为显示时间戳PTS位于所述垂直同步信号Vsync之后的且视频画面还未进行渲染的视频帧,以及用于在下一个垂直同步信号Vsync到达时,触发显示渲染后的视频画面。
5.一种计算机设备,其特征在于,包括通信相连的存储器和处理器,其中,所述存储器用于存储计算机程序,所述处理器用于读取所述计算机程序,执行如权利要求1~3中任意一项所述的方法。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有指令,当所述指令在计算机上运行时,执行如权利要求1~3中任意一项所述的方法。
CN202011336196.3A 2020-11-25 2020-11-25 一种在安卓系统中平滑显示实时流视频画面的方法及装置 Active CN112153082B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011336196.3A CN112153082B (zh) 2020-11-25 2020-11-25 一种在安卓系统中平滑显示实时流视频画面的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011336196.3A CN112153082B (zh) 2020-11-25 2020-11-25 一种在安卓系统中平滑显示实时流视频画面的方法及装置

Publications (2)

Publication Number Publication Date
CN112153082A CN112153082A (zh) 2020-12-29
CN112153082B true CN112153082B (zh) 2021-03-09

Family

ID=73887257

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011336196.3A Active CN112153082B (zh) 2020-11-25 2020-11-25 一种在安卓系统中平滑显示实时流视频画面的方法及装置

Country Status (1)

Country Link
CN (1) CN112153082B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112929741B (zh) * 2021-01-21 2023-02-03 杭州雾联科技有限公司 一种视频帧渲染方法、装置、电子设备和存储介质
CN113364767B (zh) * 2021-06-03 2022-07-12 北京字节跳动网络技术有限公司 一种流媒体数据显示方法、装置、电子设备及存储介质
CN114205662B (zh) * 2021-12-13 2024-02-20 北京蔚领时代科技有限公司 iOS端的低延迟视频渲染方法及装置
CN115550708B (zh) * 2022-01-07 2023-12-19 荣耀终端有限公司 数据处理方法及电子设备
CN115550709B (zh) * 2022-01-07 2023-09-26 荣耀终端有限公司 数据处理方法及电子设备
CN114020097B (zh) * 2022-01-10 2022-06-17 北京鲸鲮信息系统技术有限公司 信号同步方法、装置、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103747332A (zh) * 2013-12-25 2014-04-23 乐视致新电子科技(天津)有限公司 一种视频的平滑处理方法和装置
CN103957413A (zh) * 2014-01-13 2014-07-30 南京达鹏信息技术有限公司 一种针对移动网络视频通信应用的实时误码掩盖方法和装置
CN108495130A (zh) * 2017-03-21 2018-09-04 腾讯科技(深圳)有限公司 视频编码、解码方法和装置、终端、服务器和存储介质
CN109194960A (zh) * 2018-11-13 2019-01-11 北京奇艺世纪科技有限公司 一种图像帧渲染方法、装置及电子设备

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3357253B1 (en) * 2015-10-02 2021-12-22 Twitter, Inc. Gapless video looping
CN107948735B (zh) * 2017-12-06 2020-09-25 北京乐我无限科技有限责任公司 一种视频播放方法、装置及电子设备
CN111586489A (zh) * 2020-06-22 2020-08-25 腾讯科技(深圳)有限公司 弹幕渲染方法、装置、计算机设备及存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103747332A (zh) * 2013-12-25 2014-04-23 乐视致新电子科技(天津)有限公司 一种视频的平滑处理方法和装置
CN103957413A (zh) * 2014-01-13 2014-07-30 南京达鹏信息技术有限公司 一种针对移动网络视频通信应用的实时误码掩盖方法和装置
CN108495130A (zh) * 2017-03-21 2018-09-04 腾讯科技(深圳)有限公司 视频编码、解码方法和装置、终端、服务器和存储介质
CN109194960A (zh) * 2018-11-13 2019-01-11 北京奇艺世纪科技有限公司 一种图像帧渲染方法、装置及电子设备

Also Published As

Publication number Publication date
CN112153082A (zh) 2020-12-29

Similar Documents

Publication Publication Date Title
CN112153082B (zh) 一种在安卓系统中平滑显示实时流视频画面的方法及装置
US10229651B2 (en) Variable refresh rate video capture and playback
CN107018370B (zh) 用于视频墙的显示方法及其系统
CN109618179B (zh) 超高清视频直播的快速起播方法及装置
US20230115947A1 (en) Buffer drain rate tuning to a measured maximum receive bandwidth measured for a client device when streaming
CN112422873B (zh) 插帧方法、装置、电子设备及存储介质
CN111654720B (zh) 视频编码方法、装置、设备及可读存储介质
US11539960B2 (en) Game application providing scene change hint for encoding at a cloud gaming server
EP1030515A1 (en) Moving picture synthesizer
CN106331877A (zh) 弹幕播放方法及装置
CN109089127A (zh) 一种视频拼接方法、装置、设备及介质
CN103688240A (zh) 用于发送数字场景描述数据的方法以及发送器和接收器场景处理设备
CN108881894B (zh) Vr多媒体的体验质量确定方法及装置
CN108156509B (zh) 视频播放方法、装置及用户终端
CN112601127B (zh) 视频显示方法及装置、电子设备、计算机可读存储介质
CN112448962B (zh) 视频抗锯齿显示方法、装置、计算机设备及可读存储介质
CN112055254B (zh) 视频播放的方法、装置、终端及存储介质
CN112019907A (zh) 直播画面分流方法、计算机设备及可读存储介质
CN107004018B (zh) 数据处理方法及装置
CN110248150B (zh) 一种图片显示的方法、设备及计算机存储介质
CN107852523B (zh) 用于在终端之间同步媒体渲染的方法、终端和设备
CN115209079B (zh) 一种适用于高速摄像机长时间存储数据的方法和设备
CN110677689A (zh) 一种基于用户视角的vr视频广告无缝插播方法
CN110662099A (zh) 用于显示弹幕的方法和装置
CN116582708B (zh) 视频播放方法、装置、电子设备及可读存储介质

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