CN109302574B - 一种处理视频流的方法和装置 - Google Patents

一种处理视频流的方法和装置 Download PDF

Info

Publication number
CN109302574B
CN109302574B CN201710614381.6A CN201710614381A CN109302574B CN 109302574 B CN109302574 B CN 109302574B CN 201710614381 A CN201710614381 A CN 201710614381A CN 109302574 B CN109302574 B CN 109302574B
Authority
CN
China
Prior art keywords
video
frame
file
recording device
written
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
CN201710614381.6A
Other languages
English (en)
Other versions
CN109302574A (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.)
Haisi Technology Co ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201710614381.6A priority Critical patent/CN109302574B/zh
Publication of CN109302574A publication Critical patent/CN109302574A/zh
Application granted granted Critical
Publication of CN109302574B publication Critical patent/CN109302574B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • 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/8456Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments
    • 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 Security & Cryptography (AREA)
  • Television Signal Processing For Recording (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

本发明实施例提供一种处理视频流的方法和装置,涉及数据处理领域,能够有效减小处理视频流的过程中产生的误差。该方法包括:录像设备读取缓存队列中的第一视频帧,该缓存队列用于存储源视频流中待处理的视频帧,若该第一视频帧为关键帧,则录像设备确定待写入至第一文件的关键帧的数量,在待写入至第一文件的关键帧的数量等于1,并且在第二视频帧为关键帧的情况下,录像设备将第一视频帧写入第一文件,并且该录像设备停止向第一文件中写入视频帧,其中,第一文件包括目标视频流,该目标视频流为源视频流中的一段视频流,第二视频帧为第一视频帧的下一帧。

Description

一种处理视频流的方法和装置
技术领域
本发明实施例涉及数据处理领域,尤其涉及一种处理视频流的方法和装置。
背景技术
随着多媒体技术的快速发展,视频数据(以下均可称为视频流)的内容越来越丰富,视频流的数据量也越来越大,为了快速地从海量的视频流中获取一些感兴趣的信息,通常,可以在录取视频的过程中,处理获取的视频流,即将视频流切分为多个固定时长的视频流片段(可以称为子视频流),从而可以通过获取子视频流中感兴趣的信息,获取整个视频流中感兴趣的信息。
目前,在处理视频流的过程中,可以采用累加视频帧(即视频流的视频帧)的显示时间戳(presentation time stamp,PTS)的方法将视频流(可以称为源视频流)切分为多个固定时长(该固定时长为预设值)的子视频流,并将该多个子视频流分别写入多个文件中。具体的,以一个子视频流(以下称为目标视频流)为例,源视频流的每一个视频帧中均携带一个PTS,当录像设备读取源视频流的一个视频帧(以下称为第一视频帧)时,该录像设备可以将该第一视频帧的PTS值与保存该目标视频流的文件(以下称为第一文件)中已写入的视频流的首帧的PTS相减,得到PTS差值,在该PTS差值大于或者等于上述固定时长,并且该第一视频帧的下一帧为关键帧的情况下,该录像设备切分源视频流,即该录像设备将该第一视频帧写入第一文件后,停止向第一文件中写入视频帧。
然而,在上述方法中,由于视频帧的PTS可能存在误差,因此,可能会导致切分视频流后,得到的子视频流的时长与上述预设的固定时长不一致,即在处理视频流的过程中可能产生较大的误差。
发明内容
本申请提供一种处理视频流的方法和装置,能够有效减小处理视频流的过程中产生的误差。
为达到上述目的,本申请采用如下技术方案:
第一方面,本申请提供一种处理视频流的方法,该方法可以包括:录像设备读取用于存储源视频流中待处理的视频帧的缓存队列中的第一视频帧;若该第一视频帧为关键帧,则录像设备确定待写入至第一文件的关键帧的数量;在待写入至第一文件的关键帧的数量等于1,并且在第二视频帧为关键帧的情况下,录像设备将第一视频帧写入第一文件,并且录像设备停止向第一文件中写入第二视频帧,其中,第一文件包括目标视频流,该目标视频流为源视频流中的一段视频流,第二视频帧为第一视频帧的下一帧。
本申请提供的处理视频流的方法,由于录像设备在确定第一视频帧为关键帧的情况下,可以确定待写入至第一文件的关键帧的数量,然后根据关键帧的数量确定是否停止向第一文件中写入视频帧,得到第一文件,能够在一定程度上保证第一文件中目标视频流的时长与预设的固定时长相等,因此能够有效减小处理视频流的过程中产生的误差。
在第一方面的第一种可选的实现方式中,上述录像设备确定待写入至第一文件的关键帧的数量的方法可以包括:录像设备根据第一视频帧的显示时间戳PTS值、第三视频帧的PTS值,以及目标视频流的时长,确定待写入至第一文件的视频流的时长,第三视频帧为第一文件中已写入的视频流的首帧;然后录像设备根据待写入至第一文件的视频流的时长、源视频流的画面组的值,以及源视频流的帧率,确定待写入至第一文件的关键帧的数量。
在第一方面的第二种可选的实现方式中,上述录像设备根据待写入至第一文件的视频流的时长、源视频流的画面组的值,以及源视频流的帧率,确定待写入至第一文件的关键帧的数量的方法可以包括:录像设备根据待写入至第一文件的视频流的时长、源视频流的画面组的值,以及源视频流的帧率,采用公式
Figure BDA0001360258160000021
将In的值四舍五入后确定为待写入至第一文件的关键帧的数量,其中,T为待写入至第一文件的视频流的时长,GOP为源视频流的画面组的值,FrameRate为源视频流的帧率。
本申请中,录像设备按照上述方法确定待写入至第一文件的关键帧的数量,并且根据待写入至第一文件的关键帧的数量可以准确地确定,在何种情况下可以停止向第一文件中写入视频帧,如此能够保证第一文件中目标视频流的时长与预设的固定时长相等。
在第一方面的第三种可选的实现方式中,在上述录像设备读取第一视频帧之后,本申请提供的处理视频流的方法还可以包括:录像设备确定第一视频帧是否为关键帧。
本申请中,录像设备从该录像设备的缓冲器中读取第一视频帧之后,该录像设备确定该第一视频帧是否为关键帧,如此录像设备可以根据该第一视频帧的特性,确定是否需要计算待写入至第一文件的关键帧的数量。在录像设备确定第一视频帧为关键帧的情况下,该录像设备确定待写入至第一文件的关键帧的数量,在该录像设备确定第一视频帧为非关键帧的情况下,该录像设备直接将第一视频帧写入第一文件,无需确定待写入至第一文件的关键帧的数量,如此可以降低处理视频流的过程中的计算量。
在第一方面的第四种可选的实现方式中,在上述录像设备将第一视频帧写入第一文件之后,本申请提供的处理视频流的方法还可以包括:录像设备创建第二文件,并且读取第二视频帧,以及将第二视频帧写入第二文件。
本申请中,录像设备停止向第一文件中写入第二视频帧之后,该录上设备可以将第二视频帧写入新创建的第二文件中。可以理解的是,录像设备停止向第一文件写入视频帧之后,若该录像设备的缓存队列中还存在视频流,那么该录像设备继续创建新的文件,并继续读取视频帧,然后向创建的新文件写入视频帧,如此可以实现将源视频流分段保存为多个视频流片段(多个文件中存储多个视频流片段)。
在第一方面的第五种可选的实现方式中,在录像设备确定待写入至第一文件的关键帧的数量等于1,并且在第二视频帧为非关键帧的情况下,录像设备将第一视频帧写入第一文件,然后录像设备读取第二视频帧,并且录像设备将第二视频帧写入第一文件。
本申请中,录像设备确定待写入至第一文件的关键帧的数量等于1,说明录像设备当前读取的第一视频帧所在的画面组为待写入至第一文件的最后一个画面组,而第一视频帧的下一帧(即上述的第二视频帧)为非关键帧,说明录像设备还未将当前最后一个画面组的所有视频帧都写入第一文件,因此,该录像设备需继续读取第一视频帧所在的画面组的剩余的视频帧(包括第二视频帧),并将该画面组的剩余的视频帧写入第一文件之后,该录像设备可以停止向第一文件中写入视频帧。
在第一方面的第六种可选的实现方式中,在录像设备确定待写入至第一文件的关键帧的数量大于1的情况下,录像设备将第一视频帧写入第一文件;然后录像设备读取第二视频帧,若该第二视频帧为关键帧,则录像设备确定待写入至第一文件的关键帧的数量;在待写入至第一文件的关键帧的数量等于1,并且在第二视频帧的下一帧为关键帧的情况下,录像设备将第二视频帧写入第一文件,并且录像设备停止向第一文件中写入视频帧。
本申请中,录像设备确定待写入至第一文件的关键帧的数量大于1,说明在录像设备读取第一视频帧所在的画面组的所有视频帧,并将该画面组的所有视频帧写入第一文件之后,该录像设备还需要继续读取至少一个画面组的视频帧,并将其读取的至少一个画面组的所有视频帧写入第一文件之后,该录像设备可以停止向第一文件中写入视频帧。
在第一方面的第七种可选的实现方式中,若上述第一视频帧为目标视频流的首帧,则录像设备直接将该第一视频帧写入第一文件。
本申请中,如果录像设备读取的第一视频帧为目标视频流的首帧(即写入第一文件中的第一个视频帧),那么录像设备可以不用确定待写入至第一文件的关键帧的数量,该录像设备直接将该第一视频帧写入第一文件,然后录像设备继续读取视频帧,按照上述处理视频流的方法(即上述通过确定待写入至第一文件的关键帧的数量的方法,确定何时停止向第一文件中写入视频帧)。
第二方面,本申请提供一种录像设备,该录像设备可以包括读取模块、确定模块和写数据模块。其中,读取模块可以读取用于存储源视频流中待处理的视频帧的缓存队列中的第一视频帧;确定模块可以用于在读取模块读取的第一视频帧为关键帧的情况下,确定待写入至第一文件的关键帧的数量,第一文件包括目标视频流,目标视频流为源视频流中的一段视频流;写数据模块可以用于在确定模块确定的待写入至第一文件的关键帧的数量等于1,并且在第二视频帧为关键帧的情况下,将第一视频帧写入第一文件,并且停止向第一文件中写入第二视频帧,其中,第二视频帧为第一视频帧的下一帧。
在第二方面的第一种可选的实现方式中,上述确定模块具体用于根据第一视频帧的显示时间戳PTS值、第三视频帧的PTS值,以及目标视频流的时长,确定待写入至第一文件的视频流的时长,该第三视频帧为第一文件中已写入的视频流的首帧;并且根据待写入至第一文件的视频流的时长、源视频流的画面组的值,以及源视频流的帧率,确定待写入至第一文件的关键帧的数量。
在第二方面的第二种可选的实现方式中,上述确定模块具体用于确定模块,根据待写入至第一文件的视频流的时长、源视频流的画面组的值,以及源视频流的帧率,采用公式
Figure BDA0001360258160000041
将In的值四舍五入后确定为待写入至第一文件的关键帧的数量,其中,T为待写入至第一文件的视频流的时长,GOP为源视频流的画面组的值,FrameRate为源视频流的帧率。
在第二方面的第三种可选的实现方式中,上述确定模块还可以用于在读取模块读取第一视频帧之后,确定该第一视频帧是否为关键帧。
在第二方面的第四种可选的实现方式中,录像设备还可以包括创建模块,该创建模块可以用于在写数据模块将第一视频帧写入第一文件之后,创建第二文件;上述读取模块还可以用于读取第二视频帧;上述写数据模块还可以用于将第二视频帧写入第二文件。
在第二方面的第五种可选的实现方式中,上述写数据模块还可以用于在确定模块确定的待写入至第一文件的关键帧的数量等于1,并且在第二视频帧为非关键帧的情况下,将第一视频帧写入第一文件;上述读取模块,还可以用于读取第二视频帧;上述写数据模块还可以用于将第二视频帧写入第一文件。
在第二方面的第六种可选的实现方式中,上述写数据模块还可以用于在待写入至第一文件的关键帧的数量大于1的情况下,将第一视频帧写入第一文件;上述读取模块还可以用于读取第二视频帧;上述确定模块还可以用于在读取模块读取的第二视频帧为关键帧的情况下,确定待写入至第一文件的关键帧的数量;上述写数据模块还可以用于在确定模块确定的待写入至第一文件的关键帧的数量等于1,并且在第二视频帧的下一帧为关键帧的情况下,将第二视频帧写入第一文件,并且录像设备停止向第一文件中写入视频帧。
在第二方面的第七种可选的实现方式中,上述写数据模块还可以用于在第一视频帧为目标视频流的首帧的情况下,直接将第一视频帧写入第一文件。
第三方面,本申请提供一种录像设备,该录像设备可以包括处理器和与该处理器耦合连接的存储器;该存储器用于存储计算机指令,当录像设备运行时,处理器执行存储器存储的计算机指令,以使得录像设备执行上述第一方面及其各种可选的实现方式中任意之一所述处理视频流的方法。
第四方面,本申请提供一种计算机可读存储介质,该计算机可读存储介质可以包括计算机指令,当该计算机指令在录像设备上运行时,使得该录像设备执行第一方面及其各种可选的实现方式中任意之一所述处理视频流的方法。
第五方面,本申请提供一种包含指令的计算机程序产品,当该计算机程序产品在录像设备上运行时,使得录像设备执行第一方面及其各种可选的实现方式中任意之一所述的处理视频流的方法。
第二方面至第五方面的相关内容和技术效果的描述可以参见上述对第一方面及其各种可选的实现方式的相关内容和技术效果的相关描述,此处不再赘述。
附图说明
图1为本发明实施例提供的摄像机的硬件示意图;
图2为本发明实施例提供的处理视频流的方法示意图一;
图3为本发明实施例提供的源视频流的帧结构的示意图一;
图4为本发明实施例提供的源视频流的帧结构的示意图二;
图5为本发明实施例提供的源视频流的帧结构的示意图三;
图6为本发明实施例提供的处理视频流的方法示意图二;
图7为本发明实施例提供的确定待写入至第一文件的关键帧的数量的方法示意图;
图8为本发明实施例提供的处理视频流的方法示意图三;
图9为本发明实施例提供的录像设备的结构示意图一;
图10为本发明实施例提供的录像设备的结构示意图二。
具体实施方式
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
本发明实施例的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一视频帧和第二视频帧等是用于区别不同的视频帧,而不是用于描述视频帧的特定顺序;第一视频帧和第二视频帧等是区别不同的视频帧,而不是用于描述视频帧的特定顺序。
在本发明实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本发明实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
在本发明实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。例如,多个子视频流是指两个或两个以上的子视频流;多个处理单元是指两个或两个以上的处理单元。
首先对本发明实施例提供的一种处理视频流的方法和装置中涉及的一些概念做解释说明。
帧内编码帧(intra picture):通常称为I帧,也称为关键帧。视频由连续多个画面组构成,画面组为一组连续的画面,包括多个视频帧,其中,I帧为一个画面组(group ofpictures,GOP)中的第一帧(即一组连续的视频帧组中的第一帧),I帧包括一个视频帧的完整数据(即完整的内容),经过视频压缩技术压缩后的I帧,在解码时,无需参考其他帧,根据该I帧即可解码,重构完整的视频帧,并且I帧是一个画面组中其他视频帧的参考帧,例如I帧的下一帧为前向预测编码帧(predictive frame)(通常称为P帧)或双向预测内插编码帧(bi-directional interpolated prediction frame)(通常称为B帧),在解码P帧或者B帧时,需要以I帧为参考帧,才可以解码得到完整的P帧或者B帧,其中,P帧和B帧均为差别帧(即包含P帧或者B帧与其他视频帧的差别,并不包含视频帧的完整的内容)。
本发明实施例提供的处理视频流的方法和装置,可以应用于录像设备录取视频的过程中,录像设备获取到视频流(可以称为待处理的视频流)之后,录像设备可以通过确定待处理的视频流中,待写入至一个文件的关键帧的数量,从而实现将待处理的视频流切分为多个子视频流,能够在一定程度上保证实际获得的子视频流的时长与预设的固定时长相等,从而有效减小处理视频流的过程中产生的误差。
本发明实例提供的录像设备可以为摄像机,或者具有录像功能的相机,或者具有录像功能的终端,例如手机、平板电脑、笔记本电脑、超级移动个人计算机(ultra-mobilepersonal computer,UMPC)、上网本或者个人数字助理(personal digital assistant,PDA)等。
示例性的,本发明实施例以录像设备为摄像机为例,介绍录像设备的硬件结构。下面结合图1具体介绍本发明实施例提供的摄像机的各个构成部件。如图1所示,本发明实施例提供的摄像机包括:音视频源10、音视频编码模块11、录像模块12、文件管理模块13、存储器14和输出接口15等部件。本领域技术人员可以理解,图1中示出的摄像机的结构并不构成对摄像机的限定,其可以包括比如图1所示的部件更多或更少的部件,或者可以组合如图1所示的部件中的某些部件,或者可以与如图1所示的部件布置不同。
音视频源10可以包括音视频俘获装置(例如,视频相机)、含有先前俘获的音视频数据的音视频存档、用以从音视频内容提供者接收音视频数据的音视频输入接口,及/或用于产生音视频数据的计算机图形系统,或上述音视频数据源的组合。
音视频源10可以包括图像传感器,图像传感器是摄像机的感光元件,即摄像机感光成像的部件,摄像机获取到光信号形式的视频数据之后,可以通过图像传感器将信号转变成电信号,以便于摄像机的其他部件处理该电信号的视频数据。目前数码摄像机的核心成像部件有两种:一种是广泛使用的电荷藕合器件(charge coupled device,CCD)的图像传感器;另一种是互补性氧化金属半导体(complementary metal-oxide semiconductor,CMOS)器件的图像传感器。
音视频编码器11可以包括音频编码模块111和视频编码模块112,音频编码模块111可以对音视频源10获取的音频数据进行编码转化为及其可以识别的代码,视频编码模块112可以根据编码标准(例如H.264)将音视频源10获取的视频数据经过编码后转化为机器可以识别的代码,以将视频数据压缩,有利于视频数据的传输和存储。
音视频编码器11可以为中央处理器(central processing unit,CPU),通用处理器,数字信号处理器(digital signal processor,DSP),专用集成电路(application-specific integrated circuit,ASIC),现场可编程门阵列(field programmable gatearray,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合,其可以实现或执行本发明实施例公开的内容所描述的各种示例性的逻辑方框,模块和电路;音视频编码器21也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
录像模块12可以包括数据缓冲器和其他功能模块,录像模块12将经视频编码模块编码后的视频数据缓存到数据缓冲器中,然后对该编码后的视频数据做相关处理(例如将数据缓冲器中的视频数据切分为多个视频数据片段)。
文件管理模块13可以用于管理视频数据,例如文件管理模块13可以对录像模块12处理后的视频数据命名,并且可以用于创建文件或者结束文件。
存储器14可用于存储软件程序以及模块,通过运行存储在存储器14的软件程序以及模块,从而执行摄像机的各种功能应用以及数据处理。存储器14可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据摄像机的使用所创建的数据(比如视频数据)等。此外,存储器14可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输出接口15可以为向其他设备发送数据的接口电路,输出接口15可以为收发器、收发电路等具有收发功能的结构,包括调制器/解调器(调制解调器)及/或发射器,在视频编解码系统中,输出接口15可以将编码并且处理后的视频数据发送给其他设备。
可选的,如图1所示的摄像机还可以包括文件封装模块、输入接口、无线保真(wireless gidelity,WiFi)模块、蓝牙模块等,在此不再赘述。
需要说明的是,本发明实施例中,源视频流包括视频数据部分和音频数据部分,下述实施例中提及的源视频流均指的是源视频流的视频数据部分,处理视频流也指的是处理视频流的视频数据部分。
下面对本发明实施例提供的处理视频流的方法做示例性的说明,如图2所示,本发明实施例提供的处理视频流的方法可以包括S101-S116:
S101、录像设备获取视频流。
S102、录像设备对其获取的视频流进行编码。
本发明实施例中,开启录像设备的录像功能之后,该录像设备可以录制视频流(即获取视频流),然后该录像设备对其获取的视频流进行编码,得到编码后的视频流(以下将编码后的视频流均简称为源视频流),即录像设备对其获取的视频流的所有视频帧进行编码。
可选的,本发明实施例中,可以由该录像设备的视频编码模块编码该录像设备获取的视频流,该录像设备可以采用不同的编码方式对视频流编码,视频数据的编码的格式可以为运动图像专家组(moving picture exports group,MPEG)规定的编码格式,例如,MPEG-1、MPEG-2或MPEG-4等;视频数据的编码格式也可以为H.26X系列的编码格式,例如,H.261、H.263、H.264等;视频数据的编解码格式还可以为其他的编码格式。
需要说明的是,本发明实施例中,可以根据实际使用需求选择视频流的编码格式,本发明实施例不作具体限定。
S103、录像设备将其编码后的视频流保存在该录像设备的缓冲器中。
本发明实施例中,可以将经录像设备的视频编码模块编码后的视频流(即源视频流)按帧暂时保存在该录像设备的数据缓冲器中,从而该录像设备处理该视频流时,该录像设备可以从缓冲器中读取编码后的视频流。
可选的,本发明实施例中,录像设备的缓冲器可以为环形缓冲器,采用环形缓冲器能够快速存取数据,并且能够简化数据的存取。录像设备的缓冲器也可以为其他非环形的缓冲器,本发明实施例不作限定。
S104、录像设备读取缓冲器的缓冲队列中的第一视频帧。
本发明实施例中,录像设备可以边获取视频流,边对视频流编码,并将该编码后的视频流(即源视频流)存入数据缓冲器中,然后,录像设备可以读取缓冲器中的源视频流(读取缓冲器的缓冲队列中的每一个视频帧),并将源视频流写入该录像设备创建的文件中,进而将该源视频流保存在该录像设备的存储介质中。
S105、录像设备确定第一视频帧是否为关键帧。
本发明实施例中,录像设备读取第一视频帧之后,该录像设备的关键帧管理器(也可以称为I帧管理器)可以确定第一视频帧是否为关键帧,具体的,本发明实施例中,在录像设备采用不同的编码格式对其获取的视频流的每一帧编码的过程中,可以在码流的指定字段写入不同的能够指示该视频帧的帧类型的标识,从而录像设备的I帧管理器可以根据该第一视频帧中指示该第一视频帧的帧类型的标识,确定第一视频帧的类型。
本发明实施例中,视频帧的帧类型可以包括I帧、P帧和B帧(关于I帧、P帧和B帧的相关解释可以参见上述实施例的相关描述),示例性的,在视频数据的编码过程中,可以将上述帧类型的标识设置为“00”,用于指示第一视频帧为关键帧,将帧类型的标识设置为“01”,用于指示第一视频帧为P帧,将帧类型的标识设置为“10”,用于指示第一视频帧为B帧。当然,本发明实施例还可以采用其他满足实际使用需求的标识来设置上述帧类型的标识,本发明实施例不再一一列举。
可选的,本发明实施例中,在录像设备编码对其获取的视频流的每一帧编码的过程中,可以在码流的指定字段设置关键帧标识,用于指示该视频帧是否为关键帧。示例性的,关键帧标识具体可以采用“0”或“1”来表示,例如,可以采用“0”表示第一视频帧为关键帧,也可以采用“1”表示该第一视频帧为关键帧。当然,本发明实施例还可以采用其他满足实际使用需求的标识来设置上述关键帧标识,本发明实施例不再一一列举。
需要说明的是,本发明实施例中,结合上述描述,如果采用“0”表示第一视频帧为关键帧,那么可以采用“1”表示第一视频帧为非关键帧;如果采用“1”表示第一视频帧为关键帧,那么可以采用“0”表示第一视频帧为非关键帧。
本发明实施例中,若录像设备确定第一视频帧为关键帧,则在S105之后,可以执行S106-S107,并根据实际情况执行S107之后的部分步骤;若该录像设备确定第一视频帧为非关键帧(即为P帧或B帧),则在S105之后,可以执行S116,具体见下述实施例的描述。
S106、若第一视频帧为关键帧,则录像设备确定待写入至第一文件的关键帧的数量。
其中,第一文件包括目标视频流,该目标视频流为源视频流中的一段视频流。
本发明实施例中,该录像设备可以将源视频流分为多个固定时长的视频流,写入多个文件中,即可以理解为:录像设备将其获取的视频流切分为多个视频流片段,写入多个文件中。具体的,录像设备可以边获取视频流,边向其创建的文件(例如第一文件)中写入经该录像设备编码后的视频流,如果录像设备确定第一视频帧为关键帧,则该录像设备确定待写入至第一文件的关键帧的数量,即确定当前还可以向第一文件中写入多少个关键帧。
可以理解的是,由于一个画面组中通常包括一个关键帧,因此,该录像设备确定待写入至第一文件的关键帧的数量,即就是确定待写入至第一文件的画面组的数量,该录像设备将完整的画面组写入第一文件,在该录像设备播放该第一文件时,或者当该录像设备将该第一文件发送给其他设备,其他设备播放该第一文件时,该录像设备或其他设备可以顺利解码该第一文件中的目标视频流,并且可以保证该目标视频流的播放质量比较好。
需要说明的是,本发明实施例中,上述固定时长可以为根据用户的需求设定的时长,例如可以为5分钟、10分钟等,本发明实施例不作具体限定。
本发明实施例中,录像设备确定出待写入至第一文件的关键帧的数量,从而该录像设备可以根据待写入至第一文件的关键帧的数量,更加准确地确定是否需要停止向第一文件中写入视频帧,保证目标视频流的时长与预设的固定时长相等。
S107、录像设备确定待写入至第一文件的关键帧的数量是否等于1。
需要说明的是,本发明实施例中,如果上述待写入至第一文件的关键帧的数量等于1,那么在S107之后,可以执行S108,以及S108之后的部分步骤(例如S109或S110-S112);如果待写入至第一文件的关键帧的数量大于1,那么在S107之后,可以执行S113-S115。
S108、若待写入至第一文件的关键帧的数量等于1,则录像设备确定第二视频帧是否为关键帧。
本发明实施例中,当待写入至第一文件的关键帧的数量等于1时,录像设备再确定第一视频帧的下一帧(即第二视频帧)是否为关键帧,并根据确定结果,是否停止向第一文件中写入视频帧。
S109、在待写入至第一文件的关键帧的数量等于1,并且在第二视频帧为关键帧的情况下,该录像设备将第一视频帧写入第一文件,并且录像设备停止向第一文件中写入第二视频帧,其中,第二视频帧为第一视频帧的下一帧。
本发明实施例中,待写入至第一文件的关键帧的数量等于1,说明在录像设备读取第一视频帧所在的画面组的所有视频帧,并将该画面组的所有视频帧写入第一文件之后,该录像设备可以停止向第一文件中写入视频帧。具体的,如图3所示,Trec表示需写入至第一文件的目标视频流的时长,即预设的固定时长,Tdiff表示已写入至第一文件的视频流的时长,帧1为当前读取的第一视频帧,帧2表示第一视频帧的下一帧。结合图3,若待写入至第一文件的关键帧的数量等于1,则说明该录像设备当前读取的第一视频帧(即图3中的帧1)所在的画面组为需写入至第一文件的最后一个画面组;并且若第一视频帧的下一帧(即第二视频帧,图3中的帧2)为关键帧,则说明第一视频帧为需写入至第一文件的最后一个画面组的最后一帧,该录像设备将第一视频帧写入第一文件之后,该录像设备停止向第一文件中写入该第二视频帧。至此,该录像设备处理完成源视频流中的目标视频流,得到写入了目标视频流的第一文件。
需要说明的是,本发明实施例中,录像设备获取视频流之后,录像设备分别对视频流中的视频数据(即上述的源视频流)和音频数据编码,录像设备将上述目标视频流写入第一文件中的同时,在录像设备确定停止向第一文件中写入视频帧时,该录像设备将目标视频流对应的音频数据流(第一音频流)也写入第一文件中,具体的,录像设备向第一文件写入最后一个视频帧(需写入至第一文件的最后一个视频帧)时,录像设备将第一文件的首帧至该最后一个视频帧对应的第一音频流写入第一文件,并且停止向第一文件中写入音频流。
可选的,本发明实施例中,录像设备处理源视频流,得到写有目标视频流和音频流的第一文件之后,该录像设备可以为该第一文件命名,并且封装该第一文件中的视频流和音频流,得到封装后的第一文件,以及将该封装后的第一文件保存在该录像设备的存储介质(例如存储卡)中。
具体的,录像设备可以为第一文件命名,例如将该第一文件命名为“001”或“vedio1”等,并且可以确定该命名的第一文件保存在哪一个目录下,例如,将第一文件保存在存储卡的Data(假如录像设备的存储卡中存在Data这个目录)目录下。录像设备封装该第一文件,是指将第一文件中的目标视频流(已编码)和第一音频流(已编码)封装为某一种音视频文件格式。例如,视频流常用的编码格式有MPEG-1、MPEG-2、MPEG-4、H.261、H.263以及H.264等,音频流常用的编码格式有脉冲代码调制编码(pulse code modulation,PCM)格式、动态影像专家压缩标准音频层面3(moving picture experts group audio layerIII,MP3)格式以及高级音频编码(advanced audio coding,AAC)格式,常用的音视频文件封装格式有音频视频交错(audio video interleaved,AVI)、流媒体(flash video,FLV)格式、实媒体播放可变比特率(real media variable bitrate,RMVB)格式和Windows媒体视频(windows media video,WMV)格式等。示例性的,根据音视频文件的封装规定,可以将格式为H.264的目标视频流和格式为MP3的第一音频流,封装为格式为AVI的音视频文件,得到封装后的第一文件。
S110、在待写入至第一文件的关键帧的数量等于1,并且在第二视频帧为非关键帧的情况下,该录像设备将第一视频帧写入第一文件。
本发明实施例中,待写入至第一文件的关键帧的数量等于1,说明在录像设备读取第一视频帧所在的画面组的所有视频帧,并将该画面组的所有视频帧写入第一文件之后,该录像设备可以停止向第一文件中写入视频帧。具体的,如图4所示,Trec表示需写入至第一文件的目标视频流的时长,即预设的固定时长,Tdiff表示已写入至第一文件的视频流的时长,帧1表示当前读取的第一视频帧,帧2表示第一视频帧的下一帧。结合图4,若待写入至第一文件的关键帧的数量等于1,则说明该录像设备当前读取的第一视频帧(即图4中的帧1)所在的画面组为需写入至第一文件的最后一个画面组;并且若第一视频帧的下一帧(即上述的第二视频帧,图4中的帧2)为非关键帧,则说明第一视频帧并不是需写入至第一文件的最后一个画面组的最后一帧,该第一视频帧为该最后一个画面组的最后一个视频帧之前的视频帧,该录像设备将该第一视频帧写入第一文件之后,继续向第一文件中写入第一视频帧之后的视频帧(例如图4中的帧2)。
S111、录像设备读取第二视频帧。
S112、录像设备将第二视频帧写入第一文件。
本发明实施例中,由于上述第一视频帧的下一帧,即第二视频帧为非关键帧,说明在将第一视频帧写入第一文件之后,还需要继续向第一文件中写入视频帧,以保证向第一文件中写入与预设的固定时长相等的视频流,因此,在录像设备将第一视频帧写入第一文件之后,该录像设备继续读取第二视频帧,并且将该第二视频帧写入第一文件,同时该录像设备可以判断第二视频帧的下一帧是否为关键帧,如果第二视频帧的下一帧为关键帧,那么录像设备将第二视频帧写入第一文件之后,录像设备停止向第一文件写入视频帧,如果第二视频帧的下一帧为非关键帧,那么录像设备继续将第二视频帧写入第一文件,如此,直至录像设备当前读取的视频帧的下一帧为关键帧,该录像设备将其读取的视频帧写入第一文件之后,该录像设备停止向第一文件中写入视频帧。
本发明实施例中,在待写入至第一文件的关键帧的数量大于1的情况下,录像设备可以执行下述S113-S115:
S113、在待写入至第一文件的关键帧的数量大于1的情况下,录像设备将第一视频帧写入第一文件。
本发明实施例中,待写入至第一文件的关键帧的数量大于1,说明在录像设备读取第一视频帧所在的画面组的所有视频帧,并将该画面组的所有视频帧写入第一文件之后,该录像设备还需要继续读取至少一个画面组的视频帧,并将其读取的至少一个画面组的所有视频帧写入第一文件之后,该录像设备可以停止向第一文件中写入视频帧。如图5所示,Trec表示需写入至第一文件的目标视频流的时长,即预设的固定时长,Tdiff表示已写入至第一文件的视频流的时长,帧1表示当前读取的第一视频帧,画面组1为帧1所在的画面组(其中,图5所示的帧1可以为画面组1中任意一个视频帧),画面组2表示画面组1的下一个画面组,帧2表示画面组2中的关键帧,画面组3表示画面组2的下一个画面组,帧3表示画面组3中的关键帧。结合图5,若待写入至第一文件的关键帧的数量为3,则说明该录像设备将当前读取的第一视频帧(即图5中的帧1)写入第一文件,并且将第一视频帧所在的画面组(即图5中的画面组1)的所有视频帧写入第一文件,并且该录像设备还需要将如图5所示的关键帧帧2以及帧2所在的整个画面组2的所有视频帧,关键帧帧3以及帧3所在的画面组3的所有视频帧写入第一文件之后,该录像设备停止向第一文件中写入视频帧。
S114、录像设备读取第二视频帧。
S115、录像设备确定第二视频帧是否为关键帧。
本发明实施例中,在待写入至第一文件的关键帧的数量大于1的这种情况下,录像设备将其读取的第一视频帧写入第一文件之后,该录像设备继续读取第一视频帧的下一个视频帧,即第二视频帧,然后该录像设备可以确定第二视频帧是否为关键帧,并进一步确定在该录像设备将第二视频帧写入第一文件之后,该录像设备是否可以停止向第一文件中写入视频帧。
需要说明的是,本发明实施例中,录像设备确定第二视频帧是否为关键帧的方法与该录像设备确定上述第一视频帧是否为关键帧的方法相同,对于S115的具体描述可以参见上述实施例中对于S105的相关描述,此处不再赘述。
可以理解的是,本发明实施例中,通过上述S115,录像设备可以确定第二视频帧为关键帧,或者确定第二视频帧为非关键帧,并且在S115之后,录像设备根据第二视频帧是否为关键帧,确定是否停止向第一文件中写入视频帧的方法与录像设备根据第一视频帧是否为关键帧,确定是否停止向第一文件中写入视频帧的方法相同,对于S115之后的相关过程的描述具体可以参见上述实施例中S105之后的步骤的相关描述(例如,上述S106-S107,以及S107之后的部分步骤),此处不再赘述。
本发明实施例中,如图2所示,录像设备通过上述S105确定第一视频帧为非关键帧,本发明实施例提供的处理视频流的方法还可以包括:
S116、若第一视频帧为非关键帧,则录像设备将该第一视频帧写入第一文件。
本发明实施例中,录像设备确定第一视频帧为非关键帧,则该录像设备将该第一视频帧写入第一文件,然后该录像设备继续从录像设备的缓冲器的缓存队列中读取下一帧(即第一视频帧的下一帧),并按照上述S105的方法,确定该第一视频帧的下一帧是否关键帧。
具体的,若第一视频帧的下一帧为关键帧,录像设备确定待写入至第一文件的关键帧的数量,并根据关键帧的数量确定是否停止向第一文件中写入视频帧,即录像设备将第一视频帧的下一帧作为第一视频帧,执行上述S106-S107,并根据实际情况执行S107之后的部分步骤,以完成视频流的处理;若该下一帧仍为非关键帧,则录像设备继续将该下一帧写入第一文件中。
本发明实施例提供的处理视频流的方法,录像设备读取缓存队列中的第一视频帧,并且该第一视频帧为关键帧时,录像设备确定待写入至第一文件的关键帧的数量,以及在待写入至第一文件的关键帧的数量等于1,并且在第一视频帧的下一帧(即上述的第二视频帧)为关键帧的情况下,该录像设备将该第一视频帧写入第一文件,并且该录像设备停止向第一文件中写入视频帧,其中,第一文件包括目标视频流,目标视频流为待处理的视频流中的一段视频流。与现有技术相比,本发明实施例中,由于录像设备在确定第一视频帧为关键帧的情况下,可以确定待写入至第一文件的关键帧的数量,然后根据关键帧的数量确定是否停止向第一文件中写入视频帧,得到第一文件,能够在一定程度上保证第一文件中目标视频流的时长与预设的固定时长相等,因此能够有效减小处理视频流的过程中产生的误差。
结合图2,如图6所示,上述S106(即确定待写入至第一文件的关键帧的数量)具体可以通过S106a-S106b实现:
S106a、录像设备根据第一视频帧的PTS值、第三视频帧的PTS值,以及目标视频流的时长,确定待写入至第一文件的视频流的时长。
其中,第三视频帧为第一文件中已写入的视频流的首帧。
本发明实施例中,录像设备在录制视频流的过程中,视频流的每一帧可以携带各自的PTS,录像设备读取的第一视频帧为关键帧时,录像设备确定待写入至第一文件的视频流的时长(可以理解为,录像设备可能已经向第一文件中写入了部分视频流,读取第一视频帧之后,该录像设备还需向第一文件中写入的视频流的时长)。具体的,待写入至第一文件的视频流的时长=目标视频流的时长-(第一视频帧的PTS值-第三视频帧的PTS值)。
示例性的,如图7所示,Trec表示需写入至第一文件的目标视频流的时长,即预设的固定时长,PTS_current表示第一视频帧的PTS值,PTS_first表示第三视频帧的PTS值,用Trest表示待写入至第一文件的关键帧的数量,采用下述公式(1)确定待写入至第一文件的视频流的时长:
Trest=Trec-(PTS_current-PTS_first) (1)
S106b、录像设备根据待写入至第一文件的视频流的时长、源视频流的画面组的值,以及源视频流的帧率,确定待写入至第一文件的关键帧的数量。
本发明实施例中,通过上述S106a确定出待写入至第一文件的视频流的时长之后,录像设备可以采用下述公式,确定待写入至第一文件的关键帧的数量:
Figure BDA0001360258160000131
其中,Trest表示待写入至第一文件的视频流的时长,GOP/FrameRate表示一个画面组所占的时长,GOP表示一个画面组的值(即一个画面组包含的视频帧的数量),FrameRate表示源视频流的帧率。
需要说明的是,本发明实施例中,采用上述公式(1)和(2)得到的In可能不是正整数,可以对In做四舍五入,将四舍五入后的In作为待写入至第一文件的关键帧的数量,并根据待写入至第一文件的关键帧的数量可以准确地确定,在何种情况下可以停止向第一文件中写入视频帧,如此能够保证第一文件中目标视频流的时长与预设的固定时长相等。
本发明实施例中,在录像设备确定第一视频帧为关键帧的情况下,该录像设备按照上述方法确定待写入至第一文件的关键帧的数量,在该录像设备确定第一视频帧为非关键帧的情况下,该录像设备直接将第一视频帧写入第一文件,无需确定待写入至第一文件的关键帧的数量,如此可以降低处理视频流的过程中的计算量。
可选的,结合图2,如图8所示,本发明实施例中,上述在待写入至第一文件的关键帧的数量等于1,并且在第二视频帧为关键帧的情况下,录像设备执行S109(录像设备将第一视频帧写入第一文件,并停止向第一文件中写入第二视频帧)之后,本发明实施例提供的处理视频流的方法还可以包括S117-S119:
S117、录像设备创建第二文件。
本发明实施例中,录像设备将其缓存队列中待处理的视频流的一段视频流,即目标视频流,写入第一文件之后,若该录像设备的缓存队列中还存在视频流,则该录像设备继续创建新的文件(以下均称为第二文件),该第二文件包括缓存队列中的视频流(即目标视频流之后的一段视频流)。
S118、录像设备读取第二视频帧。
S119、录像设备将第二视频帧写入第二文件。
本发明实施例中,录像设备创建第二文件之后,该录像设备读取缓存队列中的第二视频帧(即上述第一视频帧的下一帧),并确定该第二视频帧是否为关键帧,并且进一步确定将第二视频帧写入第二文件之后,该录像设备是否停止向第二文件中写入视频帧。
具体的,本发明实施例中,录像设备将第二视频帧写入第二文件的方法,与该录像设备将第一视频帧写入第一文件的方法类似,对于录像设备将第二视频帧写入第二文件的过程的具体描述,可以参见上述S105-S116的相关描述,此处不再赘述。
上述主要从录像设备的角度对本发明实施例提供的方案进行了介绍。可以理解的是,录像设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本发明实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本发明实施例可以根据上述方法示例对录像设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本发明实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,图9示出了上述实施例中所涉及的录像设备的一种可能的结构示意图,如图9所示,录像设备可以包括:读取模块20、确定模块21和写数据模块22。读取模块20可以用于支持录像设备执行上述方法实施例中的S104、S111、S114和S118;确定模块21可以用于支持录像设备执行上述方法实施例中的S105、S106(包括S106a-S106b)、S107、S108和S115;写数据模块22可以用于支持录像设备执行上述方法实施例中的S109、S110、S112、S113、S116和S119。可选的,如图9所示,该录像设备还可以包括文件管理模块23、获取模块24、编码模块25、存储模块26。文件管理模块23可以用于支持录像设备执行上述方法实施例中的S117;获取模块24可以用于支持录像设备执行上述方法实施例中的S101;编码模块25可以用于支持录像设备执行上述方法实施例中的S102;存储模块26可以用于支持录像设备执行上述方法实施例中的S103。其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
在采用集成的单元的情况下,图10示出了上述实施例中所涉及的录像设备的一种可能的结构示意图。如图10所示,录像设备可以包括:处理模块30和通信模块31。处理模块30可以用于对录像设备的动作进行控制管理,例如,处理模块30可以用于支持录像设备执行上述方法实施例中的S101、S102、S104-S119,其中S106包括S106a和S106b,和/或用于本文所描述的技术的其它过程。通信模块31可以用于支持录像设备与其他网络实体的通信。可选的,如图10所示,该录像设备还可以包括存储模块32,用于存储录像设备的程序代码和数据,例如,存储模块32可以用于支持路线设备执行上述方法实施例中的S103。
其中,处理模块30可以是处理器或控制器(例如可以是上述如图1所示的音视频编码模块11),例如可以是CPU、通用处理器、DSP、ASIC、FPGA或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本发明实施例公开内容所描述的各种示例性的逻辑方框、模块和电路。上述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。通信模块31可以是收发器、收发电路或通信接口等(例如可以是上述如图1所示的输出接口15)。存储模块32可以是存储器(例如可以是上述如图1所示的存储器14)。
当处理模块30为处理器,通信模块31为收发器,存储模块32为存储器时,处理器、收发器和存储器可以通过总线连接。总线可以是外设部件互连标准(peripheralcomponent interconnect,PCI)总线或扩展工业标准结构(extended Industry standardarchitecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机指令时,全部或部分地产生按照本发明实施例中的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))方式或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包括一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如,软盘、磁盘、磁带)、光介质(例如,数字视频光盘(digital video disc,DVD))、或者半导体介质(例如固态硬盘(solid state drives,SSD))等。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (18)

