CN108810622B - 视频帧的提取方法、装置、计算机可读介质及电子设备 - Google Patents

视频帧的提取方法、装置、计算机可读介质及电子设备 Download PDF

Info

Publication number
CN108810622B
CN108810622B CN201810745214.XA CN201810745214A CN108810622B CN 108810622 B CN108810622 B CN 108810622B CN 201810745214 A CN201810745214 A CN 201810745214A CN 108810622 B CN108810622 B CN 108810622B
Authority
CN
China
Prior art keywords
key frame
data
video
extracted
frame
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
CN201810745214.XA
Other languages
English (en)
Other versions
CN108810622A (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201810745214.XA priority Critical patent/CN108810622B/zh
Publication of CN108810622A publication Critical patent/CN108810622A/zh
Priority to PCT/CN2019/092280 priority patent/WO2020010997A1/zh
Application granted granted Critical
Publication of CN108810622B publication Critical patent/CN108810622B/zh
Priority to US17/024,630 priority patent/US11200426B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/40Scenes; Scene-specific elements in video content
    • G06V20/46Extracting features or characteristics from the video content, e.g. video fingerprints, representative shots or key frames
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/40Scenes; Scene-specific elements in video content
    • G06V20/41Higher-level, semantic clustering, classification or understanding of video scenes, e.g. detection, labelling or Markovian modelling of sport events or news items
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • 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/440263Processing 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 altering the spatial resolution, e.g. for displaying on a connected PDA
    • 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/488Data services, e.g. news ticker
    • H04N21/4884Data services, e.g. news ticker for displaying subtitles
    • 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/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8455Structuring of content, e.g. decomposing content into time segments involving pointers to the content, e.g. pointers to the I-frames of the video stream

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Television Signal Processing For Recording (AREA)

Abstract

本发明的实施例提供了一种视频帧的提取方法,包括:基于第一采样步长获取对象视频的关键帧时间戳列表,所述第一采样步长根据所述对象视频的长度进行调整;基于第二采样步长从所述关键帧时间戳列表获取待提取的关键帧时间戳,所述第二采样步长根据所述关键帧时间戳列表的项数以及待提取的帧个数来确定;以及根据所述待提取的关键帧时间戳读取对应关键帧的帧数据,并基于所述帧数据的硬解码结果生成与该关键帧对应的缩略图。本发明实施例的技术方案可以防止提取过程中出现漏帧和重复帧的问题,同时实现缩短处理时间和提高处理效率。

Description

视频帧的提取方法、装置、计算机可读介质及电子设备
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种视频帧的提取方法、装置、计算机可读介质及电子设备。
背景技术
随着计算机应用技术以及互联网特别是移动互联网的发展,网络上公开的信息迎来了爆炸式的增长,越来越多的领域选择通过网络的方式为用户提供服务,视频内容成为网络公开的重要媒介。
在传统视频内容服务仅能提供浏览、观看等功能的基础上,近年来又发展出缩略图预览、弹幕等越来越丰富的功能,对用户的使用体验有着明显的提升。尤其以缩略图预览为例,在视频观看和剪辑等场景都有着广泛的应用。
为了实现缩略图预览的功能,需要从完整的视频数据中提取出部分关键帧的数据,从而以图像的形式展示给用户。但是相关技术中提取视频帧的方案通常存在漏帧、重复帧和处理时间较长的问题。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本发明的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本发明实施例的目的在于提供一种视频帧的提取方法、装置、计算机可读介质及电子设备,进而至少在一定程度上克服相关技术中提取视频帧存在的漏帧和重复帧等问题。
本发明的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本发明的实践而习得。
根据本发明实施例的一个方面,提供了一种视频帧的提取方法,包括:基于第一采样步长获取对象视频的关键帧时间戳列表,所述第一采样步长根据所述对象视频的长度进行调整;基于第二采样步长从所述关键帧时间戳列表获取待提取的关键帧时间戳,所述第二采样步长根据所述关键帧时间戳列表的项数以及待提取的帧个数来确定;以及根据所述待提取的关键帧时间戳读取对应关键帧的帧数据,并基于所述帧数据的硬解码结果生成与该关键帧对应的缩略图。
根据本发明实施例的一个方面,提供了一种视频帧的提取装置,包括:第一采样模块,用于基于第一采样步长获取对象视频的关键帧时间戳列表,所述第一采样步长根据所述对象视频的长度进行调整;第二采样模块,用于基于第二采样步长从所述关键帧时间戳列表获取待提取的关键帧时间戳,所述第二采样步长根据所述关键帧时间戳列表的项数以及待提取的帧个数来确定;以及解码模块,用于根据所述待提取的关键帧时间戳读取对应关键帧的帧数据,并基于所述帧数据的硬解码结果生成与该关键帧对应的缩略图。
在本发明的一些实施例中,基于前述方案,所述解码模块包括:硬解码单元,用于通过硬解码的方式将所述帧数据解码为YUV数据;以及转换单元,用于将所述YUV数据转换为红绿蓝RGB数据,得到与该关键帧对应的位图。
在本发明的一些实施例中,基于前述方案,所述解码模块包括:硬解码单元,用于通过硬解码器MediaCodec解码所述帧数据,并基于所述MediaCodec提供的获取输出图像getOutputImage方法,将解码得到的YUV数据输出至图像Image数据承载类;YUV提取单元,用于基于所述Image数据承载类确定所述YUV数据的提取方式,并根据确定的所述提取方式获取每一个像素点的Y,U,V分量;以及转换单元,用于将所述每一个像素点的Y,U,V分量转换为对应的RGB数据,得到与该关键帧对应的位图。
在本发明的一些实施例中,基于前述方案,所述解码模块包括:输入缓存单元,用于通过媒体提取器MediaExtractor类的读取采样数据readSampleData方法,向空载输入缓存填充所述帧数据并传递给所述MediaCodec处理,并从所述MediaCodec请求所述空载输入缓存;以及输出缓存单元,用于从所述MediaCodec请求填充了所述YUV数据的负载输出缓存,在得到所述的与该关键帧对应的位图后,释放所述负载输出缓存以向所述MediaCodec返回空载输出缓存。
在本发明的一些实施例中,基于前述方案,所述解码模块包括:缩放单元,用于根据指定的缩略图尺寸对所述位图进行缩放;以及压缩单元,用于按照预设的编码格式对所述缩放后的位图进行压缩存储。
在本发明的一些实施例中,基于前述方案,所述第一采样模块包括:指针单元,用于通过媒体提取器MediaExtractor类的跳转seekTo方法,按照所述第一采样步长将提取数据指针移动至所述对象视频中各时间点的关键帧,所述第一采样步长为相邻时间点之间的间隔;以及第一采样单元,用于通过所述MediaExtractor类的获取采样时间getSampleTime方法,依次获取与所述各时间点的关键帧对应的时间戳,并将所述时间戳依次加入所述关键帧时间戳列表。
在本发明的一些实施例中,基于前述方案,所述第一采样模块还包括:分离单元,用于通过所述MediaExtractor类的设置数据源setDataSource方法,将所述对象视频加载至视频分离器,并通过获取轨道格式getTrackFormat方法获取所述对象视频的视频轨道数据。
在本发明的一些实施例中,基于前述方案,所述第二采样模块用于按照index=[m/n]*i+[m/n]/a从所述关键帧时间戳列表获取待提取的关键帧时间戳,其中,index表示所述关键帧时间戳列表中各关键帧时间戳的序号;m表示所述关键帧时间戳列表中关键帧时间戳的项数,n表示所述待提取的关键帧时间戳的数目;[m/n]为所述第二采样步长,表示对m除以n的结果取整;i表示待提取的关键帧时间戳的序号;a为正整数。
在本发明的一些实施例中,基于前述方案,还包括:存储模块,用于将生成的所述缩略图存入指定位置,使预先生成的缩略图列表从所述指定位置读取所述缩略图并显示。
根据本发明实施例的一个方面,提供了一种计算机可读介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述实施例中所述的视频帧的提取方法。
根据本发明实施例的一个方面,提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上述实施例中所述的视频帧的提取方法。
在本发明的一些实施例所提供的技术方案中,根据视频时长自适应调整关键帧时间戳的采样间隔,进而根据需要的缩略图数目在关键帧时间戳列表中进行二次采样,基于硬解码方式处理采样结果生成缩略图,可以防止提取过程中出现漏帧和重复帧的问题,同时实现缩短处理时间和提高处理效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1示出了可以应用本发明实施例的视频帧的提取方法或视频帧的提取装置的示例性系统架构的示意图。
图2示出了适于用来实现本发明实施例的电子设备的计算机系统的结构示意图。
图3示意性示出了根据本发明的一个实施例的视频帧的提取方法的流程图。
图4示意性示出了根据本发明的另一个实施例的视频帧的提取方法的流程图。
图5示意性示出了生成关键帧时间戳列表的一个示例流程图。
图6示意性示出了硬解码器的一个示例处理流程图。
图7示意性示出了生成并存储位图的一个示例流程图。
图8示意性示出了视频编辑场景中显示缩略图的一个示例用户界面。
图9示意性示出了根据本发明的一个实施例的视频帧的提取装置的框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本发明将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本发明的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本发明的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
图1示出了可以应用本发明实施例的视频帧的提取方法或视频帧的提取装置的示例性系统架构100的示意图。
如图1所示,系统架构100可以包括终端设备101、102、103中的一种或多种,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线通信链路、无线通信链路等等。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。比如服务器105可以是多个服务器组成的服务器集群等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103可以是具有显示屏的各种电子设备,包括但不限于智能手机、平板电脑、便携式计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器。例如用户利用终端设备103(也可以是终端设备101或102)向服务器105请求待处理的视频,如实时直播视频、UGC(UserGenerated Content,用户原创内容)视频、游戏视频等,终端设备103在接收到服务器105返回的对象视频文件或地址后,可以从对象视频中提取预设数目的视频帧,并生成缩略图向用户展示。比如,终端设备103可以基于第一采样步长获取对象视频的关键帧时间戳列表,所述第一采样步长根据所述对象视频的长度进行调整;基于第二采样步长从所述关键帧时间戳列表获取待提取的关键帧时间戳,所述第二采样步长根据所述关键帧时间戳列表的项数以及待提取的帧个数来确定;以及根据所述待提取的关键帧时间戳读取对应关键帧的帧数据,并基于所述帧数据的硬解码结果生成与该关键帧对应的缩略图。
在另一个实施例中,用户可以利用终端设备103对本地存储的视频文件进行上述处理;或者由服务器105进行上述处理后将结果返回给终端设备103。
需要说明的是,本发明实施例所提供的视频帧的提取方法一般由终端设备执行,相应地,视频帧的提取装置一般设置于终端设备中。但是,在本发明的其它实施例中,服务器可以完成类似的处理,从而执行本发明实施例所提供的视频帧的提取方案。
图2示出了适于用来实现本发明实施例的电子设备的计算机系统的结构示意图。
需要说明的是,图2示出的电子设备的计算机系统200仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图2所示,计算机系统200包括中央处理单元(CPU)201,其可以根据存储在只读存储器(ROM)202中的程序或者从存储部分208加载到随机访问存储器(RAM)203中的程序而执行各种适当的动作和处理。在RAM 203中,还存储有系统操作所需的各种程序和数据。CPU201、ROM202以及RAM 203通过总线204彼此相连。输入/输出(I/O)接口205也连接至总线204。
以下部件连接至I/O接口205:包括键盘、鼠标等的输入部分206;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分207;包括硬盘等的存储部分208;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分209。通信部分209经由诸如因特网的网络执行通信处理。驱动器210也根据需要连接至I/O接口205。可拆卸介质211,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器210上,以便于从其上读出的计算机程序根据需要被安装入存储部分208。
特别地,根据本发明的实施例,下文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分209从网络上被下载和安装,和/或从可拆卸介质211被安装。在该计算机程序被中央处理单元(CPU)201执行时,执行本申请的系统中限定的各种功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如下述实施例中所述的方法。例如,所述的电子设备可以实现如图3至图6、图8所示的各个步骤。
以下对本发明实施例的技术方案的实现细节进行详细阐述。
图3示意性示出了根据本发明的一个实施例的视频帧的提取方法的流程图,该视频帧的提取方法适用于前述实施例中所述的电子设备。参照图3所示,该视频帧的提取方法至少包括步骤310至步骤330,详细介绍如下:
在步骤310中,基于第一采样步长获取对象视频的关键帧时间戳列表,所述第一采样步长根据所述对象视频的长度进行调整。
在一个实施例中,对象视频包括当前待处理的视频文件。例如,可基于用户的选择操作从本地存储的视频库中确定对象视频,或者还可基于用户的访问请求从服务器下载相应的对象视频,进而开始从对象视频中提取视频帧的处理流程。
相关技术中在确定对象视频后,一般就直接开始进行视频帧的提取,例如按照固定的时间间隔从对象视频中提取帧画面,这样对于时长较小的视频而言,可能后面提取到的都是重复的帧画面;而对于时长较大的视频而言,提取到的可能都是靠前的帧画面,从而漏掉后面的重要帧,对于整个对象视频而言丧失了代表性。
本实施例中采用两次采样的方式来解决上述问题。
对于第一次采样,在步骤310中基于第一采样步长获取对象视频的关键帧时间戳列表。这里的第一采样步长根据对象视频的长度进行调整,以使得第一次采样到的关键帧时间戳能够尽量覆盖对象视频的整个时长,进而保证第二次采样有足够多且足够覆盖整个视频的关键帧对象作为采样基础。
这里的关键帧也被称为I帧,其是帧间压缩编码的最重要帧。具体而言,视频的编码是按照“组”来进行的,每一个组叫作GOP(Group of Picture,图像组)。关键帧可以理解为一幅完整的画面,每一个GOP都是由关键帧开始,至于GOP中间的帧则都是不完整的,需要由关键帧、前面帧以及后面帧等一起运算得到。
出于以上特点,本发明的实施例通过提取关键帧来生成对应的缩略图。关键帧时间戳是指与采样到的关键帧对应的时间戳信息。换言之,在步骤310涉及的第一次采样中,并不读取关键帧的帧数据,而只记录关键帧的时间戳,并保存为列表的形式作为后续第二次采样的基础。
在一个实施例中,上述第一采样步长ts1根据对象视频的时长T进行调整,例如可以包括:
当0<T<10s时,可设置ts1为200ms,即每隔200ms提取关键帧时间戳;
当10s≤T<60s时,可设置ts1为1s,即每隔1s提取关键帧时间戳;
当60s≤T<5*60s时,可设置ts1为5s,即每隔5s提取关键帧时间戳;
当5*60≤T<60*60s时,可设置ts1为10s,即每隔10s提取关键帧时间戳;
当60*60s≤T<2*60*60s时,可设置ts1为20s,即每隔20s提取关键帧时间戳;
当T≥2*60*60s时,可设置为30s。
在一个实施例中,步骤310可通过MediaExtractor(媒体提取器)提供的seekTo(跳转)方法来遍历对象视频中的关键帧,并通过MediaExtractor提供的getSampleTime(获取采样时间)方法按照第一采样步长提取关键帧的时间戳信息。
以30s时长的视频为例,按照以上实施例第一采样步长ts1例如被设置为1s,则步骤310获取的关键帧时间戳列表例如呈现为如下表1的形式。
Figure BDA0001724173180000101
表1:关键帧时间戳列表示例
需要说明的是,为简洁起见,表1中省略了关键帧序号为4-14和17-28的时间戳信息。
另外,由表1可见,相邻关键帧的时间戳之间并不一定严格的间隔1000ms(即1s),这是由于间隔1000ms位置处的帧不一定为关键帧。例如,可采用上述实施例的seekTo方法,自动将相应位置处距离最近的关键帧记录在上述时间戳列表中。
继续参照图3所示,在步骤320中,基于第二采样步长从所述关键帧时间戳列表获取待提取的关键帧时间戳,所述第二采样步长根据所述关键帧时间戳列表的项数以及待提取的帧个数来确定。
基于步骤310,能够保证提取到的关键帧时间戳列表中关键帧的数目大于等于期望提取的帧画面个数。因此,步骤320涉及对关键帧时间戳列表进行采样(第二次采样),得到期望提取的关键帧时间戳。
这里,第二采样步长可根据关键帧时间戳列表的项数以及待提取的帧个数来确定。
例如,假设关键帧时间戳列表中关键帧时间戳的项数为m,待提取的关键帧时间戳的数目为n,则第二采样步长可设置为[m/n],表示对m除以n的结果取整。进一步,步骤320可按照index=[m/n]*i+[m/n]/a从关键帧时间戳列表获取待提取的关键帧时间戳,这里index表示关键帧时间戳列表中各关键帧时间戳的序号,i表示待提取的关键帧时间戳的序号,a为正整数,表示期望从第二采样步长的1/a处开始提取关键帧时间戳。下面以一个具体示例加以详细说明。
假设对象视频的时长为30s,基于步骤310例如可得到表1所示的关键帧时间戳列表,其项数m为30。假设待提取的帧个数n为10,则第二采样步长可设置为[m/n]=3。例如设定a=3,则从关键帧时间戳列表提取的第一个(序号为0)关键帧的索引位置为index=3*0+3/3=1,即提取关键帧时间戳列表中的第一项,依此类推,步骤320获取的关键帧时间戳例如呈现为表2的形式。
Figure BDA0001724173180000111
表2:待提取的关键帧列表示例
由表2可见,基于步骤320的第二次采样,可以基于表1获取到待提取的视频关键帧的时间戳信息。
继续参照图3所示,在步骤330中,根据所述待提取的关键帧时间戳读取对应关键帧的帧数据,并基于所述帧数据的硬解码结果生成与该关键帧对应的缩略图。
依次经过步骤310的第一次采样和步骤320的第二次采样,可获取到待提取的关键帧时间戳信息。步骤330需要根据该信息读取对应的关键帧数据,以生成对应的缩略图。
以Android(安卓)系统为例,相关技术中一般是通过系统自带的MediaMetaDataRetriever(媒体元数据检索器)类所提供的getFrameAtTime(按时间获取帧)方法,按照固定的时间间隔提取视频文件的帧画面。采用这种方式提取帧画面时,对视频文件比较小及分辨率比较低的视频可能满足提取的基本要求,例如能在400ms以内完成提取,但是当视频文件比较大、分辨率比较高时,这种方式提取视频帧画面会非常耗时。例如,对于某时长为30分钟、大小为246M、分辨率为720*480的样本视频,采用上述方式每张帧图片提取至少需要近900ms,并且随着文件越大、分辨率越高,花费的时间越长。
为此,本发明的实施例中,步骤330根据步骤320采样的待提取关键帧时间戳读取对应的帧数据(此时是经过压缩的未解码视频帧),进而通过硬解码的方式对视频帧进行解码,还原成压缩前的数据,并据此生成对应的缩略图。
在一个实施例中,可通过MediaExtractor(媒体提取器)类提供的seekTo方法,按照待提取的时间戳列表(如上文表2)将数据指针移动至指定时间点的关键帧,然后通过MediaExtractor类的readSampleData(读取采样数据)方法读取该关键帧的视频帧数据。
在一个实施例中,可通过硬解码的方式将视频帧数据解码为YUV数据,进而将YUV数据转换为红绿蓝RGB数据,得到与该关键帧对应的位图。这里的YUV和RGB属于不同的颜色空间模型表示方法,下面分别进行简单的介绍。
颜色空间模型
在数字图像处理中,颜色通常用三个独立的属性来描述,三个独立变量综合作用,构成一个空间坐标,从而形成所谓的颜色空间。常见的颜色空间模型包括基色颜色空间以及色、亮分离颜色空间两大类,前者典型代表是RGB(分别对应红、绿、蓝),后者包括YUV(Y表示亮度,UV表示色度)和HSV(分别对应色相、饱和度、亮度)等等。下面进一步对RGB和YUV加以简要描述。
RGB
在RGB颜色空间中,任意色光都可以用R、G、B三色不同分量的相加混合而成,当三基色分量都为0(最弱)时混合为黑色光,都为最大值时混合为白色光。
根据每个分量在计算机中占用的存储字节数不同,RGB颜色空间通常包括RGB555、RGB565、RGB24和RGB32等几种类型,分别对应每个像素占用16位、16位、24位和32位的存储字节。
YUV
YUV(亦称YCrCb)是被欧洲电视系统所采用的一种颜色编码方法,特点在于其亮度信号Y和色度信号U、V是分离的。这样一来,如果只有Y信号分量而没有U、V信号分量,表示的图像就是黑白灰度图像。
不同于RGB中每个像素点都有独立的三个颜色分量值,YUV根据U和V采样数目的不同,分为如YUV444、YUV422和YUV420等格式,以YUV420为例,表示的就是每个像素点有一个独立的Y分量;而色度U和V分量则由每4个像素点共用一个。如此一来通过将图像从RGB转换到YUV空间,便能实现存储效率的提高。
综上所述,RGB和YUV均有各自的特点,在进行图像的传输和存储时,为了节省网络和存储资源,一般会先将图像从RGB转换成YUV,再在YUV数据的基础上进行编码压缩操作;另一方面,由于大多数图像处理操作仍是基于RGB格式,因此要对图像进行后期处理显示时,需要把YUV格式转换成RGB格式。
例如,上述步骤330中对视频帧进行硬解码后得到压缩前的YUV数据,为了生成相应的缩略图进行显示,可将YUV数据转换为RGB数据。
在一个实施例中,从YUV向RGB转换的公式如下所示(RGB取值范围均为0-255):
R=Y+1.402(V-128)
G=Y-0.34414(U-128)-0.71414(V-128)
B=Y+1.772(U-128)
基于上述本发明实施例提供的视频帧提取方法,根据视频时长自适应调整关键帧时间戳的采样间隔,进而根据需要的缩略图数目在关键帧时间戳列表中进行二次采样,基于硬解码方式处理采样结果生成缩略图,可以防止提取过程中出现漏帧和重复帧的问题,同时实现缩短处理时间和提高处理效率。
图4示意性示出了根据本发明的另一个实施例的视频帧的提取方法的流程图,该视频帧的提取方法适用于前述实施例中所述的电子设备。参照图4所示,该视频帧的提取方法至少包括步骤410至步骤490,详细介绍如下:
在步骤410中,通过MediaExtractor类的setDataSource方法,将对象视频加载至视频分离器,并通过getTrackFormat方法获取对象视频的视频轨道数据。
作为Android系统提供的类,MediaExtractor可用于分离容器中的视频轨道和音频轨道。
在一个实施例中,可通过MediaExtractor的setDataSource(设置数据源)方法,将视频文件加载进视频分离器,用来提取视频轨道的视频信息;进而通过getTrackFormat(获取轨道格式)方法获取提取轨道的格式信息,并判断当前轨道的格式信息是否是视频轨道,若是则记录当前轨道的索引信息,否则继续遍历所有轨道,直至获取到对象视频的所有视频轨道数据。
在步骤420中,通过MediaExtractor的seekTo方法,按照第一采样步长将提取数据指针移动至视频轨道数据中各时间点的关键帧。
MediaExtractor类的seekTo方法一般用于遍历视频中的所有关键帧。在本实施例中,通过改变seekTo方法的参数(时间,单位毫秒),可实现按照预设的采样步长定位到对象视频中各时间点的关键帧。
这里第一采样步长可根据对象视频的长度进行自适应调整,相关方案可参见前一实施例中步骤310的详细描述,此处不再赘述。
在步骤430中,通过getSampleTime方法,依次获取与各时间点的关键帧对应的时间戳,并将时间戳依次加入关键帧时间戳列表。
MediaExtractor类的getSampleTime可用来提取当前帧的时间戳信息。
步骤420中按照第一采样步长将提取数据指针移动至各时间点的关键帧,本步骤中即可使用getSampleTime方法,获得当前提取数据指针所指示的关键帧的时间戳信息,并将其加入关键帧时间戳列表。
图5示意性示出了生成关键帧时间戳列表的一个示例流程图,可视为步骤420-430的一个更具体的实施例,如图5所示,该示例流程包括步骤510-540。
在步骤510中,初始化提取第一帧的时间点t0。
例如,可设定t0=1s,也即1000ms。
在步骤520中,通过MediaExtractor类的seekTo方法跳转至t0时间点的关键帧。
如上所述,seekTo方法可以将提取数据指针移动至指定时间点的视频关键帧画面。
在步骤530中,通过MediaExtractor类的getSampleTime方法获取对应关键帧的时间戳,并将其加入关键帧时间戳列表中。
如上文所述,t0时刻(即1000ms)处的视频帧可能并非关键帧,seekTo方法可跳转到距t0时刻最近的一个关键帧,进而可使用getSampleTime方法获取对应的时间戳信息。
在步骤540中,将当前时间点t0加上第一采样步长,判断新的t0是否大于对象视频的时长,若是则结束流程,否则返回步骤520。
如上文所述,这里第一采样步长可根据对象视频的长度进行自适应调整,此处不再赘述。
基于步骤540,流程将重复步骤520-540直至最终的当前时间点加上第一采样步长超过对象视频的时长。
仍以30s时长的视频为例,按照第一采样步长设置为1s的情况,则步骤430最终得到的关键帧时间戳列表例如为上文表1所示。
继续参照图4所示,在步骤440中,基于第二采样步长从关键帧时间戳列表获取待提取的关键帧时间戳。
此处步骤440可参照上文实施例步骤320的描述,此处不再赘述。
仍以30s时长的视频为例,假设基于步骤430可得到表1所示的关键帧时间戳列表,并假设待提取的帧个数为10,则第二采样步长可设置为3,从关键帧时间戳列表提取的第一个(序号为0)关键帧的索引位置为index=3*0+3/3=1,即提取关键帧时间戳列表中的第一项,依此类推,步骤440获取的关键帧时间戳例如呈现为表2的形式。
在步骤450中,使用MediaExtractor类的seekTo方法,将数据指针移动至指定时间点的关键帧,然后通过readSampleData方法读取该关键帧的视频帧数据。
与步骤420中按照第一采样步长使用seekTo方法定位关键帧不同,本步骤中已基于步骤440得到待提取的关键帧时间戳,因此使用seekTo可直接定位到待提取的关键帧处,进而可使用readSampleData方法读取该关键帧的视频帧数据。
在步骤460中,通过硬解码器MediaCodec解码帧数据,并基于MediaCodec提供的getOutputImage方法,将解码得到的YUV数据输出至Image数据承载类。
步骤450通过readSampleData方法读取的帧数据是经过压缩、未解码的视频帧,步骤460通过硬解码器MediaCodec将该帧数据解码成压缩前的YUV数据。
在一个实施例中,MediaCodec采用异步方式处理数据,并且使用一组输入输出缓存(input and output buffers)分别处理输入和输出数据。图6示意性示出了硬解码器的一个示例处理流程图,以下结合图6对MediaCodec的处理流程进行简要描述。
首先,从硬解码器610请求或接收一个空载输入缓存(input buffer),向其中填充满数据后传递至硬解码器610处理。在一个实施例中,如步骤450所述,可通过MediaExtractor类620的readSampleData方法,向空载输入缓存611填充读取到的帧数据,并将满载输入缓存612传递给硬解码器610处理,同时继续从硬解码器610请求新的空载输入缓存611。
接续,硬解码器610提取满载输入缓存612中的帧数据进行解码处理,将解码数据填充至空载输出缓存(output buffer)613,并将填充有数据的满载输出缓存614传递至Image数据承载类630,用于后续从解码数据中提取Y,U,V分量(参见步骤470)及转换为RGB格式以生成缩略图(参见步骤480)。
基于Image数据承载类630承载的数据,每生成一帧的缩略图,就释放出空载输出缓存613给硬解码器610再次使用,同时再从硬解码器610请求或接收一个满载输出缓存614进行处理。
继续参照图4所示,在步骤470中,基于Image数据承载类确定YUV数据的提取方式,并根据确定的提取方式获取每一个像素点的Y,U,V分量。
由于不同的芯片厂商使用的YUV格式帧的编码方式不一样,给解码出指定格式的视频帧数据带来极大的麻烦。本发明的实施例是利用getOutputImage方法获取输出帧数据buffer(缓存),并返回Image数据承载类的对象,进而将Image对象中的byteBuffer(字节缓存)数据,解码成指定的YUV帧格式数据。
如上文所述,YUV根据U和V采样数目的不同,分为如YUV444、YUV422和YUV420等个数。以YUV420为例,表示的就是每个像素点有一个独立的亮度表示,即Y分量;而色度,即U和V分量则由每4个像素点共用一个。
例如,对于4x4的图片,在YUV420格式下,有16个Y值,4个U值和4个V值。YUV420根据颜色数据的存储顺序不同,又分为多种不同的格式,如YUV420Planar、YUV420PackedPlanar、YUV420SemiPlanar和YUV420PackedSemiPlanar,但这些格式实际存储的信息是完全一致的。比如I420(YUV420Planar的一种)内存的存储样式则为:
YYYYYYYYYYYYYYYYUUUUVVVV;
NV21(YUV420SemiPlanar的一种)内存的存储样式则为:
YYYYYYYYYYYYYYYYVUVUVUVU。
换言之,针对每一种不同的格式都需要采取不同的解码方式,如果不知道具体编码采用的是哪种格式,则无法解码出指定的YUV格式帧的数据信息。
为此,本发明的实施例利用谷歌提供的YUV420Flexible(该格式是一种YUV420格式的集合),以及解码器getOutPutImage返回的视频帧未压缩数据载体类Image,可很好的解决上述问题。具体而言,Image类提供了各种格式YUV420可通用的一种存储方式,将不同格式对应的Y、U、V分量分别存储在三个不同的Plane(层)下,然后通过不同格式所对应的统一的提取方式来获取对应的Y、U、V分量。不同格式Y分量的存储方式是一样的,其对应的U分量及V分量对应不同的pixelStride(像素步长)和rowStride(行步长),因此可根据这两个值来决定具体的提取方式。下面以一个具体示例加以说明。
例如,假设步骤460输出Image对象中三个Plane的数据读取格式如表3所示:
Figure BDA0001724173180000181
Figure BDA0001724173180000191
表3:Image对象的数据读取格式示意
从表3可知,图像格式值为35,表示YUV_420_888通用格式,有3个planes,对应的图片分辨率为1920×1080,像素点个数为2073600。缓存大小为2088960,因为涉及到内存对齐的问题,所以比实际像素点的个数要大一些。由此可知,Y分量包含有全部的像素点,而U和V都只含有1/4的像素点。其中,Y分量中行步长为1920,像素步长代表行内颜色值间隔,取1表示无间隔,即对于一行1920个像素点每个都有独立的值,根据其缓存大小可以得出共有1080行;而U分量中,像素步长取值为1,且一行1920个像素点只有960个值,即行内每两个像素点共用一个U值,根据其缓存大小得出共有540行,即行间每两个像素点共用一个U值;如果像素步长取2,则代表行内颜色间隔为1,也就是说只有行内索引为0、2、4、6....才有U分量的值。V分量的提取原理与U分量类似,此处不再赘述。
继续参照图4所示,在步骤480中,将每一个像素点的Y,U,V分量转换为对应的RGB数据,得到与该关键帧对应的缩略图。
通过步骤470可以获取每一个像素点的Y,U,V分量,步骤480即可将提取的Y,U,V分量转换成RGB图片进行存储。
图7示意性示出了生成并存储位图的一个示例流程图,可视为步骤480的一个更具体的实施例,如图7所示,该示例流程包括步骤710-740。
在步骤710中,创建与Image类中宽高大小对应的空白位图。
以表3为例,Image类中图片分辨率大小为1920×1080,步骤710中例如可创建1920×1080的空白位图(bitmap)。
在步骤720中,遍历空白位图的每个像素,将获取的YUV分量转换为RGB分量后赋值给对应的像素。
由于位图的每一个像素点对应RGB三个字节,因此步骤720基于步骤470获取的每一个像素点的YUV分量来计算对应的RGB分量。
如前文所述,从YUV向RGB转换的公式例如可如下所示(RGB取值范围均为0-255):
R=Y+1.402(V-128)
G=Y-0.34414(U-128)-0.71414(V-128)
B=Y+1.772(U-128)
在步骤730中,根据指定的缩略图尺寸对位图进行缩放。
根据使用场景的不同,待生成的缩略图尺寸也可设置为不同大小。相应地,步骤730可根据设定的缩略图尺寸对步骤720得到的位图进行缩放,从而能够减少位图的占用空间,提高后续缩略图的加载效率。
在步骤740中,按照预设的编码格式对缩放后的位图进行压缩存储。
根据使用场景的不同,待生成的缩略图也可采用不同的压缩格式。例如,步骤740可将缩放后的位图进行压缩保存为JPEG格式的图片。
继续参照图4所示,在步骤490中,将生成的缩略图存入指定位置,使预先生成的缩略图列表从指定位置读取缩略图并显示。
根据缩略图的显示场景不同,可按照不同呈现形式来显示上述生成的缩略图。在一个实施例中,缩略图列表可预先指定缩略图的存储位置,一旦完成步骤410-480的缩略图生成处理,将生成的缩略图存入指定位置,便可通知缩略图列表,或者缩略图列表也可通过主动的周期性读取,从指定位置读取相应的缩略图并显示。
图8示意性示出了视频编辑场景中显示缩略图的一个示例用户界面(UI),例如表示某视频编辑软件的视频裁剪界面800。在视频裁剪界面800中,展示区810例如用于滚动播放用户选择的待编辑视频,预览区820例如用于展示特定时长内的缩略图。
裁剪视频的前提是选择视频的起始和结束时间点。例如对于总时长为30min(分钟)的视频,假设用户需要裁剪出的视频时长为5min。为便于用户从30min的视频中选出符合期望的5min片段,可基于步骤410-480针对30min的视频提取缩略图,并根据用户的滚动操作在预览区820中始终展示出5min视频的缩略图。例如,预览区820中初始展示0-5min视频片段的缩略图,当用户通过鼠标滚动或拖动操作或者通过键盘按方向键操作时,预览区820可根据操作幅度展示1min-6min、2min-7min、或者6min-10min视频片段的缩略图,从而便于用户选择出要裁剪的起始和结束时间点。
由上述可知,在一个实施例中,可通过预览区820的特定宽度表示5min的时长。例如,假设预览区820对应的宽度为650pix(像素点),则可从5min的视频关键帧中,提取特定张数的缩略图显示在650pix宽的区域中,同时可接收用户的滚动操作,以滚动缩略图列表进行展示的形式,供用户选择视频的其他裁剪时间点。
这里提取的张数可根据需求来合理设定,若选择太多,则预览区820中显示太过密集,用户无法看清,并且缩略图占用内存也较多,影响应用程序的性能;若选择太少,则可能需要拉伸变形才能填满预览区820,从而影响美观,也会影响用户对时间点的选择。有鉴于此,在一个实施例中,可选择10个关键帧画面的缩略图来填充预览区820,以表示5min的时长。
为了实现上述滚动显示的效果,构建的缩略图列表以视频的整个时长为基础,以30min的时长为例,待提取的关键帧数目例如可为60(=10*30/5)。相应的,步骤410-480的目标是通过提取关键帧最终生成60张缩略图,步骤490将缩略图存储至指定位置后,缩略图列表可从指定位置读取缩略图,例如每次都读取连续10张缩略图,显示在预览区820中。
这里,也可基于用户操作确定预览区820中显示的缩略图的范围。例如,预览区820中初始展示第1-10张缩略图,当终端确定在预览区820中接收到用户的鼠标滚动或拖动操作时,可根据操作幅度读取并在预览区820中展示例如第2-11、3-12或者11-20张缩略图。
在一个实施例中,展示区810中的视频播放进度与预览区820中的缩略图显示范围,二者之间可设置为联动。例如,当用户在展示区810中选择快进或快退视频时,预览区820中显示的缩略图范围也相应往后或往前滑动;反之,当用户在预览区820中拖动或滚动缩略图往后或往前时,展示区810中的视频也相应快进或快退播放。
以上图8显示的视频编辑场景仅为示意,本发明的实施例并不仅限于此,例如还可应用于视频预览、在线视频播放、视频搜索、视频图像原语生成等各种视频处理场景,此处不再赘述。
以下介绍本发明的装置实施例,可以用于执行本发明上述实施例中的视频帧的提取方法。对于本发明装置实施例中未披露的细节,请参照本发明上述的视频帧的提取方法的实施例。
图9示意性示出了根据本发明的一个实施例的视频帧的提取装置的框图。
参照图9所示,根据本发明的一个实施例的视频帧的提取装置900,包括:第一采样模块910、第二采样模块920和解码模块930。
其中,第一采样模块910用于基于第一采样步长获取对象视频的关键帧时间戳列表,所述第一采样步长根据所述对象视频的长度进行调整;第二采样模块920用于基于第二采样步长从所述关键帧时间戳列表获取待提取的关键帧时间戳,所述第二采样步长根据所述关键帧时间戳列表的项数以及待提取的帧个数来确定;解码模块930用于根据所述待提取的关键帧时间戳读取对应关键帧的帧数据,并基于所述帧数据的硬解码结果生成与该关键帧对应的缩略图。
在本发明的一些实施例中,基于前述方案,所述解码模块930包括:硬解码单元,用于通过硬解码的方式将所述帧数据解码为YUV数据;以及转换单元,用于将所述YUV数据转换为红绿蓝RGB数据,得到与该关键帧对应的位图。
在本发明的一些实施例中,基于前述方案,所述解码模块930包括:硬解码单元,用于通过硬解码器MediaCodec解码所述帧数据,并基于所述MediaCodec提供的获取输出图像getOutputImage方法,将解码得到的YUV数据输出至图像Image数据承载类;YUV提取单元,用于基于所述Image数据承载类确定所述YUV数据的提取方式,并根据确定的所述提取方式获取每一个像素点的Y,U,V分量;以及转换单元,用于将所述每一个像素点的Y,U,V分量转换为对应的RGB数据,得到与该关键帧对应的位图。
在本发明的一些实施例中,基于前述方案,所述解码模块930还包括:输入缓存单元,用于通过媒体提取器MediaExtractor类的读取采样数据readSampleData方法,向空载输入缓存填充所述帧数据并传递给所述MediaCodec处理,并从所述MediaCodec请求所述空载输入缓存;以及输出缓存单元,用于从所述MediaCodec请求填充了所述YUV数据的负载输出缓存,在得到所述的与该关键帧对应的位图后,释放所述负载输出缓存以向所述MediaCodec返回空载输出缓存。
在本发明的一些实施例中,基于前述方案,所述解码模块930还包括:缩放单元,用于根据指定的缩略图尺寸对所述位图进行缩放;以及压缩单元,用于按照预设的编码格式对所述缩放后的位图进行压缩存储。
在本发明的一些实施例中,基于前述方案,所述第一采样模块910包括:指针单元,用于通过媒体提取器MediaExtractor类的跳转seekTo方法,按照所述第一采样步长将提取数据指针移动至所述对象视频中各时间点的关键帧,所述第一采样步长为相邻时间点之间的间隔;以及第一采样单元,用于通过所述MediaExtractor类的获取采样时间getSampleTime方法,依次获取与所述各时间点的关键帧对应的时间戳,并将所述时间戳依次加入所述关键帧时间戳列表。
在本发明的一些实施例中,基于前述方案,所述第一采样模块910还包括:分离单元,用于通过所述MediaExtractor类的设置数据源setDataSource方法,将所述对象视频加载至视频分离器,并通过获取轨道格式getTrackFormat方法获取所述对象视频的视频轨道数据。
在本发明的一些实施例中,基于前述方案,所述第二采样模块920用于按照index=[m/n]*i+[m/n]/a从所述关键帧时间戳列表获取待提取的关键帧时间戳,其中,index表示所述关键帧时间戳列表中各关键帧时间戳的序号;m表示所述关键帧时间戳列表中关键帧时间戳的项数,n表示所述待提取的关键帧时间戳的数目;[m/n]为所述第二采样步长,表示对m除以n的结果取整;i表示待提取的关键帧时间戳的序号;a为正整数。
在本发明的一些实施例中,基于前述方案,视频帧的提取装置900还包括:存储模块,用于将生成的所述缩略图存入指定位置,使预先生成的缩略图列表从所述指定位置读取所述缩略图并显示。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本发明实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

Claims (12)

1.一种视频帧的提取方法,其特征在于,包括:
基于第一采样步长获取对象视频的关键帧时间戳列表,所述第一采样步长根据所述对象视频的长度进行调整;
基于第二采样步长从所述关键帧时间戳列表获取待提取的关键帧时间戳,所述第二采样步长根据所述关键帧时间戳列表的项数以及待提取的帧个数来确定;以及
根据所述待提取的关键帧时间戳读取对应关键帧的帧数据,并基于所述帧数据的硬解码结果生成与该关键帧对应的缩略图。
2.如权利要求1所述视频帧的提取方法,其特征在于,所述的基于所述帧数据的硬解码结果生成与该关键帧对应的缩略图,包括:
通过硬解码的方式将所述帧数据解码为YUV数据;
将所述YUV数据转换为红绿蓝RGB数据,得到与该关键帧对应的位图。
3.如权利要求1所述视频帧的提取方法,其特征在于,所述的基于所述帧数据的硬解码结果生成与该关键帧对应的缩略图,包括:
通过硬解码器MediaCodec解码所述帧数据,并基于所述MediaCodec提供的获取输出图像getOutputImage方法,将解码得到的YUV数据输出至图像Image数据承载类;
基于所述Image数据承载类确定所述YUV数据的提取方式,并根据确定的所述提取方式获取每一个像素点的Y,U,V分量;
将所述每一个像素点的Y,U,V分量转换为对应的RGB数据,得到与该关键帧对应的位图。
4.如权利要求3所述视频帧的提取方法,其特征在于,还包括:
通过媒体提取器MediaExtractor类的读取采样数据readSampleData方法,向空载输入缓存填充所述帧数据并传递给所述MediaCodec处理,并从所述MediaCodec请求所述空载输入缓存;以及
从所述MediaCodec请求填充了所述YUV数据的负载输出缓存,在得到所述的与该关键帧对应的位图后,释放所述负载输出缓存以向所述MediaCodec返回空载输出缓存。
5.如权利要求2-4中任一项所述视频帧的提取方法,其特征在于,所述的基于所述帧数据的硬解码结果生成与该关键帧对应的缩略图,还包括:
根据指定的缩略图尺寸对所述位图进行缩放;以及
按照预设的编码格式对所述缩放后的位图进行压缩存储。
6.如权利要求1-4中任一项所述视频帧的提取方法,其特征在于,所述的基于第一采样步长获取对象视频的关键帧时间戳列表,包括:
通过媒体提取器MediaExtractor类的跳转seekTo方法,按照所述第一采样步长将提取数据指针移动至所述对象视频中各时间点的关键帧,所述第一采样步长为相邻时间点之间的间隔;以及
通过所述MediaExtractor类的获取采样时间getSampleTime方法,依次获取与所述各时间点的关键帧对应的时间戳,并将所述时间戳依次加入所述关键帧时间戳列表。
7.如权利要求6所述视频帧的提取方法,其特征在于,还包括:
通过所述MediaExtractor类的设置数据源setDataSource方法,将所述对象视频加载至视频分离器,并通过获取轨道格式getTrackFormat方法获取所述对象视频的视频轨道数据。
8.如权利要求1-4中任一项所述视频帧的提取方法,其特征在于,所述的基于第二采样步长从所述关键帧时间戳列表获取待提取的关键帧时间戳,包括:
按照index=[m/n]*i+[m/n]/a从所述关键帧时间戳列表获取待提取的关键帧时间戳,
其中,index表示所述关键帧时间戳列表中各关键帧时间戳的序号;m表示所述关键帧时间戳列表中关键帧时间戳的项数,n表示所述待提取的关键帧时间戳的数目;[m/n]为所述第二采样步长,表示对m除以n的结果取整;i表示待提取的关键帧时间戳的序号;a为正整数。
9.如权利要求1-4中任一项所述视频帧的提取方法,其特征在于,还包括:
将生成的所述缩略图存入指定位置,使预先生成的缩略图列表从所述指定位置读取所述缩略图并显示。
10.一种视频帧的提取装置,其特征在于,包括:
第一采样模块,用于基于第一采样步长获取对象视频的关键帧时间戳列表,所述第一采样步长根据所述对象视频的长度进行调整;
第二采样模块,用于基于第二采样步长从所述关键帧时间戳列表获取待提取的关键帧时间戳,所述第二采样步长根据所述关键帧时间戳列表的项数以及待提取的帧个数来确定;以及
解码模块,用于根据所述待提取的关键帧时间戳读取对应关键帧的帧数据,并基于所述帧数据的硬解码结果生成与该关键帧对应的缩略图。
11.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至9中任一项所述的视频帧的提取方法。
12.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至9中任一项所述的视频帧的提取方法。
CN201810745214.XA 2018-07-09 2018-07-09 视频帧的提取方法、装置、计算机可读介质及电子设备 Active CN108810622B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201810745214.XA CN108810622B (zh) 2018-07-09 2018-07-09 视频帧的提取方法、装置、计算机可读介质及电子设备
PCT/CN2019/092280 WO2020010997A1 (zh) 2018-07-09 2019-06-21 视频帧的提取方法、装置、计算机可读介质及电子设备
US17/024,630 US11200426B2 (en) 2018-07-09 2020-09-17 Video frame extraction method and apparatus, computer-readable medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810745214.XA CN108810622B (zh) 2018-07-09 2018-07-09 视频帧的提取方法、装置、计算机可读介质及电子设备

Publications (2)

Publication Number Publication Date
CN108810622A CN108810622A (zh) 2018-11-13
CN108810622B true CN108810622B (zh) 2020-01-24

Family

ID=64075744

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810745214.XA Active CN108810622B (zh) 2018-07-09 2018-07-09 视频帧的提取方法、装置、计算机可读介质及电子设备

Country Status (3)

Country Link
US (1) US11200426B2 (zh)
CN (1) CN108810622B (zh)
WO (1) WO2020010997A1 (zh)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108810622B (zh) * 2018-07-09 2020-01-24 腾讯科技(深圳)有限公司 视频帧的提取方法、装置、计算机可读介质及电子设备
CN111629261B (zh) * 2019-02-28 2022-04-22 阿里巴巴集团控股有限公司 信息处理方法、装置、电子设备及计算机可读存储介质
CN109862391B (zh) * 2019-03-18 2021-10-19 网易(杭州)网络有限公司 视频分类方法、介质、装置和计算设备
CN110225390B (zh) * 2019-06-20 2021-07-23 广州酷狗计算机科技有限公司 视频预览的方法、装置、终端及计算机可读存储介质
CN110399842B (zh) * 2019-07-26 2021-09-28 北京奇艺世纪科技有限公司 视频处理方法、装置、电子设备及计算机可读存储介质
CN110418163B (zh) * 2019-08-27 2021-10-08 北京百度网讯科技有限公司 视频帧采样方法、装置、电子设备及存储介质
CN112492384B (zh) * 2019-09-12 2023-03-24 曙光信息产业(北京)有限公司 视频解码方法、装置和计算机设备
CN113392163B (zh) * 2020-03-12 2024-02-06 广东博智林机器人有限公司 一种数据处理方法、动作仿真方法、装置、设备和介质
CN111538705B (zh) * 2020-04-15 2023-06-30 苏宁智能终端有限公司 视频缩略图预览方法、控制服务器及介质
CN112199552B (zh) * 2020-10-12 2024-03-19 北京达佳互联信息技术有限公司 视频图像的展示方法及装置、电子设备、存储介质
CN112738416B (zh) * 2020-12-23 2023-05-02 上海哔哩哔哩科技有限公司 缩略图预览方法、系统、设备及计算机可读存储介质
CN113556492B (zh) * 2021-07-09 2023-10-20 深圳传音控股股份有限公司 缩略图生成方法、移动终端及可读存储介质
CN113726778A (zh) * 2021-08-30 2021-11-30 咪咕视讯科技有限公司 流媒体seek方法、装置、计算设备及计算机存储介质
CN114495395A (zh) * 2021-12-24 2022-05-13 深圳市天视通视觉有限公司 一种人形检测方法、监控预警方法、装置及系统
CN114339299A (zh) * 2021-12-27 2022-04-12 司法鉴定科学研究院 一种汽车行车记录仪视频取证方法
CN114071226B (zh) * 2022-01-14 2022-04-26 飞狐信息技术(天津)有限公司 视频预览图的生成方法及装置、存储介质及电子设备
CN115225935B (zh) * 2022-09-20 2023-01-06 广州万协通信息技术有限公司 一种视频流、音频流字节交叉加密方法及装置
CN115914775A (zh) * 2022-11-21 2023-04-04 北京奇艺世纪科技有限公司 一种封面确定方法、装置、电子设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101031085A (zh) * 2007-03-30 2007-09-05 中国联合通信有限公司 一种移动终端帧动画的处理方法
CN102780919A (zh) * 2012-08-24 2012-11-14 乐视网信息技术(北京)股份有限公司 通过关键帧进行视频定位和播放的方法
CN104010197A (zh) * 2014-06-13 2014-08-27 广州金山网络科技有限公司 一种视频缩略图生成方法及装置
CN104144322A (zh) * 2013-05-10 2014-11-12 中国电信股份有限公司 移动终端上实现视频监控的方法、系统与视频处理服务器
CN107295402A (zh) * 2017-08-11 2017-10-24 成都品果科技有限公司 视频解码方法及装置
CN107484039A (zh) * 2017-08-22 2017-12-15 四川长虹电器股份有限公司 一种流媒体点播seek画面快速显示的方法
CN108171189A (zh) * 2018-01-05 2018-06-15 广东小天才科技有限公司 一种视频编码方法、视频编码装置及电子设备

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6912327B1 (en) * 1999-01-28 2005-06-28 Kabushiki Kaisha Toshiba Imagine information describing method, video retrieval method, video reproducing method, and video reproducing apparatus
KR100590537B1 (ko) 2004-02-18 2006-06-15 삼성전자주식회사 복수 영상의 요약 방법 및 장치
KR20080064399A (ko) * 2007-01-05 2008-07-09 엘지전자 주식회사 Mp4 역다중화 장치 및 그의 동작 방법
JP5493531B2 (ja) * 2009-07-17 2014-05-14 三菱電機株式会社 映像音声記録再生装置および映像音声記録再生方法
CN102340705B (zh) * 2010-07-19 2014-04-30 中兴通讯股份有限公司 一种获取关键帧的系统及方法
US20150062353A1 (en) * 2013-08-30 2015-03-05 Microsoft Corporation Audio video playback synchronization for encoded media
CN103593464B (zh) * 2013-11-25 2017-02-15 华中科技大学 基于视觉特征的视频指纹检测及视频序列匹配方法及系统
CN105100961B (zh) * 2015-07-23 2018-03-13 华为技术有限公司 视频缩略图生成方法及生成装置
CN105516735B (zh) * 2015-12-11 2019-03-22 小米科技有限责任公司 代表帧获取方法和装置
WO2017142143A1 (en) * 2016-02-19 2017-08-24 Samsung Electronics Co., Ltd. Method and apparatus for providing summary information of a video
CN105957017B (zh) * 2016-06-24 2018-11-06 电子科技大学 一种基于自适应关键帧采样的视频拼接方法
CN106156284B (zh) * 2016-06-24 2019-03-08 合肥工业大学 基于随机多视角哈希的大规模近重复视频检索方法
US10319412B2 (en) * 2016-11-16 2019-06-11 Adobe Inc. Robust tracking of objects in videos
CN106713964A (zh) * 2016-12-05 2017-05-24 乐视控股(北京)有限公司 一种生成视频摘要视点图的方法及装置
CN106851437A (zh) * 2017-01-17 2017-06-13 南通同洲电子有限责任公司 一种提取视频摘要的方法
CN108810622B (zh) * 2018-07-09 2020-01-24 腾讯科技(深圳)有限公司 视频帧的提取方法、装置、计算机可读介质及电子设备

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101031085A (zh) * 2007-03-30 2007-09-05 中国联合通信有限公司 一种移动终端帧动画的处理方法
CN102780919A (zh) * 2012-08-24 2012-11-14 乐视网信息技术(北京)股份有限公司 通过关键帧进行视频定位和播放的方法
CN104144322A (zh) * 2013-05-10 2014-11-12 中国电信股份有限公司 移动终端上实现视频监控的方法、系统与视频处理服务器
CN104010197A (zh) * 2014-06-13 2014-08-27 广州金山网络科技有限公司 一种视频缩略图生成方法及装置
CN107295402A (zh) * 2017-08-11 2017-10-24 成都品果科技有限公司 视频解码方法及装置
CN107484039A (zh) * 2017-08-22 2017-12-15 四川长虹电器股份有限公司 一种流媒体点播seek画面快速显示的方法
CN108171189A (zh) * 2018-01-05 2018-06-15 广东小天才科技有限公司 一种视频编码方法、视频编码装置及电子设备

Also Published As

Publication number Publication date
US20210004604A1 (en) 2021-01-07
WO2020010997A1 (zh) 2020-01-16
US11200426B2 (en) 2021-12-14
CN108810622A (zh) 2018-11-13

Similar Documents

Publication Publication Date Title
CN108810622B (zh) 视频帧的提取方法、装置、计算机可读介质及电子设备
US10448031B2 (en) Method of generating media file and storage medium storing media file generation program
US20210385473A1 (en) Encoding and Decoding Selectively Retrievable Representations of Video Content
CN112291627B (zh) 一种视频编辑方法、装置、移动终端和存储介质
US9576202B1 (en) Systems and methods for identifying a scene-change/non-scene-change transition between frames
US8023568B2 (en) Capture, editing and encoding of motion pictures encoded with repeating fields or frames
CN108833938B (zh) 用于选取视频封面的方法和设备
US7899260B2 (en) Method and apparatus for generating thumbnail of digital image
CN109840879B (zh) 图像渲染方法、装置、计算机存储介质及终端
JP2011024264A (ja) ピクチャー及びビデオ記憶管理システム及び方法
US20150117540A1 (en) Coding apparatus, decoding apparatus, coding data, coding method, decoding method, and program
US20160100161A1 (en) Decoder, encoder, decoding method, encoding method, and codec system
JP2016082546A (ja) 画像処理装置及び画像処理方法
US8306346B2 (en) Static image compression method and non-transitory computer readable medium having a file with a data structure
CA2705676C (en) System and method for re-encoding video using version comparison data to determine re-encoding parameters
US20070133951A1 (en) Offspeed playback in a video editing system of video data compressed using long groups of pictures
CN111406404B (zh) 获得视频文件的压缩方法、解压缩方法、系统及存储介质
JP2008166895A (ja) 映像表示装置及びその制御方法、プログラム、記録媒体
CN114245027B (zh) 一种视频数据混合处理方法、系统、电子设备和存储介质
CN107079130A (zh) 图像处理设备和图像处理方法
CN110119380B (zh) 一种可缩放矢量图文件的存储、读取方法及装置
KR100487330B1 (ko) 디지털 비디오의 썸네일 영상 생성 장치
KR100487374B1 (ko) 디지털 비디오의 썸네일 영상 생성 장치
CN116366882A (zh) 超高清视频文件的快速预览查看方法
US10666955B2 (en) Still image generating apparatus and information recording medium used in still image generating apparatus

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