CN106231348B - 一种gop数据的回放方法、装置和系统 - Google Patents

一种gop数据的回放方法、装置和系统 Download PDF

Info

Publication number
CN106231348B
CN106231348B CN201610830978.XA CN201610830978A CN106231348B CN 106231348 B CN106231348 B CN 106231348B CN 201610830978 A CN201610830978 A CN 201610830978A CN 106231348 B CN106231348 B CN 106231348B
Authority
CN
China
Prior art keywords
frame
gop
subdata
data
client
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
CN201610830978.XA
Other languages
English (en)
Other versions
CN106231348A (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.)
Zhejiang Uniview Technologies Co Ltd
Original Assignee
Zhejiang Uniview 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 Zhejiang Uniview Technologies Co Ltd filed Critical Zhejiang Uniview Technologies Co Ltd
Priority to CN201610830978.XA priority Critical patent/CN106231348B/zh
Publication of CN106231348A publication Critical patent/CN106231348A/zh
Application granted granted Critical
Publication of CN106231348B publication Critical patent/CN106231348B/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/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/232Content retrieval operation locally within server, e.g. reading video streams from disk arrays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/231Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
    • H04N21/23113Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion involving housekeeping operations for stored content, e.g. prioritizing content for deletion because of storage space restrictions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/23406Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving management of server-side video buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/235Processing of additional data, e.g. scrambling of additional data or processing content descriptors
    • H04N21/2353Processing of additional data, e.g. scrambling of additional data or processing content descriptors specifically adapted to content descriptors, e.g. coding, compressing or processing of metadata
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/239Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests
    • H04N21/2393Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests involving handling client requests
    • 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/44004Processing 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 video buffer management, e.g. video decoder buffer or video display buffer
    • 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/472End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
    • H04N21/47202End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for requesting content on demand, e.g. video on demand

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Library & Information Science (AREA)
  • Human Computer Interaction (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明提供一种GOP数据的回放方法、装置和系统,该方法包括:服务器在接收到来自客户端的点播请求后,若客户端点播的是变长GOP数据中的GOP子数据,判断是否已经发送过GOP子数据对应的I帧;如果是,服务器向客户端发送GOP子数据,客户端根据自身缓存的GOP子数据对应的I帧,对GOP子数据的关键P帧进行解码处理,并对解码处理后的GOP子数据进行回放;如果否,服务器向客户端发送GOP子数据对应的I帧、GOP子数据,客户端缓存I帧,并根据I帧对GOP子数据的关键P帧进行解码处理,并对解码处理后的GOP子数据进行回放。通过本发明的技术方案,在变长GOP数据的编码方式下,实现GOP数据的精确秒级检索,解决GOP数据的跨数据单元存储问题。

Description

一种GOP数据的回放方法、装置和系统
技术领域
本发明涉及存储技术领域,尤其是一种GOP数据的回放方法、装置和系统。
背景技术
目前,前端设备(如网络摄像机、模拟摄像机、编码器等)可以基于iSCSI(internetSmall Computer System Interface,基于internet的小型计算机系统接口)协议,将视频数据存储到IP SAN(Storage Area Network,存储区域网络)设备。而且,为了实现大量视频数据在IP SAN设备上的高效存储与快速检索,还可以在IP SAN设备中为每个前端设备划分独立的存储空间,且可以增加时间索引,从而在检索视频数据时,可以基于时间索引快速定位到指定时间的视频数据。
如图1所示,为针对一个前端设备的存储空间的存储格式示意图,用于存储和管理该前端设备的所有视频数据。在通常情况下,IP SAN设备是以GOP(Group of Pictures,画面组)数据的形式来存储视频数据的。该存储格式包括:超级块,用于记录块格式的版本号等信息。一级时间索引区,用于记录与n个数据单元分别对应的n个时间索引,每个时间索引表示数据单元的第一个GOP数据的开始时间;基于一级时间索引区,可以快速定位到某个数据单元。数据单元,用于保存前端设备的所有GOP数据,其可以达到几百M字节。二级时间索引区,用于记录与n个GOP数据分别对应的n个时间索引,每个时间索引表示GOP数据的开始时间;基于二级时间索引区,就可以快速定位到某个GOP数据。在二级时间索引区之后,就是本数据单元内的所有GOP数据。
当采用上述存储格式对GOP数据进行存储时,如果每个GOP数据的长度固定,则可以实现GOP数据在IP SAN设备上的高效存储与快速检索。但是,如果每个GOP数据的长度可变,则上述存储格式不再适用,无法实现GOP数据在IP SAN设备上的高效存储与快速检索,甚至会浪费大量的存储空间。
发明内容
本发明提供一种画面组GOP数据的回放方法,所述方法包括:
服务器在接收到来自客户端的点播请求后,若所述客户端点播的是变长GOP数据中的GOP子数据,判断是否已经发送过所述GOP子数据对应的I帧;
如果是,则所述服务器向所述客户端发送所述GOP子数据,以使所述客户端根据自身缓存的所述GOP子数据对应的I帧,对所述GOP子数据的关键P帧进行解码处理,并对解码处理后的GOP子数据进行回放;
如果否,则所述服务器向所述客户端发送所述GOP子数据对应的I帧、所述GOP子数据,以使所述客户端缓存所述I帧,并根据所述I帧对所述GOP子数据的关键P帧进行解码处理,并对解码处理后的GOP子数据进行回放。
所述方法进一步包括:
所述服务器从所述点播请求中解析出检索时间信息,通过查询磁盘存储空间的一级时间索引区,得到与所述检索时间信息匹配的数据单元,并通过查询所述数据单元的二级时间索引区,得到与所述检索时间信息匹配的GOP子数据;
其中,在数据单元的二级时间索引区内,记录了GOP数据的I帧的时间索引,并针对所述GOP数据的每个GOP子数据记录一个索引项,在该索引项内包括该GOP子数据对应的时间索引、该GOP子数据与该GOP子数据对应的I帧之间的位置关系;所述位置关系用于使所述服务器利用该GOP子数据的位置,定位到该GOP子数据对应的I帧的位置。
所述方法进一步包括:
存储设备在存储GOP数据时,在所述GOP数据的I帧以及每个关键P帧之前添加附加增强信息SEI信息,所述SEI信息包括:编码模式、显示开关、帧标识;其中,所述编码模式具体为普通编码模式或者变长GOP编码模式,所述显示开关具体为不送显或者送显,所述帧标识具体为I帧或者关键P帧;
若所述GOP数据跨数据单元存储,则在将所述GOP数据存储到两个数据单元后,从所述两个数据单元的第一个数据单元中,复制所述GOP数据的I帧,并将所述I帧存储到所述两个数据单元的第二个数据单元的最前面;其中,在第一个数据单元中,所述I帧的SEI信息包括:编码模式为变长GOP编码模式、显示开关为送显、帧标识为I帧;在第二个数据单元中,所述I帧的SEI信息包括:编码模式为变长GOP编码模式、显示开关为不送显、帧标识为I帧。
所述服务器判断是否已经发送过所述GOP子数据对应的I帧的过程,具体包括:所述服务器查询I帧是否已经被发送的标识;若所述标识为已发送,则所述服务器确定已经发送过所述GOP子数据对应的I帧;若所述标识为未发送,则所述服务器确定没有发送过所述GOP子数据对应的I帧;
其中,所述标识的初始值为未发送;所述服务器在第一次向所述客户端发送所述GOP子数据对应的I帧时,则将所述标识设置为已发送。
所述方法进一步包括:
在所述服务器向所述客户端发送的所述GOP子数据对应的I帧中,在所述I帧前面的SEI信息中,帧标识为I帧,显示开关为不送显或者送显;
所述客户端在接收到所述I帧后,从所述I帧的SEI信息中解析出帧标识和显示开关;若所述帧标识为I帧,所述显示开关为不送显,则所述客户端只利用所述I帧对所述GOP子数据的关键P帧进行解码处理,而拒绝对所述I帧进行回放;若所述帧标识为I帧,所述显示开关为送显,则所述客户端利用所述I帧对所述GOP子数据的关键P帧进行解码处理,并对所述I帧进行回放。
所述方法进一步包括:
针对每个GOP数据,所述客户端缓存所述GOP数据的I帧,并缓存所述GOP数据的每个GOP子数据的关键P帧;针对缓存的I帧,所述客户端在接收到新的I帧时,使用新的I帧替换已经缓存的I帧;针对缓存的关键P帧,所述客户端在接收到新的关键P帧时,使用新的关键P帧替换已经缓存的关键P帧。
本发明提供一种画面组GOP数据的回放装置,应用于服务器,包括:
判断模块,用于在接收到来自客户端的点播请求后,若所述客户端点播的是变长GOP数据中的GOP子数据,则判断是否已经发送过所述GOP子数据对应的I帧;
发送模块,用于当判断结果为是时,则向所述客户端发送所述GOP子数据,以使所述客户端根据自身缓存的所述GOP子数据对应的I帧,对所述GOP子数据的关键P帧进行解码处理,并对解码处理后的GOP子数据进行回放;当判断结果为否时,则向所述客户端发送所述GOP子数据对应的I帧、所述GOP子数据,以使所述客户端缓存所述I帧,并根据所述I帧对所述GOP子数据的关键P帧进行解码处理,并对解码处理后的GOP子数据进行回放。
还包括:获得模块,用于从所述点播请求中解析出检索时间信息,通过查询磁盘存储空间的一级时间索引区,得到与所述检索时间信息匹配的数据单元,并通过查询所述数据单元的二级时间索引区,得到与所述检索时间信息匹配的GOP子数据;其中,在数据单元的二级时间索引区内,记录了GOP数据的I帧的时间索引,并针对所述GOP数据的每个GOP子数据记录一个索引项,在该索引项内包括该GOP子数据对应的时间索引、该GOP子数据与该GOP子数据对应的I帧之间的位置关系;所述位置关系用于使所述获得模块利用该GOP子数据的位置,定位到该GOP子数据对应的I帧的位置。
所述判断模块,具体用于在判断是否已经发送过所述GOP子数据对应的I帧的过程中,查询I帧是否已经被发送的标识;若所述标识为已发送,则确定已经发送过所述GOP子数据对应的I帧;若所述标识为未发送,则确定没有发送过所述GOP子数据对应的I帧;其中,所述标识的初始值为未发送;在第一次向所述客户端发送所述GOP子数据对应的I帧时,则将所述标识设置为已发送。
本发明提供一种画面组GOP数据的回放系统,所述系统包括:
服务器,用于在接收到来自客户端的点播请求后,若所述客户端点播的是变长GOP数据中的GOP子数据,判断是否已经发送过所述GOP子数据对应的I帧;如果是,则向所述客户端发送所述GOP子数据;如果否,则向所述客户端发送所述GOP子数据对应的I帧、所述GOP子数据;
客户端,用于在接收到所述服务器发送的GOP子数据时,则根据自身缓存的所述GOP子数据对应的I帧,对所述GOP子数据的关键P帧进行解码处理,并对解码处理后的GOP子数据进行回放;在接收到所述服务器发送的GOP子数据对应的I帧、GOP子数据时,缓存所述I帧,并根据所述I帧对所述GOP子数据的关键P帧进行解码处理,并对解码处理后的GOP子数据进行回放。
基于上述技术方案,本发明实施例中,在变长GOP数据的编码方式下,对于GOP数据不是固定长度的情况,可以根据时间索引直接检索到GOP子数据,实现GOP数据的精确秒级检索,并支持基于关键P帧快速定位到GOP数据的I帧。而且,解决GOP数据的跨数据单元存储问题,节约大量存储空间,实现GOP数据的高效存储与快速检索,而且支持顺放、倒放、跳放等多种回放模式。
附图说明
为了更加清楚地说明本发明实施例或者现有技术中的技术方案,下面将对本发明实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是一种针对一个前端设备的存储空间的存储格式示意图;
图2是本发明一种实施方式中的变长GOP数据的编码示意图;
图3是另一种针对一个前端设备的存储空间的存储格式示意图;
图4是本发明一种实施方式中的GOP数据的回放方法的流程图;
图5是本发明一种实施方式中的服务器的硬件结构图;
图6是本发明一种实施方式中的GOP数据的回放装置的结构图。
具体实施方式
在本发明使用的术语仅仅是出于描述特定实施例的目的,而非限制本发明。本发明和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
随着视频监控技术的发展,一种变长GOP数据的编码方式正成为主流方案,在这种编码方式中,GOP数据不再是固定长度,GOP数据的长度与实际场景相关。对于无前景目标、只有固定背景图像的场景,前端设备可能十几秒、甚至几十秒才编码出一个I帧。对于前景目标频繁出现的场景,前端设备还是1到2秒就编码出1个I帧。由于I帧在整个GOP数据的占比较大(如达到70%以上),因此,通过采用变长GOP数据的编码方式,对于夜晚或者人员活动较少的场景,由于有效减少了I帧数量,因此,可以降低网络带宽,减少存储空间的开销。
如图2所示,为变长GOP数据的编码示意图,在一个GOP数据中,包括一个I帧、多个子GOP数据。在每个子GOP数据中,包括一个关键P帧和多个普通P帧。其中,每个子GOP数据中的关键P帧均参考I帧进行编码,而普通P帧参考子GOP数据中的关键P帧或者前一个普通P帧进行编码。
对于变长GOP数据的编码方式,当采用图1的存储格式对GOP数据进行存储时,存在如下问题:(1)GOP数据的长度无法预估,会出现一个GOP数据跨越两个数据单元的问题。例如,在固定长度的GOP数据编码方式下,可以根据前一GOP数据的长度,预估数据单元的剩余空间是否足够存储下一个GOP数据,如果不够,则可以切换到下一个数据单元进行存储。但是,对于变长GOP数据的编码方式,GOP数据的长度是可变的,无法做到预估判断。这样的影响是:如果数据单元的剩余空间无法存储一个GOP数据,则一个GOP数据会被切分到两个数据单元中,给查找、读取GOP数据带来问题。(2)GOP数据检索的问题。当基于二级时间索引区定位到某个GOP数据时,由于GOP数据过大,一个GOP数据的跨度可能长达几十秒,因此很难做到精确的秒级检索。(3)对于回放过程存在如下问题:在倒放或者跳放时,如果回放时间落在某个关键P帧,如果直接发送关键P帧到客户端,由于客户端没有对应的I帧,因此导致关键P帧无法解码。对于高倍速(如8倍速及以上)回放,如果按照只回放I帧的策略,由于GOP数据的I帧间隔太大,因此画面跳变剧烈,回放效果很差。
针对上述问题,本发明实施例中提出了一种GOP数据的回放方法,可以用于对变长GOP数据进行回放,且该GOP数据的回放方法可以应用于包括服务器(如VOD(Video onDemand,视频点播)服务器等)、前端设备(如网络摄像机、模拟摄像机、编码器等)、存储设备(如IP SAN设备等)和客户端(如解码器、回放客户端等)的视频监控系统中。其中,一个GOP数据就是一个I帧组,即一组连续的画面,而GOP数据的长度,即多少帧里面出现一次I帧。在一个GOP数据中,存储的是该GOP数据对应的所有视频数据、音频数据。
在一个例子中,前端设备可以基于iSCSI协议,将GOP数据存储到IP SAN设备。为了实现大量GOP数据在IP SAN设备上的高效存储与快速检索,可以在IP SAN设备为每个前端设备划分独立存储空间,如图3所示,为针对一个前端设备的存储空间的存储格式示意图,用于存储该前端设备的所有GOP数据。
其中,该存储格式包括:超级块,用于记录块格式的版本号等信息。一级时间索引区,用于记录与n个数据单元分别对应的n个时间索引,每个时间索引表示数据单元的第一个GOP数据的开始时间;基于一级时间索引区,可以快速定位到某个数据单元。数据单元,用于保存前端设备的所有GOP数据,其可以达到几百M字节。二级时间索引区,在数据单元的二级时间索引区内,不是记录与n个GOP数据分别对应的n个时间索引,而是记录GOP数据的I帧的时间索引,并针对该GOP数据的每个GOP子数据记录一个索引项,在索引项内包括该GOP子数据对应的时间索引(时间索引表示该GOP子数据的开始时间)、该GOP子数据与该GOP子数据对应的I帧之间的位置关系(如GOP子数据与I帧相隔的块数)。基于此位置关系,可以使服务器利用该GOP子数据的位置,快速定位到该GOP子数据对应的I帧的位置。基于二级时间索引区,就可以快速定位到GOP数据的I帧、快速定位到某个GOP子数据以及该GOP子数据对应的I帧。在二级时间索引区之后,就是本数据单元内的所有GOP子数据。
例如,GOP数据1包括GOP子数据1-GOP子数据16,GOP数据1的I帧占用存储空间的1个数据块,GOP子数据1占用存储空间的2个数据块,GOP子数据2占用存储空间的3个数据块等,以此类推。则在数据单元的二级时间索引区内,不是只记录GOP数据1对应的时间索引,而是记录GOP数据的I帧对应的时间索引和16个索引项。在这16个索引项中,第一个索引项内包括GOP子数据1对应的时间索引、GOP子数据1与I帧之间间隔的数据块的数量0。第二个索引项内包括GOP子数据2对应的时间索引、GOP子数据2与I帧之间间隔的数据块的数量2。第三个索引项内包括GOP子数据3对应的时间索引、GOP子数据3与I帧之间间隔的数据块的数量5。以此类推。
在一个例子中,存储设备在存储GOP数据时,还可以在该GOP数据的I帧以及每个关键P帧之前,添加SEI(Supplemental Enhancement Information,附加增强信息)信息,且该SEI信息可以包括但不限于如下信息:编码模式、显示开关、帧标识等。其中,该编码模式具体可以为普通编码模式(即对应固定长度的GOP数据)或者变长GOP编码模式(即对应变长GOP数据),该显示开关具体可以为不送显或者送显,该帧标识具体可以为I帧或者关键P帧。
当然,在实际应用中,并不局限于在GOP数据的I帧以及每个关键P帧之前添加SEI信息,存储设备可以在GOP数据的每帧(如I帧、关键P帧、普通P帧、B帧)之前添加SEI信息,且帧标识还可以为普通P帧或者B帧。此外,SEI信息也并不局限于编码模式、显示开关、帧标识等,如SEI信息还可以包括控制参数,如当前帧的帧类型、帧开始标记、帧结束标记、帧数据长度等。
以H.264或者H.265的GOP数据为例,在GOP数据的每帧之前添加一个字节的SEI信息。SEI类型为自定义值(如0x21等);第1个比特为保留字段;第2、3个比特为编码模式,00表示普通编码模式,01表示变长GOP编码模式,其它数值为预留;第4个比特为显示开关,0表示不送显,1表示送显;第5、6个比特为保留字段;第7、8个比特为帧标识,00表示I帧,01表示普通P帧,10表示B帧,11表示关键P帧。当然,上述数值只是给出了SEI信息的一个示例,在实际应用中并不局限于此,本发明实施例对此SEI信息的结构不做限制。
在一个例子中,存储设备在存储GOP数据时,若GOP数据没有跨数据单元存储,则按照顺序将GOP数据存储到一个数据单元即可。若GOP数据跨数据单元存储,则在按照顺序将GOP数据存储到两个数据单元后,从两个数据单元的第一个数据单元中,复制GOP数据的I帧,并将I帧存储到两个数据单元的第二个数据单元的最前面,并将已经存储的GOP子数据依次向后迁移。其中,在该第一个数据单元中,该I帧的SEI信息包括:编码模式为变长GOP编码模式、显示开关为送显、帧标识为I帧;在该第二个数据单元中,该I帧的SEI信息包括:编码模式为变长GOP编码模式、显示开关为不送显、帧标识为I帧。
例如,GOP数据1包括GOP子数据1-GOP子数据16,在将GOP数据1的I帧、GOP子数据1-GOP子数据10存储到数据单元1后,如果数据单元1已经没有空闲的存储空间,则可以依次将GOP数据1的I帧、GOP子数据11-GOP子数据16存储到数据单元2。因此,GOP数据1的I帧被存储到数据单元1和数据单元2,数据单元1内的I帧用于对GOP子数据1-GOP子数据10进行解码,数据单元2内的I帧用于对GOP子数据11-GOP子数据16进行解码。此外,数据单元1内的I帧的显示开关为送显,数据单元2内的I帧的显示开关为不送显。
综上所述,对于变长GOP数据的情况,通过对变长GOP数据的块存储格式进行改进,可以支持对变长GOP数据的秒级精确检索,支持基于关键P帧快速定位到GOP数据的I帧,解决GOP数据跨数据单元存储的问题,同时兼容固定长度的GOP数据的存储。具体的,对于变长GOP数据,将关键P帧当成一个特殊的I帧来处理,即二级时间索引区的一个索引项对应到一个关键P帧引领的GOP子数据。也就是说,变长GOP数据(可以命名为大GOP)被分成若干个由关键P帧引领的GOP子数据(可以命名为小GOP)来进行索引。这样,在GOP数据的检索过程中,可以根据时间索引直接检索到由关键P帧引领的GOP子数据,从而有效解决对变长GOP数据的秒级精确检索问题。而且,在检索到GOP子数据之后,由于关键P帧、普通P帧的解码依赖于GOP数据的I帧,因此,还可以通过二级时间索引区的索引项中的位置关系,快速定位到GOP数据的I帧,从而支持基于关键P帧快速定位到GOP数据的I帧。而且,若GOP数据跨数据单元存储时,不是将整个GOP数据都存储到新的数据单元,而是只将I帧和部分GOP子数据存储到新的数据单元,从而可以节省存储空间。
针对GOP数据的回放过程,可以参考图4所示,该方法可以包括:
步骤401,服务器在接收到来自客户端的点播请求后,若客户端点播的是变长GOP数据中的GOP子数据,则判断服务器是否已经向客户端发送过该GOP子数据对应的I帧。如果是,则执行步骤402;如果否,则执行步骤403。
步骤402,服务器向客户端发送该GOP子数据,以使客户端根据自身缓存的该GOP子数据对应的I帧,对该GOP子数据的关键P帧进行解码处理,并对解码处理后的GOP子数据进行回放(如顺放、倒放、跳放等处理)。
步骤403,服务器向客户端发送该GOP子数据对应的I帧、该GOP子数据,以使客户端缓存该I帧,并根据该I帧对该GOP子数据的关键P帧进行解码处理,并对解码处理后的GOP子数据进行回放(如顺放、倒放、跳放等处理)。
针对步骤401,在一个例子中,服务器在接收到来自客户端的点播请求后,则服务器可以从该点播请求中解析出检索时间信息,并通过查询磁盘存储空间的一级时间索引区,得到与该检索时间信息匹配的数据单元,并通过查询该数据单元的二级时间索引区,得到与该检索时间信息匹配的GOP子数据。
其中,在用户需要回放GOP数据/GOP子数据时,则用户可以通过客户端向服务器发送点播请求,该点播请求中可以携带如下信息:前端设备的信息(表示需要回放该前端设备的GOP数据/GOP子数据)、检索时间信息(如回放的起始时间)、回放模式(如顺放、倒放、跳放等)、回放速率(比如单倍速、多倍速)等。该点播请求可以为基于RTSP(Real TimeStreaming Protocol,实时流传输协议)的消息或者基于其它控制协议的消息,对此协议类型不做限制。
基于前端设备的信息,服务器可以查询到该前端设备对应的磁盘存储空间。基于检索时间信息,服务器可以从磁盘存储空间的一级时间索引区,得到与该检索时间信息匹配的数据单元,然后从该数据单元的二级时间索引区,得到与该检索时间信息匹配的GOP子数据,并读取该GOP子数据。基于回放模式和回放速率,服务器获知回放采用的回放模式和回放速率,并据此进行回放处理。
在一个例子中,针对“判断服务器是否已经向客户端发送过该GOP子数据对应的I帧”的过程,可以包括但不限于:服务器查询I帧是否已经被发送的标识。若该标识为已发送,则服务器可以确定出已经发送过该GOP子数据对应的I帧;若该标识为未发送,则服务器可以确定出没有发送过该GOP子数据对应的I帧。其中,该标识的初始值可以为未发送;而且,服务器在第一次向客户端发送该GOP子数据对应的I帧时,则可以将该标识设置为已发送。
在一个例子中,在服务器向客户端发送的GOP子数据对应的I帧中,在该I帧前面的SEI信息中,帧标识为I帧,且显示开关为不送显或者送显。客户端在接收到该I帧后,从该I帧的SEI信息中解析出帧标识和显示开关;若帧标识为I帧,显示开关为不送显,则客户端只利用I帧对GOP子数据的关键P帧进行解码处理,而拒绝对I帧进行回放;若帧标识为I帧,显示开关为送显,则客户端利用I帧对GOP子数据的关键P帧进行解码处理,并对I帧进行回放。
在一个例子中,针对每个GOP数据,客户端缓存该GOP数据的I帧,并缓存该GOP数据的每个GOP子数据的关键P帧;针对缓存的I帧,客户端在接收到新的I帧时,使用新的I帧替换已经缓存的I帧;针对缓存的关键P帧,客户端在接收到新的关键P帧时,使用新的关键P帧替换已经缓存的关键P帧。
以下结合具体的应用场景,对顺放、倒放、跳放等多种回放流程进行说明。
在一个例子中,在变长GOP数据的回放过程中,由于每帧前面均包括SEI信息,且该SEI信息的编码模式为普通编码模式(即对应固定长度的GOP数据)或者变长GOP编码模式(即对应变长GOP数据),因此,服务器/客户端可以从GOP数据的SEI信息中,解析出当前GOP数据是否为变长GOP数据。如果是变长GOP数据,则可以采用本发明实施例的技术方案进行处理,如果是固定长度的GOP数据,则可以采用传统方式进行处理。为了方便说明,后续以变长GOP数据为例进行说明,即客户端点播的是变长GOP数据。
在一个例子中,服务器作为GOP数据的发送端,可以控制GOP数据中各帧的发送顺序,从而保证参考帧总是先发送到客户端。具体的,针对每个I帧,总是先于参考该I帧的关键P帧,被服务器发送到客户端。针对每个关键P帧,总是先于参考该关键P帧的普通P帧,被服务器发送到客户端。
在一个例子中,服务器保证GOP数据中,用于对所有关键P帧进行解码的I帧,只读取并发送一次。而且,客户端对于每一路数据流,可以缓存GOP数据的I帧、每个GOP子数据的关键P帧。针对缓存的I帧,客户端在接收到新的I帧时,使用新的I帧替换已经缓存的I帧;针对缓存的关键P帧,客户端在接收到新的关键P帧时,使用新的关键P帧替换已经缓存的关键P帧。
为了实现I帧只读取并发送一次,在顺放过程中,若服务器先读取到关键P帧,则可以先读取并发送该关键P帧对应的I帧(该I帧的SEI信息中的显示开关为不送显),之后,服务器可以先读到GOP数据的I帧,再读到GOP子数据的关键P帧。在倒放过程中,若服务器先读取到关键P帧,则对于每个GOP数据,服务器可以先读出并发送I帧(该I帧的SEI信息中的显示开关为不送显)。在跳放过程中,若服务器先读取到关键P帧,则可以先读出并发送I帧(该I帧的SEI信息中的显示开关为不送显),之后,按照顺放或者倒放的流程处理。
在一个例子中,对于显示开关为不送显的I帧(即GOP数据跨数据单元时,存储复制多出的I帧),服务器不做处理,由客户端进行处理。如果是回放,则这个I帧被发送到客户端后,客户端对此I帧只进行解码,不送显。如果是下载,则这个I帧被发送到客户端后,会多出该I帧,客户端对此I帧不送显。
在一个例子中,服务器在每一路回放流对应的控制块中,增加I帧是否已经被发送的标识,以保证每个GOP数据中的I帧,只读取并发送一次。其中,对于顺放过程,如果没有发生跳转,则服务器将该标识初始化为未发送,之后只要发送第一个I帧,则服务器将该标识置为已发送,后续不再修改。如果发生跳转,则服务器将标识修改为未发送,之后只要发送第一个I帧,则服务器将标识置为已发送,后续不再修改。对于倒放过程,该标识初始化为未发送,服务器在发送GOP数据中的第一个关键P帧时,读出用于解码该关键P帧的I帧,修改标识为已发送。在正常发送完GOP数据的I帧之后,修改标识为未发送。
以下结合几个具体情况,对顺放、倒放、跳放等多种回放流程进行说明。
情况一、顺放的回放流程。
服务器从点播请求中解析出检索时间信息,并通过查询磁盘存储空间的一级时间索引区,得到与该检索时间信息匹配的数据单元,并通过查询该数据单元的二级时间索引区,得到与该检索时间信息匹配的I帧/关键P帧/普通P帧。
如果得到I帧(即GOP数据的I帧),则服务器读出I帧,将该I帧发送给客户端,并将该路回放流的I帧是否已经被发送的标识置为已发送。如果得到关键P帧(即GOP子数据的关键P帧),服务器查询I帧是否已经被发送的标识。如果该标识置为已发送,则服务器只将关键P帧发送到客户端。如果该标识置为未发送,服务器先读出并发送GOP数据的I帧,然后发送关键P帧。具体的,服务器根据关键P帧对应的二级时间索引区的索引项中的位置关系(GOP子数据与I帧之间间隔的数据块的数量),定位并读出对应的I帧,将I帧的SEI信息的显示开关设置为不送显,将I帧发送到客户端,并将I帧是否已经被发送的标识置为已发送,然后再发送关键P帧到客户端。如果得到普通P帧(即GOP子数据的普通P帧),服务器读取普通P帧,并直接将普通P帧发送到客户端。
客户端在接收到一帧数据后,根据SEI信息,进行区分处理:如果是I帧,则将I帧缓存到回放流的缓存中,在接收到新的I帧时,则释放之前缓存的I帧,并保存新的I帧。若SEI信息的显示开关为送显,执行解码与送显;若SEI信息的显示开关为不送显,不执行解码与送显。如果是关键P帧,从回放流的缓存中读出I帧,对关键P帧进行解码,并将关键P帧缓存到这路回放流的缓存中。在接收到新的关键P帧时,释放之前缓存的关键P帧,保存新的关键P帧。如果是普通P帧,从回放流的缓存中读出I帧、关键P帧,对普通P帧进行解码。
情况二、倒放的回放流程。
其中,对于变长GOP数据的倒放,对于每个GOP数据,总是先放关键P帧,而I帧在这个GOP数据中被最后读到。因此,每个GOP数据,均需要服务器先读出I帧,先于关键P帧发送到客户端。同时,需要保证每个GOP数据的I帧,在同一GOP数据的所有关键P帧的处理过程中,只读取并发送一次。
服务器从点播请求中解析出检索时间信息,并通过查询磁盘存储空间的一级时间索引区,得到与该检索时间信息匹配的数据单元,并通过查询该数据单元的二级时间索引区,得到与该检索时间信息匹配的I帧/关键P帧/普通P帧。
如果得到关键P帧(即GOP子数据的关键P帧),则服务器查询I帧是否已经被发送的标识。如果该标识置为已发送,则服务器只将关键P帧发送到客户端。如果该标识置为未发送,服务器先读出并发送GOP数据的I帧,然后发送关键P帧。具体的,服务器根据关键P帧对应的二级时间索引区的索引项中的位置关系(GOP子数据与I帧之间间隔的数据块的数量),定位并读出对应的I帧,将I帧的SEI信息的显示开关设置为不送显,将I帧发送到客户端,并将I帧是否已经被发送的标识置为已发送,然后再发送关键P帧到客户端。
如果得到I帧(即GOP数据的I帧),则服务器查询I帧是否已经被发送的标识。如果该标识置为已发送,则服务器不再发送I帧,而是发送特殊的通知报文(如带自定义字段的RTP(Real-time Transport Protocol,实时传输协议)报文),通知客户端直接读取并解码缓存中的I帧,在通知成功之后,服务器将I帧是否已经被发送的标识置为未发送,这样倒放到前一GOP数据时,服务器会再次读取前一GOP数据的I帧。如果该标识置为未发送,则服务器发送I帧给客户端,并将I帧是否已经被发送的标识置为未发送,这样倒放到前一GOP数据时,服务器会再次读取前一GOP数据的I帧。如果得到普通P帧(即GOP子数据的普通P帧),服务器读取普通P帧,并直接将普通P帧发送到客户端。
客户端在接收到一帧数据后,根据SEI信息,进行区分处理:如果是I帧,则将I帧缓存到回放流的缓存中,在接收到新的I帧时,则释放之前缓存的I帧,并保存新的I帧。若SEI信息的显示开关为送显,执行解码与送显;若SEI信息的显示开关为不送显,不执行解码与送显。如果是关键P帧,从回放流的缓存中读出I帧,对关键P帧进行解码,并将关键P帧缓存到这路回放流的缓存中。在接收到新的关键P帧时,释放之前缓存的关键P帧,保存新的关键P帧。如果是普通P帧,从回放流的缓存中读出I帧、关键P帧,对普通P帧进行解码。
情况三、跳放的回放流程。
服务器先获取跳放起始位置所对应的时间(如某一秒),然后从这一秒对应的GOP子数据的关键P帧开始处理。如果这路回放流的I帧是否已经被发送的标识为未发送,则处理流程与之前的顺放或者倒放流程类似,在此不再赘述。如果这路回放流的I帧是否已经被发送的标识为已发送,则服务器先判断跳放的时间点是否落在{该GOP子数据的开始时间,下一GOP子数据的开始时间}的区间内;如果跳放时间点没有落在该区间内,则将这路回放流的I帧是否已经被发送的标识修改为未发送,并读取新的I帧发送给客户端;在完成上述处理之后,服务器可以按照顺放或者倒放流程,进行后续处理,在此不再赘述。
客户端的处理流程与顺放或者倒放流程类似,在此不再赘述。
基于上述技术方案,本发明实施例中,在变长GOP数据的编码方式下,对于GOP数据不是固定长度的情况,可以根据时间索引直接检索到GOP子数据,实现GOP数据的精确秒级检索,并支持基于关键P帧快速定位到GOP数据的I帧。而且,解决GOP数据的跨数据单元存储问题,节约大量存储空间,实现GOP数据的高效存储与快速检索,而且支持顺放、倒放、跳放等多种回放模式。
基于与上述方法同样的发明构思,本发明实施例中还提供一种GOP数据的回放装置,该GOP数据的回放装置应用在服务器上。该GOP数据的回放装置可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在的服务器的处理器,读取非易失性存储器中对应的计算机程序指令形成的。从硬件层面而言,如图5所示,为本发明提出的GOP数据的回放装置所在的服务器的一种硬件结构图,除了图5所示的处理器、非易失性存储器外,服务器还可以包括其他硬件,如负责处理报文的转发芯片、网络接口、内存等;从硬件结构上来讲,服务器还可能是分布式设备,可能包括多个接口卡,以便在硬件层面进行报文处理的扩展。
如图6所示,为本发明提出的GOP数据的回放装置的结构图,包括:
判断模块11,用于在接收到来自客户端的点播请求后,若所述客户端点播的是变长GOP数据中的GOP子数据,则判断是否已经发送过所述GOP子数据对应的I帧;发送模块12,用于当判断结果为是时,则向所述客户端发送所述GOP子数据,以使所述客户端根据自身缓存的所述GOP子数据对应的I帧,对所述GOP子数据的关键P帧进行解码处理,并对解码处理后的GOP子数据进行回放;当判断结果为否时,则向所述客户端发送所述GOP子数据对应的I帧、所述GOP子数据,以使所述客户端缓存所述I帧,并根据所述I帧对所述GOP子数据的关键P帧进行解码处理,并对解码处理后的GOP子数据进行回放。
所述GOP数据的回放装置还包括(在图中未体现):
获得模块,用于从所述点播请求中解析出检索时间信息,通过查询磁盘存储空间的一级时间索引区,得到与所述检索时间信息匹配的数据单元,并通过查询所述数据单元的二级时间索引区,得到与所述检索时间信息匹配的GOP子数据;其中,在数据单元的二级时间索引区内,记录了GOP数据的I帧的时间索引,并针对所述GOP数据的每个GOP子数据记录一个索引项,在该索引项内包括该GOP子数据对应的时间索引、该GOP子数据与该GOP子数据对应的I帧之间的位置关系;所述位置关系用于使所述获得模块利用该GOP子数据的位置,定位到该GOP子数据对应的I帧的位置。
所述判断模块11,具体用于在判断是否已经发送过所述GOP子数据对应的I帧的过程中,查询I帧是否已经被发送的标识;若所述标识为已发送,确定已经发送过所述GOP子数据对应的I帧;若所述标识为未发送,确定没有发送过所述GOP子数据对应的I帧;其中,所述标识的初始值为未发送;在第一次向所述客户端发送所述GOP子数据对应的I帧时,则将所述标识设置为已发送。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
本发明实施例中还提供了一种GOP数据的回放系统,所述系统包括:
服务器,用于在接收到来自客户端的点播请求后,若所述客户端点播的是变长GOP数据中的GOP子数据,判断是否已经发送过所述GOP子数据对应的I帧;如果是,则向所述客户端发送所述GOP子数据;如果否,则向所述客户端发送所述GOP子数据对应的I帧、所述GOP子数据;
客户端,用于在接收到所述服务器发送的GOP子数据时,则根据自身缓存的所述GOP子数据对应的I帧,对所述GOP子数据的关键P帧进行解码处理,并对解码处理后的GOP子数据进行回放;在接收到所述服务器发送的GOP子数据对应的I帧、GOP子数据时,缓存所述I帧,并根据所述I帧对所述GOP子数据的关键P帧进行解码处理,并对解码处理后的GOP子数据进行回放。
在一个例子中,所述服务器,还用于从所述点播请求中解析出检索时间信息,通过查询磁盘存储空间的一级时间索引区,得到与所述检索时间信息匹配的数据单元,并通过查询所述数据单元的二级时间索引区,得到与所述检索时间信息匹配的GOP子数据;在数据单元的二级时间索引区内,针对每个GOP子数据记录一个索引项,在该索引项内包括该GOP子数据对应的时间索引、该GOP子数据与该GOP子数据对应的I帧之间的位置关系;所述位置关系用于使所述服务器利用该GOP子数据的位置,定位到该GOP子数据对应的I帧的位置。
在一个例子中,所述GOP数据的回放系统还包括:
存储设备,用于在存储GOP数据时,在所述GOP数据的I帧以及每个关键P帧之前添加附加增强信息SEI信息,所述SEI信息包括:编码模式、显示开关、帧标识;其中,所述编码模式具体为普通编码模式或者变长GOP编码模式,所述显示开关具体为不送显或者送显,所述帧标识具体为I帧或者关键P帧;
若所述GOP数据跨数据单元存储,则在将所述GOP数据存储到两个数据单元后,从所述两个数据单元的第一个数据单元中,复制所述GOP数据的I帧,并将所述I帧存储到所述两个数据单元的第二个数据单元的最前面;其中,在第一个数据单元中,所述I帧的SEI信息包括:编码模式为变长GOP编码模式、显示开关为送显、帧标识为I帧;在第二个数据单元中,所述I帧的SEI信息包括:编码模式为变长GOP编码模式、显示开关为不送显、帧标识为I帧。
所述服务器,具体用于在判断是否已经发送过所述GOP子数据对应的I帧的过程中,查询I帧是否已经被发送的标识;若所述标识为已发送,则确定已经发送过所述GOP子数据对应的I帧;若所述标识为未发送,则确定没有发送过所述GOP子数据对应的I帧;其中,所述标识的初始值为未发送;在第一次向所述客户端发送所述GOP子数据对应的I帧时,则将所述标识设置为已发送。
在一个例子中,所述服务器,还用于在向所述客户端发送的所述GOP子数据对应的I帧中,在所述I帧前面的SEI信息中,帧标识为I帧,显示开关为不送显或者送显;所述客户端,还用于在接收到所述I帧后,从所述I帧的SEI信息中解析出帧标识和显示开关;若所述帧标识为I帧,所述显示开关为不送显,则只利用所述I帧对所述GOP子数据的关键P帧进行解码处理,而拒绝对所述I帧进行回放;若所述帧标识为I帧,所述显示开关为送显,则利用所述I帧对所述GOP子数据的关键P帧进行解码处理,并对所述I帧进行回放。
在一个例子中,所述客户端,还用于针对每个GOP数据,缓存所述GOP数据的I帧,缓存所述GOP数据的每个GOP子数据的关键P帧;针对缓存的I帧,在接收到新的I帧时,使用新的I帧替换已经缓存的I帧;针对缓存的关键P帧,在接收到新的关键P帧时,使用新的关键P帧替换已经缓存的关键P帧。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可进一步拆分成多个子模块。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。

Claims (10)

1.一种画面组GOP数据的回放方法,其特征在于,所述方法包括:
服务器在接收到来自客户端的点播请求后,若所述客户端点播的是变长GOP数据中的GOP子数据,判断是否已经发送过所述GOP子数据对应的I帧;
如果是,则所述服务器向所述客户端发送所述GOP子数据,以使所述客户端根据自身缓存的所述GOP子数据对应的I帧,对所述GOP子数据的关键P帧进行解码处理,并对解码处理后的GOP子数据进行回放;
如果否,则所述服务器向所述客户端发送所述GOP子数据对应的I帧、所述GOP子数据,以使所述客户端缓存所述I帧,并根据所述I帧对所述GOP子数据的关键P帧进行解码处理,并对解码处理后的GOP子数据进行回放。
2.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:
所述服务器从所述点播请求中解析出检索时间信息,通过查询磁盘存储空间的一级时间索引区,得到与所述检索时间信息匹配的数据单元,并通过查询所述数据单元的二级时间索引区,得到与所述检索时间信息匹配的GOP子数据;
其中,在数据单元的二级时间索引区内,记录了GOP数据的I帧的时间索引,并针对所述GOP数据的每个GOP子数据记录一个索引项,在该索引项内包括该GOP子数据对应的时间索引、该GOP子数据与该GOP子数据对应的I帧之间的位置关系;所述位置关系用于使所述服务器利用该GOP子数据的位置,定位到该GOP子数据对应的I帧的位置。
3.根据权利要求1或2所述的方法,其特征在于,所述方法进一步包括:
存储设备在存储GOP数据时,在所述GOP数据的I帧以及每个关键P帧之前添加附加增强信息SEI信息,所述SEI信息包括:编码模式、显示开关、帧标识;其中,所述编码模式具体为普通编码模式或者变长GOP编码模式,所述显示开关具体为不送显或者送显,所述帧标识具体为I帧或者关键P帧;
若所述GOP数据跨数据单元存储,则在将所述GOP数据存储到两个数据单元后,从所述两个数据单元的第一个数据单元中,复制所述GOP数据的I帧,并将所述I帧存储到所述两个数据单元的第二个数据单元的最前面;其中,在第一个数据单元中,所述I帧的SEI信息包括:编码模式为变长GOP编码模式、显示开关为送显、帧标识为I帧;在第二个数据单元中,所述I帧的SEI信息包括:编码模式为变长GOP编码模式、显示开关为不送显、帧标识为I帧。
4.根据权利要求1所述的方法,其特征在于,所述服务器判断是否已经发送过所述GOP子数据对应的I帧的过程,具体包括:
所述服务器查询I帧是否已经被发送的标识;若所述标识为已发送,则所述服务器确定已经发送过所述GOP子数据对应的I帧;若所述标识为未发送,则所述服务器确定没有发送过所述GOP子数据对应的I帧;
其中,所述标识的初始值为未发送;所述服务器在第一次向所述客户端发送所述GOP子数据对应的I帧时,则将所述标识设置为已发送。
5.根据权利要求3所述的方法,其特征在于,所述方法进一步包括:
在所述服务器向所述客户端发送的所述GOP子数据对应的I帧中,在所述I帧前面的SEI信息中,帧标识为I帧,显示开关为不送显或者送显;
所述客户端在接收到所述I帧后,从所述I帧的SEI信息中解析出帧标识和显示开关;若所述帧标识为I帧,所述显示开关为不送显,则所述客户端只利用所述I帧对所述GOP子数据的关键P帧进行解码处理,而拒绝对所述I帧进行回放;若所述帧标识为I帧,所述显示开关为送显,则所述客户端利用所述I帧对所述GOP子数据的关键P帧进行解码处理,并对所述I帧进行回放。
6.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:
针对每个GOP数据,所述客户端缓存所述GOP数据的I帧,并缓存所述GOP数据的每个GOP子数据的关键P帧;针对缓存的I帧,所述客户端在接收到新的I帧时,使用新的I帧替换已经缓存的I帧;针对缓存的关键P帧,所述客户端在接收到新的关键P帧时,使用新的关键P帧替换已经缓存的关键P帧。
7.一种画面组GOP数据的回放装置,应用于服务器,其特征在于,包括:
判断模块,用于在接收到来自客户端的点播请求后,若所述客户端点播的是变长GOP数据中的GOP子数据,则判断是否已经发送过所述GOP子数据对应的I帧;
发送模块,用于当判断结果为是时,则向所述客户端发送所述GOP子数据,以使所述客户端根据自身缓存的所述GOP子数据对应的I帧,对所述GOP子数据的关键P帧进行解码处理,并对解码处理后的GOP子数据进行回放;当判断结果为否时,则向所述客户端发送所述GOP子数据对应的I帧、所述GOP子数据,以使所述客户端缓存所述I帧,并根据所述I帧对所述GOP子数据的关键P帧进行解码处理,并对解码处理后的GOP子数据进行回放。
8.根据权利要求7所述的装置,其特征在于,还包括:
获得模块,用于从所述点播请求中解析出检索时间信息,通过查询磁盘存储空间的一级时间索引区,得到与所述检索时间信息匹配的数据单元,并通过查询所述数据单元的二级时间索引区,得到与所述检索时间信息匹配的GOP子数据;其中,在数据单元的二级时间索引区内,记录了GOP数据的I帧的时间索引,并针对所述GOP数据的每个GOP子数据记录一个索引项,在该索引项内包括该GOP子数据对应的时间索引、该GOP子数据与该GOP子数据对应的I帧之间的位置关系;所述位置关系用于使所述获得模块利用该GOP子数据的位置,定位到该GOP子数据对应的I帧的位置。
9.根据权利要求7所述的装置,其特征在于,
所述判断模块,具体用于在判断是否已经发送过所述GOP子数据对应的I帧的过程中,查询I帧是否已经被发送的标识;若所述标识为已发送,则确定已经发送过所述GOP子数据对应的I帧;若所述标识为未发送,则确定没有发送过所述GOP子数据对应的I帧;其中,所述标识的初始值为未发送;在第一次向所述客户端发送所述GOP子数据对应的I帧时,则将所述标识设置为已发送。
10.一种画面组GOP数据的回放系统,其特征在于,所述系统包括:
服务器,用于在接收到来自客户端的点播请求后,若所述客户端点播的是变长GOP数据中的GOP子数据,判断是否已经发送过所述GOP子数据对应的I帧;如果是,则向所述客户端发送所述GOP子数据;如果否,则向所述客户端发送所述GOP子数据对应的I帧、所述GOP子数据;
客户端,用于在接收到所述服务器发送的GOP子数据时,则根据自身缓存的所述GOP子数据对应的I帧,对所述GOP子数据的关键P帧进行解码处理,并对解码处理后的GOP子数据进行回放;在接收到所述服务器发送的GOP子数据对应的I帧、GOP子数据时,缓存所述I帧,并根据所述I帧对所述GOP子数据的关键P帧进行解码处理,并对解码处理后的GOP子数据进行回放。
CN201610830978.XA 2016-09-19 2016-09-19 一种gop数据的回放方法、装置和系统 Active CN106231348B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610830978.XA CN106231348B (zh) 2016-09-19 2016-09-19 一种gop数据的回放方法、装置和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610830978.XA CN106231348B (zh) 2016-09-19 2016-09-19 一种gop数据的回放方法、装置和系统

Publications (2)

Publication Number Publication Date
CN106231348A CN106231348A (zh) 2016-12-14
CN106231348B true CN106231348B (zh) 2019-06-11

Family

ID=58075673

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610830978.XA Active CN106231348B (zh) 2016-09-19 2016-09-19 一种gop数据的回放方法、装置和系统

Country Status (1)

Country Link
CN (1) CN106231348B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108076377B (zh) * 2017-12-26 2020-12-08 浙江大华技术股份有限公司 一种视频的存储、播放方法、装置、电子设备及存储介质
CN109982067B (zh) * 2017-12-28 2021-02-02 浙江宇视科技有限公司 视频处理方法及装置
CN111083573A (zh) * 2018-10-22 2020-04-28 杭州海康威视系统技术有限公司 一种视频文件处理方法、装置和存储节点
CN109788372B (zh) * 2019-01-24 2021-06-08 维沃移动通信有限公司 一种流媒体的播放方法及相关装置
CN111614997B (zh) * 2020-05-11 2022-04-15 浙江大华技术股份有限公司 一种远端视频回放方法、装置、设备及介质
CN112351277B (zh) * 2020-11-04 2024-04-05 北京金山云网络技术有限公司 一种视频的编码方法和装置,视频的解码方法和装置
CN112333448B (zh) * 2020-11-04 2022-08-16 北京金山云网络技术有限公司 视频编码、解码方法和装置、电子设备和存储介质
CN112351285B (zh) * 2020-11-04 2024-04-05 北京金山云网络技术有限公司 视频编码、解码方法和装置、电子设备和存储介质
CN112822549B (zh) * 2020-12-30 2022-08-05 北京大学 基于分片重组的视频流解码方法、系统、终端及介质
CN113596518B (zh) * 2021-08-13 2022-04-08 北京中电兴发科技有限公司 一种用于提升倍速播放性能的视频存取方法
CN114245217A (zh) * 2021-12-17 2022-03-25 杭州视洞科技有限公司 一种节省流量的云端视频回放方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102129474A (zh) * 2011-04-20 2011-07-20 杭州华三通信技术有限公司 一种视频数据检索方法及其装置和系统
CN102156734A (zh) * 2011-04-12 2011-08-17 西南科技大学 一种基于语义隐藏标引的视频内容管理方法
CN104506866A (zh) * 2014-11-28 2015-04-08 北京奇艺世纪科技有限公司 一种适用于多码流的视频编码处理方法和视频编码器
CN104869403A (zh) * 2015-05-18 2015-08-26 中国传媒大学 一种基于x264压缩视频的镜头分割方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010013123A1 (en) * 1991-11-25 2001-08-09 Freeman Michael J. Customized program creation by splicing server based video, audio, or graphical segments
JP3496604B2 (ja) * 1999-12-20 2004-02-16 日本電気株式会社 圧縮画像データ再生装置および圧縮画像データ再生方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102156734A (zh) * 2011-04-12 2011-08-17 西南科技大学 一种基于语义隐藏标引的视频内容管理方法
CN102129474A (zh) * 2011-04-20 2011-07-20 杭州华三通信技术有限公司 一种视频数据检索方法及其装置和系统
CN104506866A (zh) * 2014-11-28 2015-04-08 北京奇艺世纪科技有限公司 一种适用于多码流的视频编码处理方法和视频编码器
CN104869403A (zh) * 2015-05-18 2015-08-26 中国传媒大学 一种基于x264压缩视频的镜头分割方法

Also Published As

Publication number Publication date
CN106231348A (zh) 2016-12-14

Similar Documents

Publication Publication Date Title
CN106231348B (zh) 一种gop数据的回放方法、装置和系统
CN100556110C (zh) 使用信息文件的快进特技模式和倒退特技模式
CN103561278B (zh) 包含连续播放的视频分配系统
JP2008262686A (ja) 同報通信データを記録するための方法、および、装置
RU2510152C2 (ru) Телевизионная приставка, способ и система для записи и воспроизведения канала телевидения по протоколу интернета (iptv)
JP4541962B2 (ja) 多重化装置、再生装置
CN107231581B (zh) 用于视频播放的方法、系统及流媒体播放控制服务器
CN105407307B (zh) 多通道视频录像数据的处理方法、系统及装置
CN101843099B (zh) 存储视频数据的装置和方法
CN103314579A (zh) 用于在多媒体流传输系统中存储和播放内容的装置及方法
TW201230747A (en) Arranging sub-track fragments for streaming video data
RU2005134850A (ru) Устройство воспроизведения мультимедийных данных, способ приема аудиоданных и структура аудиоданных в них
KR20110053176A (ko) 변속 재생 서비스 제공 방법 및 장치
KR20050118197A (ko) 스트림 버퍼 채널들에 대한 cpi 데이터
EP2661084A1 (en) Method to play a video data stream, device and computer program
CN113596518B (zh) 一种用于提升倍速播放性能的视频存取方法
CN102196249B (zh) 监控数据回放方法及编码器、视频管理服务器
EP1455360A2 (en) Disc apparatus, disc recording method, disc playback method, recording medium, and program
JP2005117660A (ja) 多重化されていないストリームを含むavデータを記録した情報保存媒体、その再生方法及び装置
WO2018014546A1 (zh) 一种视频数据的处理方法及装置
JP2016072858A (ja) メディアデータ生成方法、メディアデータ再生方法、メディアデータ生成装置、メディアデータ再生装置、コンピュータ読み取り可能な記録媒体、及びプログラム
CN102340705A (zh) 一种获取关键帧的系统及方法
CN102594773A (zh) 一种实现数据获取的方法和系统
CN110636368B (zh) 媒体播放方法、系统、装置及存储介质
CN110266706A (zh) 一种多媒体流数据的播放方法和装置

Legal Events

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