1.一种处理视频流的方法,其特征在于,包括:
录像设备读取缓存队列中的第一视频帧,所述缓存队列用于存储源视频流中待处理的视频帧;
若所述第一视频帧为关键帧,则所述录像设备确定待写入至第一文件的关键帧的数量,所述第一文件用于承载目标视频流,所述目标视频流为所述源视频流中的一段视频流;
在待写入至所述第一文件的关键帧的数量等于1,并且在第二视频帧为关键帧的情况下,所述录像设备将当前读取的视频帧写入所述第一文件,并且所述录像设备停止向所述第一文件中写入所述第二视频帧,所述第二视频帧为所述录像设备当前读取的视频帧的下一帧。
2.根据权利要求1所述的方法,其特征在于,所述录像设备确定待写入至第一文件的关键帧的数量,包括:
所述录像设备根据所述第一视频帧的显示时间戳PTS值、第三视频帧的PTS值,以及所述目标视频流的时长,确定待写入至所述第一文件的视频流的时长,所述第三视频帧为所述第一文件中已写入的视频流的首帧;
所述录像设备根据待写入至所述第一文件的视频流的时长、所述源视频流的画面组的值,以及所述源视频流的帧率,确定待写入至所述第一文件的关键帧的数量;
其中,所述源视频流的画面组的值为所述源视频流的画面组包含的视频帧的数量。
3.根据权利要求2所述的方法,其特征在于,所述录像设备根据待写入至所述第一文件的视频流的时长、所述源视频流的画面组的值,以及所述源视频流的帧率,确定待写入至所述第一文件的关键帧的数量,包括:
所述录像设备根据待写入至所述第一文件的视频流的时长、所述源视频流的画面组的值,以及所述源视频流的帧率,采用公式
Figure FDA0003181259390000011
将In的值四舍五入后确定为待写入至所述第一文件的关键帧的数量,其中,T为待写入至所述第一文件的视频流的时长,GOP为所述源视频流的画面组的值,FrameRate为所述源视频流的帧率。
4.根据权利要求1至3任意一项所述的方法,在所述录像设备读取第一视频帧之后,所述方法还包括:
所述录像设备确定所述第一视频帧是否为关键帧。
5.根据权利要求1至3任意一项所述的方法,其特征在于,在所述录像设备将当前读取的视频帧写入所述第一文件之后,所述方法还包括:
所述录像设备创建第二文件;
所述录像设备读取所述第二视频帧;
所述录像设备将所述第二视频帧写入所述第二文件。
6.根据权利要求1至3任意一项所述的方法,其特征在于,
在待写入至所述第一文件的关键帧的数量等于1,并且在所述第二视频帧为非关键帧的情况下,所述录像设备将所述第一视频帧写入所述第一文件;
所述录像设备读取所述第二视频帧;
所述录像设备将所述第二视频帧写入所述第一文件。
7.根据权利要求1至3任意一项所述的方法,其特征在于,
在待写入至所述第一文件的关键帧的数量大于1的情况下,所述录像设备将所述第一视频帧写入所述第一文件;
所述录像设备读取所述第二视频帧;
若所述第二视频帧为关键帧,则所述录像设备确定待写入至所述第一文件的关键帧的数量;
在待写入至所述第一文件的关键帧的数量等于1,并且在第四视频帧为关键帧的情况下,所述录像设备将当前读取的视频帧写入所述第一文件,并且所述录像设备停止向所述第一文件中写入第四视频帧,所述第四视频帧为所述录像设备当前读取的视频帧的下一帧。
8.根据权利要求1所述的方法,其特征在于,
若所述第一视频帧为所述目标视频流的首帧,则所述录像设备直接将所述第一视频帧写入所述第一文件。
9.一种录像设备,其特征在于,包括读取模块、确定模块和写数据模块;
所述读取模块,用于读取缓存队列中的第一视频帧,所述缓存队列用于存储源视频流中待处理的视频帧;
所述确定模块,用于在所述读取模块读取的所述第一视频帧为关键帧的情况下,确定待写入至第一文件的关键帧的数量,所述第一文件用于承载目标视频流,所述目标视频流为所述源视频流中的一段视频流;
所述写数据模块,用于在所述确定模块确定的待写入至所述第一文件的关键帧的数量等于1,并且在第二视频帧为关键帧的情况下,所述录像设备将当前读取的视频帧写入所述第一文件,并且所述录像设备停止向所述第一文件中写入所述第二视频帧,所述第二视频帧为所述录像设备当前读取的视频帧的下一帧。
10.根据权利要求9所述的录像设备,其特征在于,
所述确定模块,具体用于根据所述第一视频帧的显示时间戳PTS值、第三视频帧的PTS值,以及所述目标视频流的时长,确定待写入至所述第一文件的视频流的时长,所述第三视频帧为所述第一文件中已写入的视频流的首帧;并且根据待写入至所述第一文件的视频流的时长、所述源视频流的画面组的值,以及所述源视频流的帧率,确定待写入至所述第一文件的关键帧的数量;
其中,所述源视频流的画面组的值为所述源视频流的画面组包含的视频帧的数量。
11.根据权利要求10所述的录像设备,其特征在于,
所述确定模块,具体用于根据待写入至所述第一文件的视频流的时长、所述源视频流的画面组的值,以及所述源视频流的帧率,采用公式
Figure FDA0003181259390000021
将In的值四舍五入后确定为待写入至所述第一文件的关键帧的数量,其中,T为待写入至所述第一文件的视频流的时长,GOP为所述源视频流的画面组的值,FrameRate为所述源视频流的帧率。
12.根据权利要求9至11任意一项所述的录像设备,其特征在于,
所述确定模块,还用于在所述读取模块读取第一视频帧之后,确定所述第一视频帧是否为关键帧。
13.根据权利要求9至11任意一项所述的录像设备,其特征在于,所述录像设备还包括创建模块;
所述创建模块,用于在所述写数据模块将所述当前读取的视频帧写入所述第一文件之后,创建第二文件;
所述读取模块,还用于读取所述第二视频帧;
所述写数据模块,还用于将所述第二视频帧写入所述第二文件。
14.根据权利要求9至11任意一项所述的录像设备,其特征在于,
所述写数据模块,还用于在所述确定模块确定的待写入至所述第一文件的关键帧的数量等于1,并且在所述第二视频帧为非关键帧的情况下,将所述第一视频帧写入所述第一文件;
所述读取模块,还用于读取所述第二视频帧;
所述写数据模块,还用于将所述第二视频帧写入所述第一文件。
15.根据权利要求9至11任意一项所述的录像设备,其特征在于,
所述写数据模块,还用于在待写入至所述第一文件的关键帧的数量大于1的情况下,将所述第一视频帧写入所述第一文件;
所述读取模块,还用于读取所述第二视频帧;
所述确定模块,还用于在读取模块读取的所述第二视频帧为关键帧的情况下,确定待写入至所述第一文件的关键帧的数量;
所述写数据模块,还用于在所述确定模块确定的待写入至所述第一文件的关键帧的数量等于1,并且在第四视频帧为关键帧的情况下,所述录像设备将当前读取的视频帧写入所述第一文件,并且所述录像设备停止向所述第一文件中写入第四视频帧,所述第四视频帧为所述录像设备当前读取的视频帧的下一帧。
16.根据权利要求9所述的录像设备,其特征在于,
所述写数据模块还用于,在所述第一视频帧为所述目标视频流的首帧的情况下,直接将所述第一视频帧写入所述第一文件。
17.一种录像设备,其特征在于,包括处理器和与所述处理器耦合连接的存储器;
所述存储器用于存储计算机指令,当所述录像设备运行时,所述处理器执行所述存储器存储的所述计算机指令,以使得所述录像设备执行如权利要求1至8任意一项所述的处理视频流的方法。
18.一种计算机可读存储介质,其特征在于,包括计算机指令,当所述计算机指令在录像设备上运行时,使得所述录像设备执行如权利要求1至8任意一项所述的处理视频流的方法。
CN201710614381.6A 2017-07-25 2017-07-25 一种处理视频流的方法和装置 Active CN109302574B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710614381.6A CN109302574B (zh) 2017-07-25 2017-07-25 一种处理视频流的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710614381.6A CN109302574B (zh) 2017-07-25 2017-07-25 一种处理视频流的方法和装置

