CN113438505A - 视频文件的还原方法、装置、计算机设备和存储介质 - Google Patents

视频文件的还原方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN113438505A
CN113438505A CN202110616053.6A CN202110616053A CN113438505A CN 113438505 A CN113438505 A CN 113438505A CN 202110616053 A CN202110616053 A CN 202110616053A CN 113438505 A CN113438505 A CN 113438505A
Authority
CN
China
Prior art keywords
video
data
video stream
protocol
flv
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.)
Pending
Application number
CN202110616053.6A
Other languages
English (en)
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.)
Dawning Network Technology Co ltd
Original Assignee
Dawning Network Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Dawning Network Technology Co ltd filed Critical Dawning Network Technology Co ltd
Priority to CN202110616053.6A priority Critical patent/CN113438505A/zh
Publication of CN113438505A publication Critical patent/CN113438505A/zh
Pending legal-status Critical Current

Links

Images

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/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/23418Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving operations for analysing video streams, e.g. detecting features or characteristics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • 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
    • 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/24Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/643Communication protocols
    • 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)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本申请涉及一种视频文件的还原方法、装置、计算机设备和存储介质。所述方法包括:获取目标视频对应的视频流;提取所述视频流的协议特征信息,并根据所述协议特征信息确定所述视频流的协议类型;在所述视频流的协议类型为HTTP‑FLV协议的情况下,根据预设的HTTP‑FLV数据提取策略,从所述视频流的数据包中提取所述目标视频的头部数据和视频数据;根据所述头部数据和所述视频数据生成所述目标视频对应的视频文件。采用本方法能够对HTTP‑FLV协议的视频流进行监测。

Description

