CN113438506B - 视频文件的还原方法、装置、计算机设备和存储介质 - Google Patents
视频文件的还原方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN113438506B CN113438506B CN202110628876.0A CN202110628876A CN113438506B CN 113438506 B CN113438506 B CN 113438506B CN 202110628876 A CN202110628876 A CN 202110628876A CN 113438506 B CN113438506 B CN 113438506B
- Authority
- CN
- China
- Prior art keywords
- video
- data
- video stream
- length
- protocol
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 51
- 230000005540 biological transmission Effects 0.000 claims abstract description 134
- 238000012545 processing Methods 0.000 claims abstract description 51
- 238000000605 extraction Methods 0.000 claims abstract description 20
- 238000004590 computer program Methods 0.000 claims description 14
- 239000000284 extract Substances 0.000 description 23
- 230000008569 process Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 101100235787 Schizosaccharomyces pombe (strain 972 / ATCC 24843) pim1 gene Proteins 0.000 description 8
- 101150114015 ptr-2 gene Proteins 0.000 description 8
- 230000004044 response Effects 0.000 description 8
- 101150059273 PTR1 gene Proteins 0.000 description 6
- 238000005538 encapsulation Methods 0.000 description 2
- 101100215778 Neurospora crassa (strain ATCC 24698 / 74-OR23-1A / CBS 708.71 / DSM 1257 / FGSC 987) ptr-1 gene Proteins 0.000 description 1
- 101100445488 Neurospora crassa (strain ATCC 24698 / 74-OR23-1A / CBS 708.71 / DSM 1257 / FGSC 987) ptr-2 gene Proteins 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/23418—Processing 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/24—Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/60—Network 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/63—Control 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/643—Communication protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/83—Generation or processing of protective or descriptive data associated with content; Content structuring
- H04N21/845—Structuring of content, e.g. decomposing content into time segments
- H04N21/8455—Structuring 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)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请涉及一种视频文件的还原方法、装置、计算机设备和存储介质。所述方法包括:获取目标视频对应的视频流;提取所述视频流的传输特征信息,并根据所述传输特征信息确定所述视频流的协议类型和传输模式;在所述视频流的协议类型为HTTP‑FLV协议、且传输模式为块模式的情况下,对所述视频流的数据包进行数据块提取处理,得到所述目标视频的头部数据和视频数据;根据所述头部数据和所述视频数据生成所述目标视频对应的视频文件。采用本方法能够对基于HTTP‑FLV协议chunk模式的视频流进行监测。
Description
技术领域
本申请涉及互联网技术领域,特别是涉及一种视频文件的还原方法、装置、计算机设备和存储介质。
背景技术
在端到端的视频传输场景中,各直播平台通常采用HTTP-FLV(HypertextTransfer Protocol-FlashVideo,超文本传输协议-流媒体)协议以及chunk(块)模式来传输直播视频流。该传输方式是在HTTP-FLV协议的基础上,将待传输的数据流的数据封装成多个块(即数据块)进行传输。
在进行视频传输时,数据请求端与数据发送端之间会建立HTTP长链接,数据发送端将视频数据封装成数据块,并在视频流的数据包中携带数据请求端的地址信息,以使数据请求端根据自身的地址信息解析视频流,得到视频文件。但是,随着音视频数据量的逐渐增多,大量的视频内容被上传至网络上进行传播及分享,其中的部分视频中可能存在违规内容,为了维护网络环境的安全健康,需要对音视频内容进行监控和审阅,此时,需要在由端到端的数据通信基础上,增加旁路并接数据通信场景,即通过网络设备(如网关)将视频流镜像到服务器中,服务器对视频流进行解析和播放,以使技术人员能够对视频内容进行监测。
然而,服务器的地址信息与数据请求端的地址信息不同,无法解析出该视频流的视频文件,导致无法对基于HTTP-FLV协议的chunk模式的视频流进行监测。
发明内容
基于此,有必要针对上述技术问题,提供一种能够对基于HTTP-FLV协议chunk模式传输的视频流进行监测的视频文件的还原方法、装置、计算机设备和存储介质。
一种视频文件的还原方法,所述方法包括:
获取目标视频对应的视频流;
提取所述视频流的传输特征信息,并根据所述传输特征信息确定所述视频流的协议类型和传输模式;
在所述视频流的协议类型为HTTP-FLV协议、且传输模式为块模式的情况下,对所述视频流的数据包进行数据块提取处理,得到所述目标视频的头部数据和视频数据;
根据所述头部数据和所述视频数据生成所述目标视频对应的视频文件。
上述视频文件的还原方法中,可以识别出HTTP-FLV协议、且传输模式为块模式的视频流,并从视频流中提取目标视频的头部数据和视频数据,以生成能够播放的视频文件,解决了因无法解析并播放该种视频流的问题,从而能够对HTTP-FLV协议、且传输模式为块模式的视频流进行监测。
在其中一个实施例中,所述提取所述视频流的传输特征信息,并根据所述传输特征信息确定所述视频流的协议类型和传输模式,包括:
从所述视频流的上行数据包中提取应用层数据和第一预设字段;
若所述应用层数据表示所述视频流的传输协议为HTTP协议、且所述第一预设字段的数据中包含第一预设字符串,则从所述视频流的下行数据包中提取第二预设字段;
若所述第二预设字段包含第二预设字符串,则确定所述视频流的协议类型为HTTP-FLV协议、且传输模式为块模式。
本实施例中,通过协议识别,可以从获取到的各视频流中识别出HTTP-FLV协议、且传输模式为块模式的视频流,以便从该视频流中提取视频数据。
在其中一个实施例中,所述在所述视频流的协议类型为HTTP-FLV协议、且传输模式为块模式的情况下,对所述视频流的数据包进行数据块提取处理,得到所述目标视频的头部数据和视频数据,包括:
在所述视频流的协议类型为HTTP-FLV协议、且传输模式为块模式的情况下,从所述视频流的下行数据包中,提取数据块长度;
根据所述数据块长度和预设的数据偏移规则,对所述视频流的数据包进行数据块提取处理,得到所述目标视频的头部数据和视频数据。
本实施例中,可以从HTTP-FLV协议的视频流中提取包含头部数据和视频数据的多个数据块,从而生成能够播放的视频文件。
在其中一个实施例中,所述根据所述数据块长度和预设的数据偏移规则,对所述视频流的数据包进行数据块提取处理,包括:
确定所述下行数据包提取出所述数据块长度之后的剩余长度;
若所述剩余长度大于或等于所述数据块长度,则提取所述数据块长度的数据,并继续执行所述从所述视频流的下行数据包中,提取数据块长度的步骤;
若所述剩余长度小于所述数据块长度,则提取所述下行数据包的剩余数据,并从所述下行数据包的下一个数据包中提取目标长度的数据,得到完整数据块,所述目标长度根据所述数据块长度和所述剩余长度确定。
本实施例中,可以提取出数据块的完整内容,从而生成包含完整视频内容的视频文件。
在其中一个实施例中,所述根据所述头部数据和所述视频数据生成所述目标视频对应的视频文件,包括:
每提取出一个数据包的视频数据后,将提取出的视频数据存储到载荷链表中;
当满足预设的链表释放条件时,生成包含所述头部数据和所述载荷链表中的视频数据的视频文件,并获取当前的文件索引,通过所述文件索引标识所述视频文件;
删除所述载荷链表中的视频数据,并生成新的文件索引,直到将所述目标视频的全部视频数据存储至视频文件。
本实施例中,可以将目标视频的视频数据分批次的写入到多个FLV文件中,并且每个FLV文件可独立播放,从而在视频流的传输过程中,及时得到目标视频的FLV文件,以便技术人员进行查看,无需等待整个目标视频的视频流传输完成即可播放目标视频,提高了内容还原的及时性。
在其中一个实施例中,所述当满足预设的链表释放条件时,生成包含所述头部数据和所述载荷链表中的视频数据的视频文件,包括:
当所述载荷链表的长度达到预设阈值时,生成包含所述头部数据和所述载荷链表中的视频数据的视频文件;或者,
当检测到所述视频流满足预设停止传输条件时,生成包含所述头部数据和所述载荷链表中的视频数据的视频文件。
本实施例中,通过设置载荷链表的长度阈值,可以将目标视频的视频数据分批次的写入到多个FLV文件中,并且每个FLV文件可独立播放的,这样,可以在视频流的传输过程中,及时得到目标视频的FLV文件,以便技术人员进行查看,无需等待整个目标视频的视频流传输完成即可播放目标视频,提高了内容还原的及时性。以及,可以在视频流停止传输时,及时生成FLV文件,提高了内容还原的及时性。
在其中一个实施例中,所述提取所述视频流的特征信息之前,所述方法还包括:
接收网络设备发送的所述目标视频的镜像视频流;
根据所述镜像视频流中的网络地址信息,确定所述镜像视频流的标识信息,并将所述标识信息作为索引信息添加至传输控制协议流表中;
对所述镜像视频流的数据包进行保序处理,并基于所述索引信息,将保序处理后的数据包存储在所述传输控制协议流表中;
所述获取目标视频对应的视频流,包括:
从所述传输控制协议流表中获取所述目标视频对应的保序处理后的数据包,得到所述目标视频的视频流。
本实施例中,可以得到基于时间顺序的视频数据,从而生成能够按照正确顺序播放的视频文件。
一种视频文件的还原装置,所述装置包括:
获取模块,用于获取目标视频对应的视频流;
确定模块,用于提取所述视频流的传输特征信息,并根据所述传输特征信息确定所述视频流的协议类型和传输模式;
提取模块,用于在所述视频流的协议类型为HTTP-FLV协议、且传输模式为块模式的情况下,对所述视频流的数据包进行数据块提取处理,得到所述目标视频的头部数据和视频数据;
生成模块,用于根据所述头部数据和所述视频数据生成所述目标视频对应的视频文件。
在其中一个实施例中,所述确定模块,具体用于:
从所述视频流的上行数据包中提取应用层数据和第一预设字段;
若所述应用层数据表示所述视频流的传输协议为HTTP协议、且所述第一预设字段的数据中包含第一预设字符串,则从所述视频流的下行数据包中提取第二预设字段;
若所述第二预设字段包含第二预设字符串,则确定所述视频流的协议类型为HTTP-FLV协议、且传输模式为块模式。
在其中一个实施例中,所述提取模块,具体用于:
在所述视频流的协议类型为HTTP-FLV协议、且传输模式为块模式的情况下,从所述视频流的下行数据包中,提取数据块长度;
根据所述数据块长度和预设的数据偏移规则,对所述视频流的数据包进行数据块提取处理,得到所述目标视频的头部数据和视频数据。
在其中一个实施例中,所述提取模块,具体用于:
确定所述下行数据包提取出所述数据块长度之后的剩余长度;
若所述剩余长度大于或等于所述数据块长度,则提取所述数据块长度的数据,并继续执行所述从所述视频流的下行数据包中,提取数据块长度的步骤;
若所述剩余长度小于所述数据块长度,则提取所述下行数据包的剩余数据,并从所述下行数据包的下一个数据包中提取目标长度的数据,得到完整数据块,所述目标长度根据所述数据块长度和所述剩余长度确定。
在其中一个实施例中,所述生成模块,具体用于:
每提取出一个数据包的视频数据后,将提取出的视频数据存储到载荷链表中;
当满足预设的链表释放条件时,生成包含所述头部数据和所述载荷链表中的视频数据的视频文件,并获取当前的文件索引,通过所述文件索引标识所述视频文件;
删除所述载荷链表中的视频数据,并生成新的文件索引,直到将所述目标视频的全部视频数据存储至视频文件。
在其中一个实施例中,所述生成模块,具体用于:
当所述载荷链表的长度达到预设阈值时,生成包含所述头部数据和所述载荷链表中的视频数据的视频文件;或者,
当检测到所述视频流满足预设停止传输条件时,生成包含所述头部数据和所述载荷链表中的视频数据的视频文件。
在其中一个实施例中,所述装置还包括:
接收模块,用于接收网络设备发送的所述目标视频的镜像视频流;
添加模块,用于根据所述镜像视频流中的网络地址信息,确定所述镜像视频流的标识信息,并将所述标识信息作为索引信息添加至传输控制协议流表中;
存储模块,用于对所述镜像视频流的数据包进行保序处理,并基于所述索引信息,将保序处理后的数据包存储在所述传输控制协议流表中;
所述获取模块,具体用于:
从所述传输控制协议流表中获取所述目标视频对应的保序处理后的数据包,得到所述目标视频的视频流。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取目标视频对应的视频流;
提取所述视频流的传输特征信息,并根据所述传输特征信息确定所述视频流的协议类型和传输模式;
在所述视频流的协议类型为HTTP-FLV协议、且传输模式为块模式的情况下,对所述视频流的数据包进行数据块提取处理,得到所述目标视频的头部数据和视频数据;
根据所述头部数据和所述视频数据生成所述目标视频对应的视频文件。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取目标视频对应的视频流;
提取所述视频流的传输特征信息,并根据所述传输特征信息确定所述视频流的协议类型和传输模式;
在所述视频流的协议类型为HTTP-FLV协议、且传输模式为块模式的情况下,对所述视频流的数据包进行数据块提取处理,得到所述目标视频的头部数据和视频数据;
根据所述头部数据和所述视频数据生成所述目标视频对应的视频文件。
上述视频文件的还原方法、装置、计算机设备和存储介质,可以获取目标视频对应的视频流,提取所述视频流的传输特征信息,并根据所述传输特征信息确定所述视频流的协议类型和传输模式,在所述视频流的协议类型为HTTP-FLV协议、且传输模式为块模式的情况下,对所述视频流的数据包进行数据块提取处理,得到所述目标视频的头部数据和视频数据,然后根据所述头部数据和所述视频数据生成所述目标视频对应的视频文件。本方案中,服务器可以识别出HTTP-FLV协议、且传输模式为块模式的视频流,并从视频流中提取目标视频的头部数据和视频数据,以生成能够播放的视频文件,解决了因无法解析并播放该种视频流的问题,从而能够对HTTP-FLV协议、且传输模式为块模式的视频流进行监测。
附图说明
图1为一个实施例中视频文件的还原方法的应用环境图;
图2为一个实施例中视频文件的还原方法的流程示意图;
图3为一个实施例中确定协议类型和传输模式的处理流程示意图;
图4为一个实施例中提取数据块的处理流程示意图;
图5为一个实施例中提取数据块的处理流程示意图;
图6为一个实施例中生成视频文件的处理流程示意图;
图7为一个实施例中建立传输控制协议流表的处理流程示意图;
图8为另一个实施例中视频文件的还原方法的流程示意图;
图9为一个实施例中视频文件的还原装置的结构框图;
图10为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的视频文件的还原方法,可以应用于如图1所示的应用环境中。其中,视频请求端102可以通过网络与视频发送端104进行通信,在一个示例中,视频请求端102可以通过网络与视频发送端104建立HTTP长链接,然后通过HTTP长链接向视频发送端104发送视频请求,视频发送端104响应于该视频请求,通过chunk模式将视频数据以视频流的形式发送给视频请求端102,以使视频请求端102播放该视频。本申请实施例中,视频数据的格式为FLV格式,即视频发送端104通过HTTP-FLV协议、chunk模式,将视频流发送给视频请求端102。在实际中,网络中通常设置有网络设备(如网关),网络设备可以用于传输视频请求端102与视频发送端104之间的数据。在旁路并接数据的通信场景下,上述应用环境中还包括服务器106,网络设备还可以用于将上述视频流镜像到服务器106中,以便服务器106对视频流进行还原,从而使技术人员能够对视频内容进行监测。
可选的,视频请求端102和视频发送端104可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。服务器106可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种视频文件的还原方法,该方法以应用于图1中的服务器为例进行说明,包括以下步骤:
步骤201,获取目标视频对应的视频流。
在实施中,视频发送端发送的视频流会通过网络设备传输给视频请求端。网络设备接收到视频流后,将该视频流镜像到服务器中,服务器则会接收到网络设备发送的视频流。该视频流可以是网络设备传输的任一视频(可称为目标视频)的视频流。例如,当用户A通过客户端A进行视频直播时,会通过网络设备将直播视频发送给观众B,网络设备接收到视频流后,可以将该视频流转发给观众B的终端,并将该视频流镜像到服务器中。
步骤202,提取视频流的传输特征信息,并根据传输特征信息确定视频流的协议类型和传输模式。
在实施中,网络中的数据包会按照预设的传输协议和传输模式进行封装。基于此,服务器获取到视频流后,可以从视频流的数据包中提取视频流的传输特征信息。其中,传输特征信息包括传输协议特征和传输模式特征。传输协议特征是用于反映视频流所采用的传输协议的特征,传输模式特征是用于反映视频数据所采用的传输模式的特征。这样,服务器可以根据传输协议特征确定视频流的协议类型,根据传输模式特征确定视频流对应的传输模式。
步骤203,在视频流的协议类型为HTTP-FLV协议、且传输模式为块模式的情况下,对视频流的数据包进行数据块提取处理,得到目标视频的头部数据和视频数据。
在实施中,在视频流的协议类型为HTTP-FLV协议、且传输模式为块模式的情况下,服务器可以根据chunk模式的编码规则,对视频流的每个下行数据包进行数据块提取处理,得到每个下行数据包中包含的数据块。一个下行数据包可以包含多个数据块,视频流的第一个数据块通常为目标视频的头部数据,后续数据块为目标视频的视频数据。这样,服务器对各个数据包进行数据块提取处理,可以得到目标视频的头部数据和视频数据。
其中,头部数据是用于解码视频的数据,可以包括FLV-Header(FLV头文件)和元数据(即META DATA)。FLV-Header包含特征码、版本信息、标识位(Flags)、头文件大小(HeaderSize)和数据长度,总13字节,其中,数据长度用于描述数据包中FLV Tag(标签)字段的长度。META DATA中包含了用来播放音视频的关键信息,比如播放时长,码率,视频高度,宽度等信息。
另外,若识别出视频流的协议类型为HTTP-FLV协议、且传输模式为块模式,服务器还可以通过预设标识对该视频流进行标记,该预设标识用于标识视频流的协议类型为HTTP-FLV协议、且传输模式为块模式。这样,后续接收到该数据流的其他数据包后,可直接根据标记确定数据包为HTTP-FLV协议、且传输模式为块模式的数据包,无需识别这些数据包的协议类型,从而提高了处理效率。
步骤204,根据头部数据和视频数据生成目标视频对应的视频文件。
在实施中,服务器可以创建FLV文件,将提取出的头部数据和视频数据写入该FLV文件中,得到目标视频对应的视频文件。
基于上述方案,服务器可以识别出HTTP-FLV协议、且传输模式为块模式的视频流,并从视频流中提取目标视频的头部数据和视频数据,以生成能够播放的视频文件,解决了因无法解析并播放该种视频流的问题,从而能够对HTTP-FLV协议、且传输模式为块模式的视频流进行监测。
可选的,如图3所示,确定视频流的协议类型和传输模式的具体处理过程,包括以下步骤:
步骤301,从视频流的上行数据包中提取应用层数据和第一预设字段。
在实施中,当需要播放视频时,视频请求端首先向视频发送端发送HTTP请求数据包(即上行数据包),以请求目标视频的视频流。服务器获取到该视频流的数据包后,判断该数据包是否为上行数据包。如果该数据包为上行数据包,则可以通过深度包检测等算法,从上行数据包中提取应用层数据,并通过预设的应用层协议识别算法和提取的应用层数据,确定上行数据包的应用层协议是否为HTTP协议。如果是,则服务器可以进一步从上行数据包中提取第一预设字段,并将第一预设字段的数据与第一预设字符串进行字符匹配,并根据判断结果确定视频流的协议类型是否为HTTP-FLV协议。如果服务器判断应用层协议不是HTTP协议,则结束处理。
例如,服务器可以提取应用层数据,判断应用层数据是否包含HTTP协议的关键字,如果包含,则提取出请求方法(METHOD)、统一资源***(Uniform Resource Locator,URL)等字段,并判断METHOD是否为GET方式、以及URL字段是否包含“.flv”字符串。
步骤302,若应用层数据表示视频流的传输协议为HTTP协议、且第一字段的数据中包含第一预设字符串,则从视频流的下行数据包中提取第二预设字段。
在实施中,若应用层数据表示视频流的传输协议为HTTP协议、且第一字段的数据中包含第一预设字符串,则可以判定视频流的协议类型为HTTP-FLV协议。例如,应用层数据包含HTTP协议的关键字(HTTP)、METHOD为GET方式、且URL字段包含“.flv”字符串,则确定视频流的协议类型是HTTP-FLV协议。服务器可以获取视频流的下行数据包,进而解析该下行数据包的包头,从包头中提取第二预设字段。服务器可以判第二预设字段中是否包含第二预设字符串,以便根据判断结果确定视频数据的传输模式是否为块模式。
在一个示例中,视频发送端响应于HTTP请求数据包(即上行数据包),会向视频请求端发送HTTP响应数据包,该HTTP响应数据包通常是下行数据包中的第一个数据包,用于携带目标视频的头部数据。服务器在确定上行数据包为HTTP-FLV协议后,可以解析HTTP响应数据包的包头,提取Transfer-Encoding字段,判断该字段的内容是否等于chunked。
步骤303,若第二预设字段包含第二预设字符串,则确定视频流的协议类型为HTTP-FLV协议、且传输模式为块模式。
在实施中,若第二预设字段包含第二预设字符串,则服务器可以判定视频流的传输模式为块模式。若第二预设字段未包含第二预设字符串,则可以判定视频流的传输模式非块模式。例如,如果包头中的Transfer-Encoding字段的内容为chunked,则确定视频流的传输模式为块模式;否则,视频流的传输模式不是块模式。
基于上述处理,服务器通过协议识别,可以从获取到的各视频流中识别出HTTP-FLV协议、且传输模式为块模式的视频流,以便从该视频流中提取视频数据。
可选的,如图4所示,数据块提取处理的具体过程包括:
步骤401,在视频流的协议类型为HTTP-FLV协议、且传输模式为块模式的情况下,从视频流的下行数据包中,提取数据块长度。
在实施中,在chunked模式下,会将数据分成若干组数据块进行传输,分组数据块的封装格式为:ChunkSize+分割符号+ChunkData+分割符号。其中,ChunkSize为数据块长度;分割符号为两个字节,十六进制数为:"0d0a";ChunkData为数据块,其结构为:n(FlvTag+FlvTagSize),表示n个FlvTag+FlvTagSize的组成序列,其中,FlvTagSize为4个字节,表示整个FlvTag的长度。第一个chunked数据块的ChunkData包含了FlvHeader和MetaData。
在服务器确定视频流的协议类型为HTTP-FLV协议、且传输模式为块模式的情况下,服务器可以基于chunked模式的封装规则,从视频流的下行数据包中,提取数据块长度,具体的处理过程为:服务器在下行数据包中,确定数据包载荷的位置,作为当前偏移位置(可记为ptr0),然后识别下一个分割符(“0d0a”)的偏移位置(可记为ptr1),提取pt0和ptr1之间数据即可得到数据块长度。然后,将提取出的十六进制的数据块长度转换为十进制,得到十进制数值ChunkSize。可以理解的是,ptr1为分隔符的起始偏移位置。
其中,对于HTTP响应数据包,服务器可以先判断HTTP响应数据包中除了HTTP响应头部外,是否还有HTTP数据包载荷,如果有,则提取数据块长度,以执行后续处理,如果没有,则获取下一个下行数据包。
步骤402,根据数据块长度和预设的数据偏移规则,对视频流的数据包中进行数据块提取处理,得到目标视频的头部数据和视频数据。
在实施中,服务器获取到数据块长度后,可以根据数据块长度、分隔符的长度和预设的数据偏移规则,从数据包中提取数据块。具体过程为:确定ptr1+2(2表示2个字节)的偏移位置为ptr2,从ptr2开始,读取ChunkSize长度的数据,得到数据块的数据。
基于上述处理,服务器可以从HTTP-FLV协议的视频流中提取包含头部数据和视频数据的多个数据块,从而生成能够播放的视频文件。
可选的,如图5所示,步骤402的具体过程包括:
步骤501,确定下行数据包提取出数据块长度之后的剩余长度。
在实施中,服务器提取出数据块长度后,可以计算ptr2之后的剩余长度(可记为PayloadSize),然后比较PayloadSize和ChunkSize的大小。
步骤502,若剩余长度大于或等于数据块长度,则提取数据块长度的数据,并继续执行从视频流的下行数据包中,提取数据块长度的步骤。
在实施中,如果PayloadSize>=ChunkSize,则说明该数据包中存在多个数据块,可以从ptr2开始,提取ChunkSize长度的数据,得到该数据块的内容,并将该内容写入视频文件中。然后,将偏移位置移动至ptr2+ChunkSize+2的位置,重复执行步骤401。
步骤503,若剩余长度小于数据块长度,则提取下行数据包的剩余数据,并从下行数据包的下一个数据包中提取目标长度的数据,得到完整数据块,目标长度根据数据块长度和剩余长度确定。
在实施中,如果PayloadSize<ChunkSize,则说明当前的下行数据包中未包含该数据块的完整内容,服务器可以提取该下行数据包载荷中的全部剩余数据,然后计算ChunkSize与PayloadSize的差值,将该差值作为新的ChunkSize。当服务器获取到下一个下行数据包后,根据计算出的ChunkSize进行数据块提取,从而得到该数据块的完整内容。
基于上述处理,可以提取出数据块的完整内容,从而生成包含完整视频内容的视频文件。
可选的,可以将视频数据分批次写入FLV文件,从而生成目标视频的多个视频文件,如图6所示,具体处理过程包括:
步骤601,每提取出一个数据包的视频数据后,将提取出的视频数据存储到载荷链表中。
在实施中,服务器可以通过载荷链表存储视频数据,服务器每提取出一个数据包的视频数据后,可以将该视频数据存储到载荷链表中。这样,服务器可以按照数据包的获取顺序,将视频数据依次存储到载荷链表中。可选的,当服务器在空的载荷链表中存储第一个视频数据时,还可以生成一个文件索引(Index),该文件索引可以为数字、字母等,本申请实施例不做限定。
步骤602,当满足预设的链表释放条件时,生成包含头部数据和载荷链表中的视频数据的视频文件,并获取当前的文件索引,通过文件索引标识视频文件。
在实施中,服务器可以判断当前的载荷链表是否满足预设的链表释放条件,如果满足,则可以创建一个FLV文件,将头部数据和载荷链表中的视频数据写入该FLV文件中,从而合成为一个视频文件。
另外,服务器还可以获取当前的文件索引,并通过该文件索引标识视频文件。例如,可以将文件索引作为视频文件的名称;或者,也可以获取目标视频的名称信息,将名称信息和文件索引进行拼接,作为视频文件的名称。
步骤603,删除载荷链表中的视频数据,并生成新的文件索引,直到将目标视频的全部视频数据存储至视频文件。
在实施中,服务器生成视频文件后,可以删除载荷链表中的视频数据(即清空载荷链表),并重新生成一个新的文件索引。文件索引的生成方式可以是多种多样的,例如,文件索引为数值,可以将当前数值加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所示,具体包括以下步骤:
步骤701,接收网络设备发送的目标视频的镜像视频流。
在实施中,网络设备可以将网络中某视频(即目标视频)的视频流镜像到服务器中,服务器则会接收到网络设备发送的目标视频的镜像视频流。
步骤702,根据镜像视频流中的网络地址信息,确定镜像视频流的标识信息,并将标识信息作为索引信息添加至TCP流表中。
在实施中,服务器中可以建立TCP流表,TCP流表是用于存储各视频流的数据包的流表,包括各视频流对应的索引信息、以及各视频流的数据包。服务器获取到目标视频的镜像视频流后,可以从镜像视频流的上行数据包中提取网络地址信息,网络地址信息可以为四元组信息,包括源IP地址、目的IP地址、源端口、目的端口。或者,网络地址信息也可以为五元组信息,本申请实施例不做限定。服务器可以计算网络地址信息的哈希值,将该哈希值作为索引信息添加至TCP流表中。
步骤703,对镜像视频流的数据包进行保序处理,并基于索引信息,将保序处理后的数据包存储在TCP流表中。
在实施中,服务器可以基于TCP的保序逻辑,对镜像视频流的数据包进行保序处理,得到按照时间顺序排列的数据包。然后,服务器基于索引信息,将保序处理后的数据包存储在TCP流表中。
步骤704,从TCP流表中获取目标视频对应的保序处理后的数据包,得到目标视频的视频流。
在实施中,由于TCP流表中的数据包是基于时间顺序排列的,因此,服务器在TCP流表中顺序读取数据包,并进行视频数据提取,即可得到基于时间顺序的视频数据,进而生成能够按照正确顺序播放的视频文件。
可选的,当目标视频的视频流播放结束后,或者服务器确定目标视频流不是HTTP-FLV协议,则释放目标视频的视频流对应的流表。
本实施例还提供了一种视频文件的还原方法的示例,如图8所示,具体包括以下步骤。
步骤801,接收网络设备发送的视频流;
步骤802,建立该视频流的TCP流表,并进行保序处理。
步骤803,从TCP流表中依次读取目标视频对应的保序处理后的数据包。
步骤804,判断该视频流是否为HTTP-FLV协议、chunked模式的视频流。
如果是,执行步骤805。如果否,则执行步骤801。
步骤805,从视频流的上行数据包中提取目标视频的名称信息,并将该视频流增加预设标记。
其中,名称信息用于标识目标视频对应的视频文件。
步骤806,判断下行数据包是否带有预设标记。
如果是,执行807,如果否,则结束处理。
步骤807,在下行数据包中,提取pt0和ptr1之间数据得到ChunkSize。
其中,ptr0为数据包载荷的偏移位置,ptr1为下一个分割符("0d0a")的偏移位置。
步骤808,确定ptr1+2的偏移位置,得到ptr2,并计算ptr2之后的剩余长度PayloadSize。
步骤809,比较PayloadSize和ChunkSize的大小。
如果PayloadSize>=ChunkSize,则执行步骤810;如果PayloadSize<ChunkSize,则执行步骤811。
步骤810,读取ptr2+ChunkSize长度的数据,得到数据块的完整内容,并写入视频文件中。然后,将偏移位置移动至ptr2+ChunkSize+2的位置,重复执行步骤807。
步骤811,提取Payload的全部剩余数据,计算ChunkSize与PayloadSize的差值,将该差值作为新的ChunkSize。
步骤812,获取下一个下行数据包,根据计算出的ChunkSize进行数据块提取,从而得到该数据块的完整内容。
应该理解的是,虽然图1-8的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-8中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图9所示,提供了一种视频文件的还原装置,包括:获取模块910、确定模块920、提取模块930和生成模块940,其中:
获取模块910,用于获取目标视频对应的视频流;
确定模块920,用于提取视频流的传输特征信息,并根据传输特征信息确定视频流的协议类型和传输模式;
提取模块930,用于在视频流的协议类型为HTTP-FLV协议、且传输模式为块模式的情况下,对视频流的数据包进行数据块提取处理,得到目标视频的头部数据和视频数据;
生成模块940,用于根据头部数据和视频数据生成目标视频对应的视频文件。
在其中一个实施例中,确定模块920,具体用于:
从视频流的上行数据包中提取应用层数据和第一预设字段;
若应用层数据表示视频流的传输协议为HTTP协议、且第一预设字段的数据中包含第一预设字符串,则从视频流的下行数据包中提取第二预设字段;
若第二预设字段包含第二预设字符串,则确定视频流的协议类型为HTTP-FLV协议、且传输模式为块模式。
在其中一个实施例中,提取模块930,具体用于:
在视频流的协议类型为HTTP-FLV协议、且传输模式为块模式的情况下,从视频流的下行数据包中,提取数据块长度;
根据数据块长度和预设的数据偏移规则,对视频流的数据包进行数据块提取处理,得到目标视频的头部数据和视频数据。
在其中一个实施例中,提取模块930,具体用于:
确定下行数据包提取出数据块长度之后的剩余长度;
若剩余长度大于或等于数据块长度,则提取数据块长度的数据,并继续执行从视频流的下行数据包中,提取数据块长度的步骤;
若剩余长度小于数据块长度,则提取下行数据包的剩余数据,并从下行数据包的下一个数据包中提取目标长度的数据,得到完整数据块,目标长度根据数据块长度和剩余长度确定。
在其中一个实施例中,生成模块940,具体用于:
每提取出一个数据包的视频数据后,将提取出的视频数据存储到载荷链表中;
当满足预设的链表释放条件时,生成包含头部数据和载荷链表中的视频数据的视频文件,并获取当前的文件索引,通过文件索引标识视频文件;
删除载荷链表中的视频数据,并生成新的文件索引,直到将目标视频的全部视频数据存储至视频文件。
在其中一个实施例中,生成模块940,具体用于:
当载荷链表的长度达到预设阈值时,生成包含头部数据和载荷链表中的视频数据的视频文件;或者,
当检测到视频流满足预设停止传输条件时,生成包含头部数据和载荷链表中的视频数据的视频文件。
在其中一个实施例中,该装置还包括:
接收模块,用于接收网络设备发送的目标视频的镜像视频流;
添加模块,用于根据镜像视频流中的网络地址信息,确定镜像视频流的标识信息,并将标识信息作为索引信息添加至传输控制协议流表中;
存储模块,用于对镜像视频流的数据包进行保序处理,并基于索引信息,将保序处理后的数据包存储在传输控制协议流表中;
获取模块910,具体用于:
从传输控制协议流表中获取目标视频对应的保序处理后的数据包,得到目标视频的视频流。
关于视频文件的还原装置的具体限定可以参见上文中对于视频文件的还原方法的限定,在此不再赘述。上述视频文件的还原装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图10所示。该计算机设备包括通过***总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***、计算机程序和数据库。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种视频文件的还原方法。
本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种视频文件的还原方法,其特征在于,所述方法应用于服务器,所述方法包括:
获取目标视频对应的视频流;所述视频流是网络设备镜像至所述服务器中的视频流;
提取所述视频流的传输特征信息,并根据所述传输特征信息确定所述视频流的协议类型和传输模式;
在所述视频流的协议类型为HTTP-FLV协议、且传输模式为块模式的情况下,从所述视频流的下行数据包中,提取数据块长度,确定所述下行数据包提取出所述数据块长度之后的剩余长度;若所述剩余长度大于或等于所述数据块长度,则提取所述数据块长度的数据,并移动偏移位置,继续执行所述从所述视频流的下行数据包中,提取数据块长度的步骤;若所述剩余长度小于所述数据块长度,则提取所述下行数据包的剩余数据,并从所述下行数据包的下一个数据包中提取目标长度的数据,得到完整数据块,所述目标长度根据所述数据块长度和所述剩余长度确定,提取出的所述完整数据块包括所述目标视频的头部数据和视频数据;所述偏移位置根据分隔符的起始偏移位置、数据块长度和分隔符的长度确定;
每提取出一个数据包的视频数据后,将提取出的视频数据存储到载荷链表中;其中,所述载荷链表的视频数据是按照数据包的获取顺序存储的;
当满足预设的链表释放条件时,生成包含所述头部数据和所述载荷链表中的视频数据的视频文件,并获取当前的文件索引,通过所述文件索引标识所述视频文件;
删除所述载荷链表中的视频数据,并生成新的文件索引,直到将所述目标视频的全部视频数据存储至视频文件。
2.根据权利要求1所述的方法,其特征在于,所述提取所述视频流的传输特征信息,并根据所述传输特征信息确定所述视频流的协议类型和传输模式,包括:
从所述视频流的上行数据包中提取应用层数据和第一预设字段;
若所述应用层数据表示所述视频流的传输协议为HTTP协议、且所述第一预设字段的数据中包含第一预设字符串,则从所述视频流的下行数据包中提取第二预设字段;
若所述第二预设字段包含第二预设字符串,则确定所述视频流的协议类型为HTTP-FLV协议、且传输模式为块模式。
3.根据权利要求1所述的方法,其特征在于,所述当满足预设的链表释放条件时,生成包含所述头部数据和所述载荷链表中的视频数据的视频文件,包括:
当所述载荷链表的长度达到预设阈值时,生成包含所述头部数据和所述载荷链表中的视频数据的视频文件;或者,
当检测到所述视频流满足预设停止传输条件时,生成包含所述头部数据和所述载荷链表中的视频数据的视频文件。
4.根据权利要求1所述的方法,其特征在于,所述提取所述视频流的特征信息之前,所述方法还包括:
接收网络设备发送的所述目标视频的镜像视频流;
根据所述镜像视频流中的网络地址信息,确定所述镜像视频流的标识信息,并将所述标识信息作为索引信息添加至传输控制协议流表中;
对所述镜像视频流的数据包进行保序处理,并基于所述索引信息,将保序处理后的数据包存储在所述传输控制协议流表中;
所述获取目标视频对应的视频流,包括:
从所述传输控制协议流表中获取所述目标视频对应的保序处理后的数据包,得到所述目标视频的视频流。
5.一种视频文件的还原装置,其特征在于,所述装置应用于服务器,所述装置包括:
获取模块,用于获取目标视频对应的视频流;所述视频流是网络设备镜像至所述服务器中的视频流;
确定模块,用于提取所述视频流的传输特征信息,并根据所述传输特征信息确定所述视频流的协议类型和传输模式;
提取模块,用于在所述视频流的协议类型为HTTP-FLV协议、且传输模式为块模式的情况下,从所述视频流的下行数据包中,提取数据块长度,确定所述下行数据包提取出所述数据块长度之后的剩余长度;若所述剩余长度大于或等于所述数据块长度,则提取所述数据块长度的数据,并移动偏移位置,继续执行所述从所述视频流的下行数据包中,提取数据块长度的步骤;若所述剩余长度小于所述数据块长度,则提取所述下行数据包的剩余数据,并从所述下行数据包的下一个数据包中提取目标长度的数据,得到完整数据块,所述目标长度根据所述数据块长度和所述剩余长度确定,提取出的所述完整数据块包括所述目标视频的头部数据和视频数据;所述偏移位置根据分隔符的起始偏移位置、数据块长度和分隔符的长度确定;
生成模块,用于每提取出一个数据包的视频数据后,将提取出的视频数据存储到载荷链表中;当满足预设的链表释放条件时,生成包含所述头部数据和所述载荷链表中的视频数据的视频文件,并获取当前的文件索引,通过所述文件索引标识所述视频文件;删除所述载荷链表中的视频数据,并生成新的文件索引,直到将所述目标视频的全部视频数据存储至视频文件。
6.根据权利要求5所述的装置,其特征在于,所述确定模块,具体用于:
从所述视频流的上行数据包中提取应用层数据和第一预设字段;
若所述应用层数据表示所述视频流的传输协议为HTTP协议、且所述第一预设字段的数据中包含第一预设字符串,则从所述视频流的下行数据包中提取第二预设字段;
若所述第二预设字段包含第二预设字符串,则确定所述视频流的协议类型为HTTP-FLV协议、且传输模式为块模式。
7.根据权利要求5所述的装置,其特征在于,所述生成模块,具体用于:
当所述载荷链表的长度达到预设阈值时,生成包含所述头部数据和所述载荷链表中的视频数据的视频文件;或者,
当检测到所述视频流满足预设停止传输条件时,生成包含所述头部数据和所述载荷链表中的视频数据的视频文件。
8.根据权利要求5所述的装置,其特征在于,所述装置还包括:
接收模块,用于接收网络设备发送的所述目标视频的镜像视频流;
添加模块,用于根据所述镜像视频流中的网络地址信息,确定所述镜像视频流的标识信息,并将所述标识信息作为索引信息添加至传输控制协议流表中;
存储模块,用于对所述镜像视频流的数据包进行保序处理,并基于所述索引信息,将保序处理后的数据包存储在所述传输控制协议流表中;
所述获取模块,具体用于:
从所述传输控制协议流表中获取所述目标视频对应的保序处理后的数据包,得到所述目标视频的视频流。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至4中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至4中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110628876.0A CN113438506B (zh) | 2021-06-02 | 2021-06-02 | 视频文件的还原方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110628876.0A CN113438506B (zh) | 2021-06-02 | 2021-06-02 | 视频文件的还原方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113438506A CN113438506A (zh) | 2021-09-24 |
CN113438506B true CN113438506B (zh) | 2023-04-07 |
Family
ID=77803811
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110628876.0A Active CN113438506B (zh) | 2021-06-02 | 2021-06-02 | 视频文件的还原方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113438506B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109495505A (zh) * | 2018-12-21 | 2019-03-19 | 北京金山云网络技术有限公司 | 流媒体协议转换方法、装置、***及计算机可读介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150373075A1 (en) * | 2014-06-23 | 2015-12-24 | Radia Perlman | Multiple network transport sessions to provide context adaptive video streaming |
US20180338166A1 (en) * | 2017-05-22 | 2018-11-22 | Symantec Corporation | Remotely validating a webpage video stream |
CN109862435A (zh) * | 2018-11-16 | 2019-06-07 | 京信通信***(中国)有限公司 | 直播视频的监控方法、装置、计算机存储介质及设备 |
CN112312162B (zh) * | 2020-10-16 | 2022-11-08 | 安擎(天津)计算机有限公司 | 一种传输视频流的视频服务器 |
CN112468416B (zh) * | 2020-10-23 | 2022-08-30 | 曙光网络科技有限公司 | 网络流量镜像方法、装置、计算机设备和存储介质 |
CN112532719B (zh) * | 2020-11-26 | 2024-04-02 | 腾讯科技(深圳)有限公司 | 信息流的推送方法、装置、设备及计算机可读存储介质 |
CN112866730B (zh) * | 2020-12-31 | 2022-09-13 | 广州博冠信息科技有限公司 | 流媒体数据传输方法及装置、***、电子设备、存储介质 |
-
2021
- 2021-06-02 CN CN202110628876.0A patent/CN113438506B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109495505A (zh) * | 2018-12-21 | 2019-03-19 | 北京金山云网络技术有限公司 | 流媒体协议转换方法、装置、***及计算机可读介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113438506A (zh) | 2021-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102111685B (zh) | 一种网络视频加载的加速方法、设备及*** | |
US7702917B2 (en) | Data transfer using hyper-text transfer protocol (HTTP) query strings | |
JP6556232B2 (ja) | データストリームのリアルタイム分類を実行する分類デバイス及び方法、コンピュータープログラム製品、並びにシステム | |
CN108647527B (zh) | 文件打包、文件包解包方法、装置及网络设备 | |
CN106878265B (zh) | 一种数据处理方法及装置 | |
US20110125749A1 (en) | Method and Apparatus for Storing and Indexing High-Speed Network Traffic Data | |
US20050055464A1 (en) | Header compression in messages | |
CN112104570A (zh) | 流量分类方法、装置、计算机设备和存储介质 | |
CN112559463B (zh) | 压缩文件处理的方法及装置 | |
CN108880875B (zh) | 日志报文的传输方法及装置 | |
CN108287859B (zh) | 一种多媒体信息检索方法及装置 | |
CN113438506B (zh) | 视频文件的还原方法、装置、计算机设备和存储介质 | |
CN117118972A (zh) | 一种可记录文件流转过程的方法、装置、设备及介质 | |
CN113438503B (zh) | 视频文件还原方法、装置、计算机设备和存储介质 | |
US20190129907A1 (en) | Data transfer system, data transfer apparatus, data transfer method, and computer-readable recording medium | |
CN107800758B (zh) | 风控数据处理方法、装置及*** | |
CN108563396B (zh) | 一种安全的云端对象存储方法 | |
CN113438505A (zh) | 视频文件的还原方法、装置、计算机设备和存储介质 | |
US9323857B2 (en) | System and method for providing content-related information based on digital watermark and fingerprint | |
CN114338126A (zh) | 一种网络应用识别方法和装置 | |
CN114070801A (zh) | 报文处理方法、报文传输方法、装置及电子设备 | |
CN111600846B (zh) | 一种网关设备的恢复方法和恢复*** | |
CN114567608B (zh) | 一种镜像报文的传输方法、*** | |
CN110636374A (zh) | 用于查找信息的方法和装置 | |
CN111193696B (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 |