Publications (2)

Publication Number Publication Date
CN109302574A CN109302574A (zh) 2019-02-01
CN109302574B true CN109302574B (zh) 2021-10-19

Family

ID=65168001

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710614381.6A Active CN109302574B (zh) 2017-07-25 2017-07-25 一种处理视频流的方法和装置

Country Status (1)

Country Link
CN (1) CN109302574B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112825081A (zh) * 2019-11-20 2021-05-21 云丁网络技术(北京)有限公司 录像信息处理方法、装置、电子设备、处理器及可读介质
CN113242446B (zh) * 2021-04-30 2023-02-28 北京字节跳动网络技术有限公司 视频帧的缓存方法、转发方法、通信服务器及程序产品

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6161154A (en) * 1997-11-26 2000-12-12 National Instruments Corporation System and method for extracting and restoring a video buffer from/to a video acquisition cycle
US7280753B2 (en) * 2003-09-03 2007-10-09 Canon Kabushiki Kaisha Display apparatus, image processing apparatus, and image processing system
CN101511007B (zh) * 2009-03-25 2011-02-02 杭州华三通信技术有限公司 一种网络视频监控系统中的录像实现方法、设备和系统
JP2012114909A (ja) * 2010-11-21 2012-06-14 Human Monitoring Ltd メディアデータを符号化および復号する方法およびシステム
CN102223539A (zh) * 2011-06-24 2011-10-19 武汉长江通信产业集团股份有限公司 图像编码丢帧花屏的处理方法
CN103037203B (zh) * 2012-12-11 2016-06-08 浙江宇视科技有限公司 一种基于块存储的索引恢复方法和装置
CN103533356A (zh) * 2013-10-10 2014-01-22 深圳市智美达科技有限公司 视频数据传输方法和装置
CN104679818B (zh) * 2014-12-25 2019-03-26 上海云赛智联信息科技有限公司 一种视频关键帧提取方法及系统
CN106254867A (zh) * 2016-08-08 2016-12-21 暴风集团股份有限公司 基于画面组对视频文件进行转码的方法及系统