视频文件的还原方法、装置、计算机设备和存储介质
技术领域
本申请涉及互联网技术领域,特别是涉及一种视频文件的还原方法、装置、计算机设备和存储介质。
背景技术
HTTP-FLV(Hypertext Transfer Protocol-FlashVideo,超文本传输协议-流媒体)协议是一种适用于端到端场景的视频传输协议,常应用于各直播平台或直播应用程序。
在进行视频传输时,数据请求端与数据发送端之间会建立HTTP长链接,数据发送端在视频流的数据包中携带数据请求端的地址信息,以使数据请求端根据自身的地址信息解析视频流,得到视频文件。但是,随着音视频数据量的逐渐增多,大量的视频内容被上传至网络上进行传播及分享,其中的部分视频中可能存在违规内容,为了维护网络环境的安全健康,需要对音视频内容进行监控和审阅,此时,需要在由端到端的数据通信基础上,增加旁路并接数据通信场景,即通过网络设备(如网关)将视频流镜像到服务器中,服务器对视频流进行解析和播放,以使技术人员能够对视频内容进行监测。
然而,服务器的地址信息与数据请求端的地址信息不同,无法解析出该视频流的视频文件,导致无法对HTTP-FLV协议的视频流进行监测。
发明内容
基于此,有必要针对上述技术问题,提供一种能够对HTTP-FLV协议的视频流进行监测的视频文件的还原方法、装置、计算机设备和存储介质。
一种视频文件的还原方法,所述方法包括:
获取目标视频对应的视频流;
提取所述视频流的协议特征信息,并根据所述协议特征信息确定所述视频流的协议类型;
在所述视频流的协议类型为HTTP-FLV协议的情况下,根据预设的HTTP-FLV数据提取策略,从所述视频流的数据包中提取所述目标视频的头部数据和视频数据;
根据所述头部数据和所述视频数据生成所述目标视频对应的视频文件。
上述视频文件的还原方法中,可以识别出HTTP-FLV协议的视频流,并从视频流中提取目标视频的头部数据和视频数据,以生成能够播放的视频文件,解决了因无法解析并播放HTTP-FLV协议视频流的问题,从而能够对HTTP-FLV协议的视频流进行监测。
在其中一个实施例中,所述提取所述视频流的协议特征信息,并根据所述协议特征信息确定所述视频流的协议类型,包括:
从所述视频流的数据包中提取应用层数据;
若所述应用层数据表示所述视频流的传输协议为HTTP协议,则从所述数据包中提取目标字段,并确定所述目标字段的数据中是否包含预设字符串;
若所述目标字段的数据中包含预设字符串,则确定所述视频流的协议类型为HTTP-FLV协议。
本实施例中,通过协议识别,可以从获取到的视频流中识别出HTTP-FLV协议的视频流,以便从HTTP-FLV协议的视频流中提取视频数据。
在其中一个实施例中,所述在所述视频流的协议类型为HTTP-FLV协议的情况下,根据预设的HTTP-FLV数据提取策略,从所述视频流的数据包中提取所述目标视频的头部数据和视频数据,包括:
在所述视频流的协议类型为HTTP-FLV协议的情况下,从所述视频流的HTTP响应数据包中提取所述目标视频的头部数据,所述头部数据包括数据长度;
按照所述数据长度,从所述视频流的下行数据包中提取视频数据。
本实施例中,可以从HTTP-FLV协议的视频流中提取出FLV-Header、元数据和视频数据等,从而生成能够播放的视频文件。
在其中一个实施例中,所述根据所述头部数据和所述视频数据生成所述目标视频对应的视频文件,包括:
每提取出一个数据包的视频数据后,将提取出的视频数据存储到载荷链表中;
当满足预设的链表释放条件时,生成包含所述头部数据和所述载荷链表中的视频数据的视频文件,并获取当前的文件索引,通过所述文件索引标识所述视频文件;
删除所述载荷链表中的视频数据,并生成新的文件索引,直到将所述目标视频的全部视频数据存储至视频文件。
本实施例中,可以将目标视频的视频数据分批次的写入到多个FLV文件中,并且每个FLV文件可独立播放,从而在视频流的传输过程中,及时得到目标视频的FLV文件,以便技术人员进行查看,无需等待整个目标视频的视频流传输完成即可播放目标视频,提高了内容还原的及时性。
在其中一个实施例中,所述当满足预设的链表释放条件时,生成包含所述头部数据和所述载荷链表中的视频数据的视频文件,包括:
当所述载荷链表的长度达到预设阈值时,生成包含所述头部数据和所述载荷链表中的视频数据的视频文件;或者,
当检测到所述视频流满足预设停止传输条件时,生成包含所述头部数据和所述载荷链表中的视频数据的视频文件。
本实施例中,可以将目标视频的视频数据分批次的写入到多个FLV文件中,并且每个FLV文件可独立播放的,这样,可以在视频流的传输过程中,及时得到目标视频的FLV文件,以便技术人员进行查看,无需等待整个目标视频的视频流传输完成即可播放目标视频,提高了内容还原的及时性。以及,可以在视频流停止传输时,及时生成FLV文件,提高了内容还原的及时性。
在其中一个实施例中,所述方法还包括:
在所述视频流的协议类型为HTTP-FLV协议的情况下,从所述视频流的上行数据包中提取所述目标视频的名称信息,所述名称信息用于标识所述目标视频对应的视频文件。
本实施例中,可以向技术人员提供目标视频的名称信息,以使技术人员获知目标视频的具体名称。
在其中一个实施例中,所述方法还包括:
接收网络设备发送的所述目标视频的镜像视频流;
根据所述镜像视频流中的网络地址信息,确定所述镜像视频流的标识信息,并将所述标识信息作为索引信息添加至传输控制协议流表中;
对所述镜像视频流的数据包进行保序处理,并基于所述索引信息,将保序处理后的数据包存储在所述传输控制协议流表中;
所述获取目标视频对应的视频流,包括:
从所述传输控制协议流表中获取所述目标视频对应的保序处理后的数据包,得到所述目标视频的视频流。
本实施例中,TCP流表中的数据包是基于时间顺序排列的,因此,在TCP流表中顺序读取数据包,并进行视频数据提取,即可得到基于时间顺序的视频数据,进而生成能够按照正确顺序播放的视频文件。
一种视频文件的还原装置,所述装置包括:
获取模块,用于获取目标视频对应的视频流;
确定模块,用于提取所述视频流的协议特征信息,并根据所述协议特征信息确定所述视频流的协议类型;
第一提取模块,用于在所述视频流的协议类型为HTTP-FLV协议的情况下,根据预设的HTTP-FLV数据提取策略,从所述视频流的数据包中提取所述目标视频的头部数据和视频数据;
生成模块,用于根据所述头部数据和所述视频数据生成所述目标视频对应的视频文件。
在其中一个实施例中,所述确定模块,具体用于:
从所述视频流的数据包中提取应用层数据;
若所述应用层数据表示所述视频流的传输协议为HTTP协议,则从所述数据包中提取目标字段,并确定所述目标字段的数据中是否包含预设字符串;
若所述目标字段的数据中包含预设字符串,则确定所述视频流的协议类型为HTTP-FLV协议。
在其中一个实施例中,所述第一提取模块,具体用于:
在所述视频流的协议类型为HTTP-FLV协议的情况下,从所述视频流的HTTP响应数据包中提取所述目标视频的头部数据,所述头部数据包括数据长度;
按照所述数据长度,从所述视频流的下行数据包中提取视频数据。
在其中一个实施例中,所述生成模块,具体用于:
每提取出一个数据包的视频数据后,将提取出的视频数据存储到载荷链表中;
当满足预设的链表释放条件时,生成包含所述头部数据和所述载荷链表中的视频数据的视频文件,并获取当前的文件索引,通过所述文件索引标识所述视频文件;
删除所述载荷链表中的视频数据,并生成新的文件索引,直到将所述目标视频的全部视频数据存储至视频文件。
在其中一个实施例中,所述生成模块,具体用于:
当所述载荷链表的长度达到预设阈值时,生成包含所述头部数据和所述载荷链表中的视频数据的视频文件;或者,
当检测到所述视频流满足预设停止传输条件时,生成包含所述头部数据和所述载荷链表中的视频数据的视频文件。
在其中一个实施例中,所述装置还包括:
第二提取模块,用于在所述视频流的协议类型为HTTP-FLV协议的情况下,从所述视频流的上行数据包中提取所述目标视频的名称信息,所述名称信息用于标识所述目标视频对应的视频文件。
在其中一个实施例中,所述装置还包括:
接收模块,用于接收网络设备发送的所述目标视频的镜像视频流;
添加模块,用于根据所述镜像视频流中的网络地址信息,确定所述镜像视频流的标识信息,并将所述标识信息作为索引信息添加至传输控制协议流表中;
存储模块,用于对所述镜像视频流的数据包进行保序处理,并基于所述索引信息,将保序处理后的数据包存储在所述传输控制协议流表中;
所述获取模块,具体用于:
从所述传输控制协议流表中获取所述目标视频对应的保序处理后的数据包,得到所述目标视频的视频流。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取目标视频对应的视频流;
提取所述视频流的协议特征信息,并根据所述协议特征信息确定所述视频流的协议类型;
在所述视频流的协议类型为HTTP-FLV协议的情况下,根据预设的HTTP-FLV数据提取策略,从所述视频流的数据包中提取所述目标视频的头部数据和视频数据;
根据所述头部数据和所述视频数据生成所述目标视频对应的视频文件。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取目标视频对应的视频流;
提取所述视频流的协议特征信息,并根据所述协议特征信息确定所述视频流的协议类型;
在所述视频流的协议类型为HTTP-FLV协议的情况下,根据预设的HTTP-FLV数据提取策略,从所述视频流的数据包中提取所述目标视频的头部数据和视频数据;
根据所述头部数据和所述视频数据生成所述目标视频对应的视频文件。
上述视频文件的还原方法、装置、计算机设备和存储介质,可以获取目标视频对应的视频流,提取视频流的协议特征信息,并根据协议特征信息确定视频流的协议类型,在视频流的协议类型为HTTP-FLV协议的情况下,根据预设的HTTP-FLV数据提取策略,从视频流的数据包中提取目标视频的头部数据和视频数据,然后根据头部数据和视频数据生成目标视频对应的视频文件。本方案中,服务器可以识别出HTTP-FLV协议的视频流,并从视频流中提取目标视频的头部数据和视频数据,以生成能够播放的视频文件,解决了因无法解析并播放HTTP-FLV协议视频流的问题,从而能够对HTTP-FLV协议的视频流进行监测。
附图说明
图1为一个实施例中视频文件的还原方法的应用环境图;
图2为一个实施例中视频文件的还原方法的流程示意图;
图3为一个实施例中确定协议类型的处理流程示意图;
图4为一个实施例中提取视频数据的处理流程示意图;
图5为一个实施例中生成视频文件的处理流程示意图;
图6为一个实施例中建立传输控制协议流表的处理流程示意图;
图7为另一个实施例中视频文件的还原方法的流程示意图;
图8为一个实施例中视频文件的还原装置的结构框图;
图9为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的视频文件的还原方法,可以应用于如图1所示的应用环境中。其中,视频请求端102可以通过网络与视频发送端104进行通信,具体的,视频请求端102可以通过网络与视频发送端104建立HTTP长链接,然后通过HTTP长链接向视频发送端104发送视频请求,视频发送端104响应于该视频请求,将视频数据以视频流的形式发送给视频请求端102,以使视频请求端102播放该视频。本申请实施例中,视频数据的格式为FLV格式,即视频发送端104通过HTTP-FLV协议将视频流发送给视频请求端102。在实际中,网络中通常设置有网络设备(如网关),网络设备可以用于传输视频请求端102与视频发送端104之间的数据。在旁路并接数据的通信场景下,上述应用环境中还包括服务器106,网络设备还可以用于将上述视频流镜像到服务器106中,以便服务器106对视频流进行解析和播放,从而使技术人员能够对视频内容进行监测。
可选的,视频请求端102和视频发送端104可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。服务器106可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种视频文件的还原方法,该方法以应用于图1中的服务器为例进行说明,包括以下步骤:
步骤201,获取目标视频对应的视频流。
在实施中,视频发送端发送的视频流会通过网络设备传输给视频请求端。网络设备接收到视频流后,将该视频流镜像到服务器中,服务器则会接收到网络设备发送的视频流。该视频流可以是网络设备传输的任一视频(可称为目标视频)的视频流。例如,当用户A通过客户端A进行视频直播时,会通过网络设备将直播视频发送给观众B,网络设备接收到视频流后,可以将该视频流转发给观众B的终端,并将该视频流镜像到服务器中。
步骤202,提取视频流的协议特征信息,并根据协议特征信息确定视频流的协议类型。
在实施中,网络中的数据包通常会按照传输协议所规定的封装规则进行封装。基于此,服务器获取到视频流后,可以从视频流的数据包中提取视频流的协议特征信息,进而根据该协议特征信息确定视频流的协议类型。在一种可选的实现方式中,当需要播放视频时,视频请求端首先向视频发送端发送HTTP请求数据包(即上行数据包),以请求目标视频的视频流。服务器获取到该视频流的数据包后,判断该数据包是否为上行数据包。如果该数据包为上行数据包,则从该上行数据包中提取协议特征信息,然后判断该协议特征信息是否满足HTTP-FLV协议的特征,如果满足,则确定该视频流的协议类型为HTTP-FLV协议;如果不满足,则确定该视频流的协议类型为非HTTP-FLV协议。
另外,若识别出上行数据包的协议类型为HTTP-FLV协议,服务器还可以将该视频流为标记为HTTP-FLV协议的数据流。由于上行数据包通常是视频流中的第一个数据包,后续接收到该数据流的其他数据包后,可直接根据标记确定数据包为HTTP-FLV协议的数据包,无需识别这些数据包的协议类型,从而提高了处理效率。
步骤203,在视频流的协议类型为HTTP-FLV协议的情况下,根据预设的HTTP-FLV数据提取策略,从视频流的数据包中提取目标视频的头部数据和视频数据。
在实施中,在确定视频流的协议类型为HTTP-FLV协议的情况下,服务器在获取到该视频流的下行数据包后,可以根据预设的HTTP-FLV数据提取策略,从下行数据包中提取目标视频的头部数据和视频数据。其中,头部数据是用于解码视频的数据,可以包括FLV-Header(FLV头文件)和元数据(即META DATA)。FLV-Header包含特征码、版本信息、标识位(Flags)、头文件大小(HeaderSize),总13字节;META DATA中包含有用于播放音视频的关键信息,比如播放时长,码率,视频高度,宽度等信息。
步骤204,根据头部数据和视频数据生成目标视频对应的视频文件。
在实施中,服务器可以创建FLV文件,将提取出的头部数据和视频数据写入该FLV文件中,得到目标视频对应的视频文件。
基于上述方案,服务器可以识别出HTTP-FLV协议的视频流,并从视频流中提取目标视频的头部数据和视频数据,以生成能够播放的视频文件,解决了因无法解析并播放HTTP-FLV协议视频流的问题,从而能够对HTTP-FLV协议的视频流进行监测。
可选的,如图3所示,提取视频流的协议特征信息,并根据协议特征信息确定视频流的协议类型的具体处理过程,包括以下步骤:
步骤301,从视频流的数据包中提取应用层数据。
在实施中,服务器可以通过深度包检测等算法,从数据包中提取应用层数据,并通过预设的应用层协议识别算法和提取的应用层数据,确定数据包的应用层协议是否为HTTP协议。如果是,则执行步骤302,如果不是,则结束处理。在一个示例中,可以识别应用层数据是否包含HTTP协议的关键字,如果包含,则确定应用层协议为HTTP协议,如果不包含,则确定应用层协议不是HTTP协议。
步骤302,若应用层数据表示视频流的传输协议为HTTP协议,则从数据包中提取目标字段,并确定目标字段的数据中是否包含预设字符串。
在实施中,若应用层数据表示视频流的传输协议为HTTP协议,则服务器可以进一步从数据包中提取目标字段,并将目标字段的数据与预设字符串进行字符匹配,并根据判断结果确定视频流的协议类型是否为HTTP-FLV协议。
例如,服务器可以提取出请求方法(METHOD)、统一资源定位器(Uniform ResourceLocator,URL)等字段,并判断METHOD是否为GET方式、以及URL字段是否包含“.flv”字符串。
步骤303,若目标字段的数据中包含预设字符串,则确定视频流的协议类型为HTTP-FLV协议。
在实施中,如果服务器在目标字段的数据中匹配到预设字符串,则可以判定视频流的协议类型为HTTP-FLV协议。如果服务器在目标字段的数据中未匹配到预设字符串,则可以判定视频流的协议类型非HTTP-FLV协议。例如,如果METHOD为GET方式、且URL字段包含“.flv”字符串,则确定视频流的协议类型是HTTP-FLV协议;否则,视频流的协议类型不是HTTP-FLV协议。
基于上述处理,服务器通过协议识别,可以从获取到的视频流中识别出HTTP-FLV协议的视频流,以便从HTTP-FLV协议的视频流中提取视频数据。
可选的,可以根据数据长度提取目标视频的视频数据,相应的,如图4所示,步骤203的处理过程具体包括:
步骤401,在视频流的协议类型为HTTP-FLV协议的情况下,从视频流的HTTP响应数据包中提取目标视频的头部数据。
其中,头部数据至少包括数据长度。
在实施中,视频发送端响应于HTTP请求数据包,会向视频请求端发送HTTP响应数据包,该HTTP响应数据包通常是下行数据包中的第一个数据包,用于携带目标视频的头部数据。在视频流的协议类型为HTTP-FLV协议的情况下,服务器接收到该视频流的第一个下行数据包后,可以从该数据包中提取出头部数据,头部数据是用于解码视频的数据,可以包括有FLV-Header(FLV头文件)和元数据(即META DATA)。FLV-Header包含特征码、版本信息、标识位(Flags)、头文件大小(HeaderSize)和数据长度,总13字节,其中,数据长度用于描述数据包中FLV Tag(标签)字段的长度。METADATA中包含了用来播放音视频的关键信息,比如播放时长,码率,视频高度,宽度等信息。
步骤402,按照数据长度,从视频流的下行数据包中提取视频数据。
在实施中,下行数据包可以通过FLV Tag字段来携带视频数据。服务器可以按照FLV-Header中的数据长度,从于HTTP响应数据包之后的下行数据包中,提取FLV Tag字段的内容,得到视频数据。
基于上述处理,服务器可以从HTTP-FLV协议的视频流中提取出FLV-Header、元数据和视频数据等,从而生成能够播放的视频文件。
可选的,可以将视频数据分批次写入FLV文件,从而生成目标视频的多个视频文件,如图5所示,步骤204的处理过程包括:
步骤501,每提取出一个数据包的视频数据后,将提取出的视频数据存储到载荷链表中。
在实施中,服务器可以通过载荷链表存储视频数据,服务器每提取出一个数据包的视频数据后,可以将该视频数据存储到载荷链表中。这样,服务器可以按照数据包的获取顺序,将视频数据依次存储到载荷链表中。可选的,当服务器在空的载荷链表中存储第一个视频数据时,还可以生成一个文件索引(Index),该文件索引可以为数字、字母等,本申请实施例不做限定。
步骤502,当满足预设的链表释放条件时,生成包含头部数据和载荷链表中的视频数据的视频文件,并获取当前的文件索引,通过文件索引标识视频文件。
在实施中,服务器可以判断当前的载荷链表是否满足预设的链表释放条件,如果满足,则可以创建一个FLV文件,将头部数据和载荷链表中的视频数据写入该FLV文件中,从而合成为一个视频文件。
另外,服务器还可以获取当前的文件索引,并通过该文件索引标识视频文件。例如,可以将文件索引作为视频文件的名称;或者,也可以获取目标视频的名称信息,将名称信息和文件索引进行拼接,作为视频文件的名称。
步骤503,删除载荷链表中的视频数据,并生成新的文件索引,直到将目标视频的全部视频数据存储至视频文件。
在实施中,服务器生成视频文件后,可以删除载荷链表中的视频数据(即清空载荷链表),并重新生成一个新的文件索引。文件索引的生成方式可以是多种多样的,例如,文件索引为数值,可以将当前数值加1,作为新的文件索引;或者,文件索引为字母,可以按照字母表顺序,将当前字母的下一个字母作为新的文件索引。本申请实施例不做限定。
当服务器获取到下一个数据包中的视频数据后,可以将该视频数据继续写入到载荷链表中,以此类推,直到将目标视频的全部视频数据写入FLV文件。
基于上述处理,每当满足预设的链表释放条件,服务器就生成一个FLV文件,这样,可以将目标视频的视频数据分批次的写入到多个FLV文件中,并且每个FLV文件可独立播放,从而在视频流的传输过程中,及时得到目标视频的FLV文件,以便技术人员进行查看,无需等待整个目标视频的视频流传输完成即可播放目标视频,提高了内容还原的及时性。
可选的,链表释放条件可以是多种多样的,本申请实施例提供了两种可行的条件,具体如下。
条件一、当载荷链表的长度达到预设阈值时,生成包含头部数据和载荷链表中的视频数据的视频文件。
在实施中,服务器每将一个数据包的视频数据写入载荷链表后,可以更新载荷链表的长度,并判断更新后的载荷链表的长度是否达到预设阈值。如果达到,则创建一个FLV文件,将头部数据、以及载荷链表中当前存储的视频数据写入该FLV文件中,从而得到一个视频文件。如果未达到,则继续读取下一个数据包。其中,预设阈值可以由技术人员根据实际需要进行设定,本申请实施例不做限定。
基于上述方案,通过设置载荷链表的长度阈值,可以将目标视频的视频数据分批次的写入到多个FLV文件中,并且每个FLV文件可独立播放的,这样,可以在视频流的传输过程中,及时得到目标视频的FLV文件,以便技术人员进行查看,无需等待整个目标视频的视频流传输完成即可播放目标视频,提高了内容还原的及时性。
条件二、当检测到视频流满足预设停止传输条件时,生成包含头部数据和载荷链表中的视频数据的视频文件。
在实施中,服务器也可以检测视频流是否满足预设停止传输条件,例如,若检测到该视频流对应的传输控制协议(Transmission Control Protocol,TCP)流表释放,或者接受到表示视频流停止传输的数据包,则可以确定视频流满足预设停止传输条件。当服务器检测到视频流满足预设停止传输条件时,服务器可以创建一个FLV文件,将头部数据和载荷链表中当前存储的视频数据写入该FLV文件中,从而得到一个视频文件。这样,可以在视频流停止传输时,及时生成FLV文件,提高了内容还原的及时性。
可以理解的是,服务器选择上述两个条件中的至少一个来进行实施本方案。
可选的,服务器还可以提取视频的名称信息,具体过程为:在视频流的协议类型为HTTP-FLV协议的情况下,从视频流的上行数据包中提取目标视频的名称信息。
其中,名称信息用于标识目标视频对应的视频文件。
在实施中,在视频流的协议类型为HTTP-FLV协议的情况下,服务器获取到上行数据包后,可以通过字符匹配,在上行数据包中定位预设字符串,进而根据定位到的字符位置提取目标视频的名称信息。在一个示例中,服务器可以先定位到URL字段的“.flv”字符串位置,从此位置向前查找“/”符号的位置,然后,提取将两个位置之间的内容,即得到目标视频的名称信息,可记为PlaySourceName。
服务器提取出名称信息后,可以将名称信息和上述文件索引进行拼接,作为视频文件的名称。例如,文件索引为1,名称信息为PlaySourceName,则视频文件的名称为PlaySourceName1.flv。
基于上述处理,可以向技术人员提供目标视频的名称信息,以使技术人员获知目标视频的具体名称。
可选的,服务器还可以对视频流进行保序处理,进而获取保序后的视频流,如图6所示,具体包括以下步骤:
步骤601,接收网络设备发送的目标视频的镜像视频流。
在实施中,网络设备可以将网络中某视频(即目标视频)的视频流镜像到服务器中,服务器则会接收到网络设备发送的目标视频的镜像视频流。
步骤602,根据镜像视频流中的网络地址信息,确定镜像视频流的标识信息,并将标识信息作为索引信息添加至TCP流表中。
在实施中,服务器中可以建立TCP流表,TCP流表是用于存储各视频流的数据包的流表,包括各视频流对应的索引信息、以及各视频流的数据包。服务器获取到目标视频的镜像视频流后,可以从镜像视频流的上行数据包中提取网络地址信息,网络地址信息可以为四元组信息,包括源IP地址、目的IP地址、源端口、目的端口。或者,网络地址信息也可以为五元组信息,本申请实施例不做限定。服务器可以计算网络地址信息的哈希值,将该哈希值作为索引信息添加至TCP流表中。
步骤603,对镜像视频流的数据包进行保序处理,并基于索引信息,将保序处理后的数据包存储在TCP流表中。
在实施中,服务器可以基于TCP的保序逻辑,对镜像视频流的数据包进行保序处理,得到按照时间顺序排列的数据包。然后,服务器基于索引信息,将保序处理后的数据包存储在TCP流表中。
步骤604,从TCP流表中获取目标视频对应的保序处理后的数据包,得到目标视频的视频流。
在实施中,由于TCP流表中的数据包是基于时间顺序排列的,因此,服务器在TCP流表中顺序读取数据包,并进行视频数据提取,即可得到基于时间顺序的视频数据,进而生成能够按照正确顺序播放的视频文件。
可选的,当目标视频的视频流播放结束后,或者服务器确定目标视频流不是HTTP-FLV协议,则释放目标视频的视频流对应的流表。
本实施例还提供了一种视频文件的还原方法的示例,如图7所示,具体包括以下步骤。
步骤701,接收网络设备发送的视频流;
步骤702,建立该视频流的TCP流表,并进行保序处理。
步骤703,从TCP流表中依次读取目标视频对应的保序处理后的数据包。
步骤704,判断读取到的数据包是否为上行数据包。
如果是,执行步骤705。如果否,则执行步骤707。
步骤705,根据上行数据包中提取应用层数据和目标字段的数据,判断是否为HTTP-FLV协议。
如果是,执行706,如果否,则执行步骤701。
步骤706,从视频流的上行数据包中提取目标视频的名称信息,并将该视频流增加HTTP-FLV标记。
名称信息用于标识目标视频对应的视频文件。
步骤707,判断下行数据包的标记是否HTTP-FLV标记。
如果是,执行708,如果否,则结束处理。
步骤708,判断是否存储有目标视频的头部数据。
如果是,执行709,如果否,则执行步骤710。
步骤709,从视频流的下行数据包中提取目标视频的头部数据,写入TCP流表。
步骤710,从视频流的下行数据包中提取视频数据,并写入载荷链表中。
步骤711,判断该载荷链表是否满足预设的链表释放条件。
如果是,执行步骤712,如果否,则继续读取下行数据包,并执行步骤710。
步骤712,生成包含头部数据和载荷链表中的视频数据的视频文件,并获取当前的文件索引,通过文件索引标识视频文件。
步骤713,删除载荷链表中的视频数据,并生成新的文件索引,直到将目标视频的全部视频数据存储至视频文件。
应该理解的是,虽然图2-7的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-7中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图8所示,提供了一种视频文件的还原装置,包括:获取模块810、确定模块820、第一提取模块830和生成模块840,其中:
获取模块810,用于获取目标视频对应的视频流;
确定模块820,用于提取视频流的协议特征信息,并根据协议特征信息确定视频流的协议类型;
第一提取模块830,用于在视频流的协议类型为HTTP-FLV协议的情况下,根据预设的HTTP-FLV数据提取策略,从视频流的数据包中提取目标视频的头部数据和视频数据;
生成模块840,用于根据头部数据和视频数据生成目标视频对应的视频文件。
在其中一个实施例中,确定模块820,具体用于:
从视频流的数据包中提取应用层数据;
若应用层数据表示视频流的传输协议为HTTP协议,则从数据包中提取目标字段,并确定目标字段的数据中是否包含预设字符串;
若目标字段的数据中包含预设字符串,则确定视频流的协议类型为HTTP-FLV协议。
在其中一个实施例中,第一提取模块830,具体用于:
在视频流的协议类型为HTTP-FLV协议的情况下,从视频流的HTTP响应数据包中提取目标视频的头部数据,头部数据包括数据长度;
按照数据长度,从视频流的下行数据包中提取视频数据。
在其中一个实施例中,生成模块840,具体用于:
每提取出一个数据包的视频数据后,将提取出的视频数据存储到载荷链表中;
当满足预设的链表释放条件时,生成包含头部数据和载荷链表中的视频数据的视频文件,并获取当前的文件索引,通过文件索引标识视频文件;
删除载荷链表中的视频数据,并生成新的文件索引,直到将目标视频的全部视频数据存储至视频文件。
在其中一个实施例中,生成模块840,具体用于:
当载荷链表的长度达到预设阈值时,生成包含头部数据和载荷链表中的视频数据的视频文件;或者,
当检测到视频流满足预设停止传输条件时,生成包含头部数据和载荷链表中的视频数据的视频文件。
在其中一个实施例中,该装置还包括:
第二提取模块,用于在视频流的协议类型为HTTP-FLV协议的情况下,从视频流的上行数据包中提取目标视频的名称信息,名称信息用于标识目标视频对应的视频文件。
在其中一个实施例中,该装置还包括:
接收模块,用于接收网络设备发送的目标视频的镜像视频流;
添加模块,用于根据镜像视频流中的网络地址信息,确定镜像视频流的标识信息,并将标识信息作为索引信息添加至传输控制协议TCP流表中;
存储模块,用于对镜像视频流的数据包进行保序处理,并基于索引信息,将保序处理后的数据包存储在TCP流表中;
获取模块810,具体用于:
从TCP流表中获取目标视频对应的保序处理后的数据包,得到目标视频的视频流。
关于视频文件的还原装置的具体限定可以参见上文中对于视频文件的还原方法的限定,在此不再赘述。上述视频文件的还原装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图9所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种视频文件的还原方法。
本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述方法步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述方法步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种视频文件的还原方法,其特征在于,所述方法包括:
获取目标视频对应的视频流;
提取所述视频流的协议特征信息,并根据所述协议特征信息确定所述视频流的协议类型;
在所述视频流的协议类型为HTTP-FLV协议的情况下,根据预设的HTTP-FLV数据提取策略,从所述视频流的数据包中提取所述目标视频的头部数据和视频数据;
根据所述头部数据和所述视频数据生成所述目标视频对应的视频文件。
2.根据权利要求1所述的方法,其特征在于,所述提取所述视频流的协议特征信息,并根据所述协议特征信息确定所述视频流的协议类型,包括:
从所述视频流的数据包中提取应用层数据;
若所述应用层数据表示所述视频流的传输协议为HTTP协议,则从所述数据包中提取目标字段,并确定所述目标字段的数据中是否包含预设字符串;
若所述目标字段的数据中包含预设字符串,则确定所述视频流的协议类型为HTTP-FLV协议。
3.根据权利要求1所述的方法,其特征在于,所述在所述视频流的协议类型为HTTP-FLV协议的情况下,根据预设的HTTP-FLV数据提取策略,从所述视频流的数据包中提取所述目标视频的头部数据和视频数据,包括:
在所述视频流的协议类型为HTTP-FLV协议的情况下,从所述视频流的HTTP响应数据包中提取所述目标视频的头部数据,所述头部数据包括数据长度;
按照所述数据长度,从所述视频流的下行数据包中提取视频数据。
4.根据权利要求1所述的方法,其特征在于,所述根据所述头部数据和所述视频数据生成所述目标视频对应的视频文件,包括:
每提取出一个数据包的视频数据后,将提取出的视频数据存储到载荷链表中;
当满足预设的链表释放条件时,生成包含所述头部数据和所述载荷链表中的视频数据的视频文件,并获取当前的文件索引,通过所述文件索引标识所述视频文件;
删除所述载荷链表中的视频数据,并生成新的文件索引,直到将所述目标视频的全部视频数据存储至视频文件。
5.根据权利要求4所述的方法,其特征在于,所述当满足预设的链表释放条件时,生成包含所述头部数据和所述载荷链表中的视频数据的视频文件,包括:
当所述载荷链表的长度达到预设阈值时,生成包含所述头部数据和所述载荷链表中的视频数据的视频文件;或者,
当检测到所述视频流满足预设停止传输条件时,生成包含所述头部数据和所述载荷链表中的视频数据的视频文件。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述视频流的协议类型为HTTP-FLV协议的情况下,从所述视频流的上行数据包中提取所述目标视频的名称信息,所述名称信息用于标识所述目标视频对应的视频文件。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收网络设备发送的所述目标视频的镜像视频流;
根据所述镜像视频流中的网络地址信息,确定所述镜像视频流的标识信息,并将所述标识信息作为索引信息添加至传输控制协议流表中;
对所述镜像视频流的数据包进行保序处理,并基于所述索引信息,将保序处理后的数据包存储在所述传输控制协议流表中;
所述获取目标视频对应的视频流,包括:
从所述传输控制协议流表中获取所述目标视频对应的保序处理后的数据包,得到所述目标视频的视频流。
8.一种视频文件的还原装置,其特征在于,所述装置包括:
获取模块,用于获取目标视频对应的视频流;
确定模块,用于提取所述视频流的协议特征信息,并根据所述协议特征信息确定所述视频流的协议类型;
第一提取模块,用于在所述视频流的协议类型为HTTP-FLV协议的情况下,根据预设的HTTP-FLV数据提取策略,从所述视频流的数据包中提取所述目标视频的头部数据和视频数据;
生成模块,用于根据所述头部数据和所述视频数据生成所述目标视频对应的视频文件。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
CN202110616053.6A 2021-06-02 2021-06-02 视频文件的还原方法、装置、计算机设备和存储介质 Pending CN113438505A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110616053.6A CN113438505A (zh) 2021-06-02 2021-06-02 视频文件的还原方法、装置、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110616053.6A CN113438505A (zh) 2021-06-02 2021-06-02 视频文件的还原方法、装置、计算机设备和存储介质