Also Published As

Publication number Publication date
CN109302574A (zh) 2019-02-01

Similar Documents

Publication Publication Date Title
RU2497302C2 (ru) Методики кодирования и декодирования цифрового видео с переменным разрешением
CN112437345B (zh) 视频倍速播放方法、装置、电子设备及存储介质
CN110784740A (zh) 视频处理方法、装置、服务器及可读存储介质
US8170120B2 (en) Information processing apparatus and information processing method
CN110784718B (zh) 视频数据编码方法、装置、设备和存储介质
JP4884290B2 (ja) 動画像復号化集積回路、動画像復号化方法、動画像復号化装置及び動画像復号化プログラム
WO2018010662A1 (zh) 视频文件的转码方法,装置及存储介质
CN110662084B (zh) 一种mp4文件流直播的方法、移动终端及存储介质
JPWO2009104639A1 (ja) 映像配信装置、映像配信システム及び映像配信方法
US20160080687A1 (en) Image output device, image output method, and recording medium
CN109302574B (zh) 一种处理视频流的方法和装置
WO2023169426A1 (zh) 编解码方法及电子设备
WO2023130896A1 (zh) 媒体数据的数据处理方法、装置、计算机设备及存储介质
KR20140070896A (ko) 비디오 스트리밍 방법 및 그 전자 장치
JP2008072182A (ja) 動画像復号化装置、動画像復号化方法、動画像復号化プログラム、動画像符号化装置、動画像符号化方法、動画像符号化プログラム、及び動画像符号化復号化装置
CN112135163A (zh) 视频起播的方法以及装置
TWI552573B (zh) 具有初始化片段之視訊及音訊之寫碼
CN108933762B (zh) 一种媒体流的播放处理方法及装置
CN115243101B (zh) 视频动静率识别方法、装置、电子设备及存储介质
WO2021114305A1 (zh) 视频处理方法、装置及计算机可读存储介质
CN117579843B (zh) 视频编码处理方法及电子设备
CN1571500A (zh) 控制数字视频数据的比特率的方法和装置
US20230224476A1 (en) Advanced video coding using a key-frame library
CN115460369A (zh) 视频录像设备、离线视频分析方法、电子设备及存储介质
CN114143601A (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
TR01 Transfer of patent right

Effective date of registration: 20220711

Address after: Room 101, 318 Shuixiu Road, Jinze Town, Qingpu District, Shanghai, 20121

Patentee after: Shanghai Haisi Technology Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.

TR01 Transfer of patent right
CP03 Change of name, title or address

Address after: Room 101, No. 2 Hongqiaogang Road, Qingpu District, Shanghai, 201721

Patentee after: Haisi Technology Co.,Ltd.

Address before: Room 101, 318 Shuixiu Road, Jinze Town, Qingpu District, Shanghai, 20121

Patentee before: Shanghai Haisi Technology Co.,Ltd.

CP03 Change of name, title or address