Publications (1)

Publication Number Publication Date
CN113438505A true CN113438505A (zh) 2021-09-24

Family

ID=77803600

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110616053.6A Pending CN113438505A (zh) 2021-06-02 2021-06-02 视频文件的还原方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN113438505A (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2934006A1 (en) * 2014-04-17 2015-10-21 Tektronix, Inc. Streaming video monitoring using cdn data feeds
CN105228001A (zh) * 2015-09-26 2016-01-06 北京暴风科技股份有限公司 一种flv格式视频在线播放的方法及系统
CN109756758A (zh) * 2017-11-01 2019-05-14 腾讯科技(深圳)有限公司 直播控制方法及装置
CN109862435A (zh) * 2018-11-16 2019-06-07 京信通信系统(中国)有限公司 直播视频的监控方法、装置、计算机存储介质及设备
CN112468416A (zh) * 2020-10-23 2021-03-09 曙光网络科技有限公司 网络流量镜像方法、装置、计算机设备和存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2934006A1 (en) * 2014-04-17 2015-10-21 Tektronix, Inc. Streaming video monitoring using cdn data feeds
CN105228001A (zh) * 2015-09-26 2016-01-06 北京暴风科技股份有限公司 一种flv格式视频在线播放的方法及系统
CN109756758A (zh) * 2017-11-01 2019-05-14 腾讯科技(深圳)有限公司 直播控制方法及装置
CN109862435A (zh) * 2018-11-16 2019-06-07 京信通信系统(中国)有限公司 直播视频的监控方法、装置、计算机存储介质及设备
CN112468416A (zh) * 2020-10-23 2021-03-09 曙光网络科技有限公司 网络流量镜像方法、装置、计算机设备和存储介质

Similar Documents

Publication Publication Date Title
US20060112422A1 (en) Data transfer using hyper-text transfer protocol (HTTP) query strings
CN102045305B (zh) 一种多媒体资源传播的监测追踪方法和系统
CN110888838B (zh) 基于对象存储的请求处理方法、装置、设备及存储介质
CN112559463B (zh) 压缩文件处理的方法及装置
CN109214855B (zh) 素材接收方法、装置及系统
JP7377361B2 (ja) 固有属性に基づくコンテンツ認証
CN107040606A (zh) 用于处理http请求的方法与设备
CN113438503B (zh) 视频文件还原方法、装置、计算机设备和存储介质
CN106506641A (zh) 一种客户端设备的标识值提取方法及装置
CN104021178B (zh) 多媒体信息过滤方法和装置
CN108259416B (zh) 检测恶意网页的方法及相关设备
US20210099772A1 (en) System and method for verification of video integrity based on blockchain
US11017029B2 (en) Data transfer system, data transfer apparatus, data transfer method, and computer-readable recording medium
CN106506400B (zh) 一种数据流识别方法及出口设备
CN112687375A (zh) Dicom文件传输方法、系统、装置、服务器和存储介质
CN113438506B (zh) 视频文件的还原方法、装置、计算机设备和存储介质
CN113438505A (zh) 视频文件的还原方法、装置、计算机设备和存储介质
CN106598567A (zh) 一种终端设备页面元素的显示方法及显示装置
CN110519656B (zh) 自适应流媒体的播放方法、系统以及服务器
CN107800758B (zh) 风控数据处理方法、装置及系统
CN115865457A (zh) 一种网络攻击行为的识别方法、服务器及介质
CN111669431B (zh) 消息传输方法、装置、计算机设备和存储介质
CN114338126A (zh) 一种网络应用识别方法和装置
CN111935539A (zh) 一种视频检测的方法、系统、电子装置和存储介质
US9323857B2 (en) System and method for providing content-related information based on digital watermark and fingerprint

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20210924