CN114390319B - Mp4文件的读取下载方法、装置、电子设备及存储介质 - Google Patents
Mp4文件的读取下载方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114390319B CN114390319B CN202111234323.3A CN202111234323A CN114390319B CN 114390319 B CN114390319 B CN 114390319B CN 202111234323 A CN202111234323 A CN 202111234323A CN 114390319 B CN114390319 B CN 114390319B
- Authority
- CN
- China
- Prior art keywords
- file
- moov
- metadata container
- download
- downloading
- 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 67
- AWSBQWZZLBPUQH-UHFFFAOYSA-N mdat Chemical compound C1=C2CC(N)CCC2=CC2=C1OCO2 AWSBQWZZLBPUQH-UHFFFAOYSA-N 0.000 claims abstract description 44
- 230000015654 memory Effects 0.000 claims abstract description 27
- 238000004590 computer program Methods 0.000 claims description 5
- 230000005540 biological transmission Effects 0.000 abstract description 8
- 238000013507 mapping Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000007787 long-term memory Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/238—Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
-
- 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/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- 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/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/436—Interfacing a local distribution network, e.g. communicating with another STB or one or more peripheral devices inside the home
- H04N21/4363—Adapting the video stream to a specific local network, e.g. a Bluetooth® network
-
- 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/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/438—Interfacing the downstream path of the transmission network originating from a server, e.g. retrieving encoded video stream packets from an IP network
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种MP4文件的读取下载方法、装置、电子设备及存储介质。其中,该方法包括步骤:接收接收终端的MP4文件的下载请求;打开并解析请求被下载的MP4文件,得到所述MP4文件中各box的位置;根据所述MP4文件中各box的位置,基于所述开始下载位置、所述下载长度,以文件类型容器ftpy、元数据容器moov、媒体数据容器mdat的顺序,读取所述MP4文件中的信息;将读取到的MP4文件中的信息发送给所述接收终端。本发明的下载方法不需要整个MP4文件读入内存中重新生成MP4,并且能够实现断点传输,大大减少了内存的开销。
Description
技术领域
本发明涉及视频文件传输的技术领域,尤其涉及一种MP4文件的读取下载方法、装置、电子设备及存储介质。
背景技术
现有技术中的mp4封装结构中,由录像设备生成的mp4文件记录了媒体数据的索引的元数据容器moov(metedata container)一般都位于媒体数据容器 mdat(media datecontainer)之后。但是通过http协议在线播放mp4视频的时候,播放器需要先读取解析moov中的索引信息,然后根据索引信息快速地找到特定时间,或者特定位置的媒体数据容器mdat中的媒体数据,实现在线播放。为了能够网页端或者移动端的在线播放,视频文件下载时的接收方(即客户端) 需要得到moov信息提前的MP4文件。因此,视频文件的提供方(即服务端)在提供下载之前,需要在本地生成元数据容器moov(metedata container)信息提前的MP4文件(即新的MP4文件)。提供方需要先将整个文件读入内存中,接着解析moov重新生成新的moov,并将moov拷贝到新创建的MP4文件中;其次拷贝mdat到该文件中,以得到moov信息提前的MP4文件。这个过程,占内存,耗时长,并且需要生成新的MP4文件,占用存储空间。
另外,视频文件通常体积都是比较庞大,需要下载的时间会比较长。遇到网络不稳定等各种因素,下载的过程容易出现传输中断,中断后又不得不重新下载视频文件。
发明内容
本发明为为克服上述现有技术所述的至少一种缺陷,提供一种MP4文件的读取下载方法、装置、电子设备及存储介质,本发明采用的技术方案如下。
第一方面,本发明提供一种MP4文件的读取下载方法,包括步骤:
接收接收终端的MP4文件的下载请求;
其中,所述下载请求包括:开始下载位置和下载长度;
打开并解析请求被下载的MP4文件,得到所述MP4文件中各box的位置;
根据所述MP4文件中各box的位置,基于所述开始下载位置、所述下载长度,以文件类型容器ftpy、元数据容器moov、媒体数据容器mdat的顺序,读取所述MP4文件中的信息;
将读取到的MP4文件中的信息发送给所述接收终端。
在一种实施方式中,所述根据所述MP4文件中各box的位置,基于所述开始下载位置、所述下载长度,以文件类型容器ftpy、元数据容器moov、媒体数据容器mdat的顺序,读取所述MP4文件中的信息的过程,包括步骤:
在所述开始下载位置位于第一部分时,根据所述开始下载位置和所述下载长度,读取第一部分;其中,所述第一部分包括:文件类型容器ftpy;
在读取完所述第一部分后,剩余的下载长度大于0时,以元数据容器moov 的起点位置作为开始下载位置,以剩余的下载长度作为下载长度。
在一种实施方式中,所述根据所述MP4文件中各box的位置,基于所述开始下载位置、所述下载长度,以文件类型容器ftpy、元数据容器moov、媒体数据容器mdat的顺序,读取所述MP4文件中的信息的过程,还包括步骤:
在所述开始下载位置位于元数据容器moov时,根据所述开始下载位置和所述下载长度,读取元数据容器moov;
在读取完所述元数据容器moov后,剩余的下载长度大于0时,顺序读取所述MP4文件中除所述第一部分和所述元数据容器moov以外部分的信息。
在一种实施方式中,所述根据所述MP4文件中各box的位置,基于所述开始下载位置、所述下载长度,以文件类型容器ftpy、元数据容器moov、媒体数据容器mdat的顺序,读取所述MP4文件中的信息的过程,还包括步骤:
在所述开始下载位置位于MP4文件中除所述第一部分和所述元数据容器 moov以外部分时,根据所述开始下载位置和所述下载长度,顺序读取所述MP4 文件中除所述第一部分和所述元数据容器moov以外部分的信息。
在一种实施方式中,所述第一部分还包括:free box。
在一种实施方式中,所述根据所述MP4文件中各box的位置,基于所述开始下载位置、所述下载长度,以文件类型容器ftpy、元数据容器moov、媒体数据容器mdat的顺序,读取所述MP4文件中的信息的过程,包括步骤:
在读取到元数据容器moov中的stco box时,根据元数据容器moov的大小,对元数据容器moov中的stco box中的元素进行修改。
在一种实施方式中,所述在读取到元数据容器moov中的stco box时,根据元数据容器moov的大小,对元数据容器moov中的stco box中的元素进行修改的过程,包括步骤:
在所述开始下载位置在所述stco box的元素的中间字节时,根据元数据容器moov的大小对元数据容器moov中的stco box中的元素进行修改后,再读取。
在一种实施方式中,所述在读取到元数据容器moov中的stco box时,根据元数据容器moov的大小,对元数据容器moov中的stco box中的元素进行修改的过程,还包括步骤:
在读取所述MP4文件的终止位置在所述stco box的元素的中间字节时,根据元数据容器moov的大小对元数据容器moov中的stco box中的元素进行修改后,再读取。
第二方面,本发明提供一种MP4文件的读取下载装置,包括:
接收模块,用于接收接收终端的MP4文件的下载请求;
其中,所述下载请求包括:开始下载位置和下载长度;
解析模块,用于打开并解析请求被下载的MP4文件,得到所述MP4文件中各box的位置;
读取模块,用于根据所述MP4文件中各box的位置,基于所述开始下载位置、所述下载长度,以文件类型容器ftpy、元数据容器moov、媒体数据容器 mdat的顺序,读取所述MP4文件中的信息;
发送模块,将读取到的MP4文件中的信息发送给所述接收终端。
第三方面,本发明提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一实施方式的方法。
第四方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现上述任一实施方式的方法。
本发明不需要将整个MP4文件读入内存中重新生成MP4,只需安既定的顺序读取各个容器的数据并将其发送至接收终端,接收终端按照接收的顺序保存,就可以得到索引提取的MP4文件。本发明的读取方式,基于接收终端的开始下载位置映射回原文件,从该映射位置开始读取数据并发送到接收终端,从而实现断点传输。本发明只在读取到元数据容器moov中的stco box时,才对元数据容器moov中的stco box中的元素进行修改,因此大大减少了内存的开销,具有低内存开销,低延时的特点。
附图说明
图1是实施例一的流程示意图。
图2是实施例一的发送终端MP4文件封装结构示意图。
图3是实施例一的接收终端MP4文件封装结构示意图。
图4是实施例二的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
需要说明的是,本发明实施例所涉及的术语“第一\第二\……”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\……”在允许的情况下可以互换特定的顺序或先后次序。应该理解“第一\第二\……”区分的对象在适当情况下可以互换,以使这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。
实施例一
请参见图1,图1为本发明实施例一提供的一种MP4文件的读取下载方法的流程示意图,该方法包括步骤S110、步骤S120、步骤S130和步骤S140。需要注意的是,步骤S110、步骤S120、步骤S130和步骤S140仅为附图标记,用于清晰解释实施例与附图1的对应关系,不代表对本实施例中的方法的各方法步骤的顺序限定。
步骤S110,接收接收终端的MP4文件下载请求;
所述请求包括:开始下载位置和下载长度。
如图2所示,在实际使用场景中,由录像设备生成的MP4文件一般来说元数据容器moov都位于媒体数据容器mdat之后。这个情况造成的原因是录像技术的限制。元数据容器moov记录了媒体数据的索引信息,随着录制的进行,索引信息会不断地修改和增加。所以,在录制结束之前,应用程序只能先在媒体数据容器mdat写入文件,将索引信息保存在内存中,等录制结束后,应用程序再将索引信息写入元数据容器moov中。于是,本地生成的MP4文件便会出现元数据容器moov位于媒体数据容器mdat之后的情形。
本方法中,保存在发送终端(一般是服务器)供接收终端下载的MP4文件正是上述类型的MP4文件。具体的,MP4文件顺次包括:第一部分B1、第二部分B2和第三部分B3。第一部分B1包括:文件类型容器ftpy,有些MP4文件还可能包括free box。第二部分B2包括:媒体数据容器mdat。第三部分B3包括:元数据容器moov。
一般来说,发生了下载中断,接收终端(一般是客户端)为了只重传分块,会请求从中间某个位置开始下载该分块,所以请求中会包含关于分块的开始下载位置和下载长度(即分块的长度)等信息。
这里需要说明的是,本方法适用在两个终端之间的MP4文件传输。终端是指可以生成、存储和输出移动图像文件的信息处理设备,例如,服务器、便携式终端、计算机、电视机、个人数字助理(PDA)、智能手机等。这些终端可以通过有线或无线方式与其他终端连接,以便在一个或多个终端之间传输和接收 MP4文件。
步骤S120,打开并解析请求被下载的MP4文件,得到所述MP4文件中各box 的位置。
步骤S130,根据所述MP4文件中各box的位置,基于所述开始下载位置、所述下载长度,以文件类型容器ftpy、元数据容器moov、媒体数据容器mdat 的顺序,读取所述MP4文件中的信息。
步骤S140,将读取到的MP4文件中的信息发送给所述接收终端。
在步骤S120中,对请求被下载的MP4文件进行解析,得到所述MP4文件中各box的位置。在得到MP4文件中各box的位置后,实际上就知道如图2所示的B1、B2和B3在MP4中的位置。在得知B1、B2和B3在MP4中的位置后,在读取该MP4文件时,就可以定位到具体的box位置,先读取该部分的MP4文件中的信息。本方法中为了在接收终端形成如图3所示的MP4文件,所以要以文件类型容器ftpy、元数据容器moov、媒体数据容器mdat的顺序读取MP4文件中的信息并将读到的信息发送给接收终端。接收终端按照该接收的顺序保存,就可以得到如图3所示的MP4文件了。
与此同时,分块重传的顺序自然也是按照上述的顺序读取,基于所述开始下载位置映射回原文件中的位置,以文件类型容器ftpy、元数据容器moov、媒体数据容器mdat的顺序读取下载长度的MP4文件中的信息,并将读到的信息发送给接收终端,就能实现只重传分块。从效果上,支持断点下载的同时,接收终端能得到索引提前的MP4文件。
这里需要指出的是,本方法中的以文件类型容器ftpy、元数据容器moov、媒体数据容器mdat的顺序,是指这三者之间的顺序关系,但三者之间并不一定是连着读取的。因为在某些场合上,可能会有free box的存在,free box可能会在文件类型容器ftpy和元数据容器moov之间,和/或free box在元数据容器moov和媒体数据容器mdat之间,此时读取顺序有可能是ftpy、free box、 moov、mdat。
本方法中,不需要将整个MP4文件读入内存中重新生成MP4,只需安既定的顺序读取各个容器的数据并将其发送至接收终端,接收终端按照接收的顺序保存,就可以得到索引提取的MP4文件。另外,本发明的读取方式,基于接收终端的开始下载位置映射回原文件,从该映射位置开始读取数据并发送到接收终端,从而实现断点传输。
在一种实施方式中,所述根据所述MP4文件中各box的位置,基于所述开始下载位置、所述下载长度,以文件类型容器ftpy、元数据容器moov、媒体数据容器mdat的顺序,读取所述MP4文件中的信息的过程,包括步骤S210-S250。
步骤S210,在所述开始下载位置位于第一部分时,根据所述开始下载位置和所述下载长度,读取第一部分;
其中,所述第一部分包括:文件类型容器ftpy;
步骤S220,在读取完所述第一部分后,剩余的下载长度大于0时,以元数据容器moov的起点位置作为开始下载位置,以剩余的下载长度作为下载长度;
步骤S230,在所述开始下载位置位于元数据容器moov时,根据所述开始下载位置和所述下载长度,读取元数据容器moov;
步骤S240,在读取完所述元数据容器moov后,剩余的下载长度大于0时,顺序读取所述MP4文件中除所述第一部分和所述元数据容器moov以外部分的信息;
步骤S250,在所述开始下载位置位于MP4文件中除所述第一部分和所述元数据容器moov以外部分时,根据所述开始下载位置和所述下载长度,顺序读取所述MP4文件中除所述第一部分和所述元数据容器moov以外部分的信息。
如图2、3所示,步骤S210中展示的,是开始下载位置在B1部分中的情形,此时根据所述开始下载位置和所述下载长度,读取第一部分中的信息。如果下载长度是小于B1部分中从开始下载位置到第一部分末端的长度的话,那还没读完第一部分中的信息就完成读取了。但也会出现另一种情况,下载长度是大于 B1部分中从开始下载位置到第一部分末端的长度,即在读取完所述第一部分后,剩余的下载长度大于0的情形,这时就转入到步骤S220。为了得到如图3所示的moov提前的MP4文件,所以在还有剩余的下载长度时,开始读取元数据容器 moov。此时,在步骤S220中,以元数据容器moov的起点位置作为开始下载位置,以剩余的下载长度作为下载长度,即将还有剩余的下载长度要读取的情形归入到步骤S230中。
步骤S230中展示的,是开始下载位置在B3部分中的情形,此时的做法跟步骤S210类似,先读取元数据容器moov中的信息,如果读取完元数据容器moov 的信息后,还有剩余的下载长度的,转入步骤S240。
步骤S240中展示的,是在读取完所述元数据容器moov后,剩余的下载长度大于0的情形,产生这种情形的原因是多种的,有可能是来自于步骤S220,也有可能是来自于步骤S240,此时顺序读取B2中的内容,即读取所述MP4文件中除所述第一部分和所述元数据容器moov以外部分的信息。
步骤S250中展示的,是开始下载位置在B2部分中的情形,由于如图3所示的目标MP4文件中B2是位于最后的部分,所以下载长度必然不会超出B2的长度,因此只需要顺序读取所述MP4文件中除所述第一部分和所述元数据容器 moov以外部分的信息。
这里需要说明的是,对于第一部分的划分不同,读取的顺序也会有稍稍的差别。如果第一部分中仅仅包括文件类型容器ftpy,那在步骤S240和S250中,读取的顺序就是freebox、媒体数据容器mdat,最后接收终端形成的MP4文件中各容器的排序就是:ftpy、moov、free box、mdat。如果第一部分中包括文件类型容器ftpy和free box,那么步骤S240和S250中,仅读取媒体数据容器mdat,最后接收终端形成的MP4文件中各容器的排序就是:ftpy、free box、 moov、mdat。
在一种实施方式中,所述第一部分还包括:free box。
这就是上面提到的第一部分中包括文件类型容器ftpy和free box的情形。
在一种实施方式中,所述根据所述MP4文件中各box的位置,基于所述开始下载位置、所述下载长度,以文件类型容器ftpy、元数据容器moov、媒体数据容器mdat的顺序,读取所述MP4文件中的信息的过程,包括步骤S310。
步骤S310,在读取到元数据容器moov中的stco box时,根据元数据容器 moov的大小,对元数据容器moov中的stco box中的元素进行修改。
如图2、3所示,位于最末位的元数据容器moov往前提到了媒体数据容器 mdat之前。通常地,大多数存储在媒体数据容器mdat里的媒体数据都与容器的位置无关。因此,这些容器的数据不会受到容器顺序变化的影响。然而,容器序列的变化会影响到moov中包含的stco box的组件的值。如下表1所示, mp4是由一个个“box”组成的,大box中存放小box,一级嵌套一级来存放媒体信息。stco box的组成部分的值是指与mdat中包含的媒体数据有关的每个样本的偏移量,相对于媒体数据文件的开始部分。当moov被移动到mdat前时,每个与mdat中包含的媒体数据有关的样本都会因此而后移,后移moov的大小。这个移动代表了一个必须考虑和补偿的偏移值。因此,与moov的大小相对应的偏移值被添加到moov中包含的stco box的每个组件的值中。因此,stco box 的组件的变化值与mdat中包含的每个样本的偏移值相同,该偏移值根据moov 的大小而改变。
表1
目前,很多服务器支持seek操作(类似本方法的将moov提前传输)的方式,是在下载时将moov整个缓存到内存中,然后对stco box进行批量修改。但由于每次下载时都要将moov进行整个读取缓存到内存中,会占用了大量内存的开销。而在断点传输的时候,不一定每次都读取到stco box,在不读取到stco box时,则不需要对stco box进行修改,从而不需要长期占用内存。所以在步骤S310中,只在读取到元数据容器moov中的stco box时,才对元数据容器 moov中的stco box中的元素进行修改,因此大大减少了内存的开销,具有低内存开销,低延时的特点。
在一种实施方式中,所述在读取到元数据容器moov中的stco box时,根据元数据容器moov的大小,对元数据容器moov中的stco box中的元素进行修改的过程,包括步骤S410。
步骤S410,在所述开始下载位置在所述stco box的元素的中间字节时,根据元数据容器moov的大小对元数据容器moov中的stco box中的元素进行修改后,再读取。
因为stco box中的元素的单位一般是4个字节,或当mp4文件过大,启动largesize时,stco box中的元素的单位是8个字节。在读取时,可能会开始读取的位置是指向元素的中间字节,但由于对元素的修改是要整体修改的,所以此时要对stco box中的元素进行修改后,再读取。
这里需要注意的是,由于MP4文件是以大端字节序存储的,对stco box中的元素的加法也需要按照大端字节序处理。
在一种实施方式中,所述在读取到元数据容器moov中的stco box时,根据元数据容器moov的大小,对元数据容器moov中的stco box中的元素进行修改的过程,还包括步骤S420。
步骤S420,在读取所述MP4文件的终止位置在所述stco box的元素的中间字节时,根据元数据容器moov的大小对元数据容器moov中的stco box中的元素进行修改后,再读取。
这是与步骤S410相对的情况,当终止位置在所述stco box的元素的中间字节时,也会存在同样的问题,所以也要对stco box中的元素进行修改后,再读取。
实施例二
与实施例一的方法相对应,如图4所示,本发明还提供一种MP4文件的读取下载装置4,包括:接收模块401、解析模块402、读取模块403和发送模块 404。
接收模块401,用于接收接收终端的MP4文件的下载请求;
其中,所述下载请求包括:开始下载位置和下载长度;
解析模块402,用于打开并解析请求被下载的MP4文件,得到所述MP4文件中各box的位置;
读取模块403,用于根据所述MP4文件中各box的位置,基于所述开始下载位置、所述下载长度,以文件类型容器ftpy、元数据容器moov、媒体数据容器mdat的顺序,读取所述MP4文件中的信息;
发送模块404,将读取到的MP4文件中的信息发送给所述接收终端。
在一种实施方式中,所述读取模块403在执行所述根据所述MP4文件中各 box的位置,基于所述开始下载位置、所述下载长度,以文件类型容器ftpy、元数据容器moov、媒体数据容器mdat的顺序,读取所述MP4文件中的信息的过程,包括步骤:
在所述开始下载位置位于第一部分时,根据所述开始下载位置和所述下载长度,读取第一部分;其中,所述第一部分包括:文件类型容器ftpy;
在读取完所述第一部分后,剩余的下载长度大于0时,以元数据容器moov 的起点位置作为开始下载位置,以剩余的下载长度作为下载长度;
在一种实施方式中,所述读取模块403在执行所述根据所述MP4文件中各 box的位置,基于所述开始下载位置、所述下载长度,以文件类型容器ftpy、元数据容器moov、媒体数据容器mdat的顺序,读取所述MP4文件中的信息的过程,包括步骤:
在所述开始下载位置位于元数据容器moov时,根据所述开始下载位置和所述下载长度,读取元数据容器moov;
在读取完所述元数据容器moov后,剩余的下载长度大于0时,顺序读取所述MP4文件中除所述第一部分和所述元数据容器moov以外部分的信息。
在一种实施方式中,所述读取模块403在执行所述根据所述MP4文件中各 box的位置,基于所述开始下载位置、所述下载长度,以文件类型容器ftpy、元数据容器moov、媒体数据容器mdat的顺序,读取所述MP4文件中的信息的过程,包括步骤:
在所述开始下载位置位于MP4文件中除所述第一部分和所述元数据容器 moov以外部分时,根据所述开始下载位置和所述下载长度,顺序读取所述MP4 文件中除所述第一部分和所述元数据容器moov以外部分的信息。
在一种实施方式中,所述第一部分还包括:free box。
在一种实施方式中,所述读取模块403在执行所述根据所述MP4文件中各 box的位置,基于所述开始下载位置、所述下载长度,以文件类型容器ftpy、元数据容器moov、媒体数据容器mdat的顺序,读取所述MP4文件中的信息的过程,包括步骤:
在读取到元数据容器moov中的stco box时,根据元数据容器moov的大小,对元数据容器moov中的stco box中的元素进行修改。
在一种实施方式中,所述读取模块403在执行所述在读取到元数据容器 moov中的stco box时,根据元数据容器moov的大小,对元数据容器moov中的stco box中的元素进行修改的过程,包括步骤:
在所述开始下载位置在所述stco box的元素的中间字节时,根据元数据容器moov的大小对元数据容器moov中的stco box中的元素进行修改后,再读取。
在一种实施方式中,所述读取模块403在执行所述在读取到元数据容器 moov中的stco box时,根据元数据容器moov的大小,对元数据容器moov中的stco box中的元素进行修改的过程,包括步骤:
在读取所述MP4文件的终止位置在所述stco box的元素的中间字节时,根据元数据容器moov的大小对元数据容器moov中的stco box中的元素进行修改后,再读取。
本装置中,不需要将整个MP4文件读入内存中重新生成MP4,只需安既定的顺序读取各个容器的数据并将其发送至接收终端,接收终端按照接收的顺序保存,就可以得到索引提取的MP4文件。本发明的读取方式,基于接收终端的开始下载位置映射回原文件,从该映射位置开始读取数据并发送到接收终端,从而实现断点传输。本发明只在读取到元数据容器moov中的stco box时,才对元数据容器moov中的stco box中的元素进行修改,因此大大减少了内存的开销,具有低内存开销,低延时的特点。
实施例三
本发明实施例还提供了一种存储介质,其上存储有计算机指令,该指令被处理器执行时实现上述任一实施例的MP4文件的读取下载方法。
本领域的技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、随机存取存储器(RAM,Random Access Memory)、只读存储器(ROM,Read-Only Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、终端、或者网络设备等)执行本发明各个实施例方法的全部或部分。而前述的存储介质包括:移动存储设备、RAM、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
与上述的计算机存储介质对应的是,在一个实施例中还提供一种计算机设备,该计算机设备包括存储器、编码器及存储在存储器上并可在编码器上运行的计算机程序,其中,编码器执行程序时实现如上述各实施例中的任意一种MP4 文件的读取下载方法。
上述计算机设备,不需要将整个MP4文件读入内存中重新生成MP4,只需安既定的顺序读取各个容器的数据并将其发送至接收终端,接收终端按照接收的顺序保存,就可以得到索引提取的MP4文件。本发明的读取方式,基于接收终端的开始下载位置映射回原文件,从该映射位置开始读取数据并发送到接收终端,从而实现断点传输。本发明只在读取到元数据容器moov中的stco box 时,才对元数据容器moov中的stco box中的元素进行修改,因此大大减少了内存的开销,具有低内存开销,低延时的特点。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
Claims (9)
1.一种MP4文件的读取下载方法,其特征在于,包括步骤:接收接收终端的MP4文件的下载请求;
其中,所述下载请求包括:开始下载位置和下载长度;
打开并解析请求被下载的MP4文件,得到所述MP4文件中各box的位置;
根据所述MP4文件中各box的位置,基于所述开始下载位置、所述下载长度,以文件类型容器ftpy、元数据容器moov、媒体数据容器mdat的顺序,读取所述MP4文件中的信息;
将读取到的MP4文件中的信息发送给所述接收终端;
所述根据所述MP4文件中各box的位置,基于所述开始下载位置、所述下载长度,以文件类型容器ftpy、元数据容器moov、媒体数据容器mdat的顺序,读取所述MP4文件中的信息的过程,包括步骤:
在读取到元数据容器moov中的stco box时,根据元数据容器moov的大小,对元数据容器moov中的stco box中的元素进行修改;
所述在读取到元数据容器moov中的stco box时,根据元数据容器moov的大小,对元数据容器moov中的stco box中的元素进行修改的过程,包括步骤:
在所述开始下载位置在所述stco box的元素的中间字节时,根据元数据容器moov的大小对元数据容器moov中的stco box中的元素进行修改后,再读取。
2.根据权利要求1所述的MP4文件的读取下载方法,其特征在于,所述根据所述MP4文件中各box的位置,基于所述开始下载位置、所述下载长度,以文件类型容器ftpy、元数据容器moov、媒体数据容器mdat的顺序,读取所述MP4文件中的信息的过程,包括步骤:
在所述开始下载位置位于第一部分时,根据所述开始下载位置和所述下载长度,读取第一部分;其中,所述第一部分包括:文件类型容器ftpy;
在读取完所述第一部分后,剩余的下载长度大于0时,以元数据容器moov的起点位置作为开始下载位置,以剩余的下载长度作为下载长度。
3.根据权利要求2所述的MP4文件的读取下载方法,其特征在于,所述根据所述MP4文件中各box的位置,基于所述开始下载位置、所述下载长度,以文件类型容器ftpy、元数据容器moov、媒体数据容器mdat的顺序,读取所述MP4文件中的信息的过程,还包括步骤:
在所述开始下载位置位于元数据容器moov时,根据所述开始下载位置和所述下载长度,读取元数据容器moov;
在读取完所述元数据容器moov后,剩余的下载长度大于0时,顺序读取所述MP4文件中除所述第一部分和所述元数据容器moov以外部分的信息。
4.根据权利要求3所述的MP4文件的读取下载方法,其特征在于,所述根据所述MP4文件中各box的位置,基于所述开始下载位置、所述下载长度,以文件类型容器ftpy、元数据容器moov、媒体数据容器mdat的顺序,读取所述MP4文件中的信息的过程,还包括步骤:
在所述开始下载位置位于MP4文件中除所述第一部分和所述元数据容器moov以外部分时,根据所述开始下载位置和所述下载长度,顺序读取所述MP4文件中除所述第一部分和所述元数据容器moov以外部分的信息。
5.根据权利要求2-4任一项所述的MP4文件的读取下载方法,其特征在于,
所述第一部分还包括:free box。
6.根据权利要求1所述的MP4文件的读取下载方法,其特征在于,所述在读取到元数据容器moov中的stco box时,根据元数据容器moov的大小,对元数据容器moov中的stco box中的元素进行修改的过程,还包括步骤:
在读取所述MP4文件的终止位置在所述stco box的元素的中间字节时,根据元数据容器moov的大小对元数据容器moov中的stco box中的元素进行修改后,再读取。
7.一种MP4文件的读取下载装置,其特征在于,包括:
接收模块,用于接收接收终端的MP4文件的下载请求;
其中,所述下载请求包括:开始下载位置和下载长度;
解析模块,用于打开并解析请求被下载的MP4文件,得到所述MP4文件中各box的位置;
读取模块,用于根据所述MP4文件中各box的位置,基于所述开始下载位置、所述下载长度,以文件类型容器ftpy、元数据容器moov、媒体数据容器mdat的顺序,读取所述MP4文件中的信息;
发送模块,将读取到的MP4文件中的信息发送给所述接收终端;
所述读取模块在执行所述根据所述MP4文件中各box的位置,基于所述开始下载位置、所述下载长度,以文件类型容器ftpy、元数据容器moov、媒体数据容器mdat的顺序,读取所述MP4文件中的信息的过程,包括步骤:
在读取到元数据容器moov中的stco box时,根据元数据容器moov的大小,对元数据容器moov中的stco box中的元素进行修改;
所述读取模块在执行所述在读取到元数据容器moov中的stco box时,根据元数据容器moov的大小,对元数据容器moov中的stco box中的元素进行修改的过程,包括步骤:
在所述开始下载位置在所述stco box的元素的中间字节时,根据元数据容器moov的大小对元数据容器moov中的stco box中的元素进行修改后,再读取。
8.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-6中任一所述的方法。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111234323.3A CN114390319B (zh) | 2021-10-22 | 2021-10-22 | Mp4文件的读取下载方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111234323.3A CN114390319B (zh) | 2021-10-22 | 2021-10-22 | Mp4文件的读取下载方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114390319A CN114390319A (zh) | 2022-04-22 |
CN114390319B true CN114390319B (zh) | 2023-11-03 |
Family
ID=81195842
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111234323.3A Active CN114390319B (zh) | 2021-10-22 | 2021-10-22 | Mp4文件的读取下载方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114390319B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230412901A1 (en) * | 2022-06-15 | 2023-12-21 | Microsoft Technology Licensing, Llc | Self-driven adaptive upload |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102723090A (zh) * | 2012-07-04 | 2012-10-10 | 深圳锐取信息技术股份有限公司 | Mp4文件生成及读取方法 |
CN105578276A (zh) * | 2015-12-24 | 2016-05-11 | 杭州当虹科技有限公司 | 一种支持mp4文件逐行下载实时转换的方法 |
WO2019120048A1 (zh) * | 2017-12-19 | 2019-06-27 | 华为技术有限公司 | 一种mp4文件的处理方法及其相关设备 |
WO2019227748A1 (zh) * | 2018-05-29 | 2019-12-05 | 北京字节跳动网络技术有限公司 | 非流媒体文件的网页播放方法、装置及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080256431A1 (en) * | 2007-04-13 | 2008-10-16 | Arno Hornberger | Apparatus and Method for Generating a Data File or for Reading a Data File |
KR20100078700A (ko) * | 2008-12-30 | 2010-07-08 | 삼성전자주식회사 | 파일 전송 방법 및 그를 수행하는 단말기 |
-
2021
- 2021-10-22 CN CN202111234323.3A patent/CN114390319B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102723090A (zh) * | 2012-07-04 | 2012-10-10 | 深圳锐取信息技术股份有限公司 | Mp4文件生成及读取方法 |
CN105578276A (zh) * | 2015-12-24 | 2016-05-11 | 杭州当虹科技有限公司 | 一种支持mp4文件逐行下载实时转换的方法 |
WO2019120048A1 (zh) * | 2017-12-19 | 2019-06-27 | 华为技术有限公司 | 一种mp4文件的处理方法及其相关设备 |
WO2019227748A1 (zh) * | 2018-05-29 | 2019-12-05 | 北京字节跳动网络技术有限公司 | 非流媒体文件的网页播放方法、装置及存储介质 |
Non-Patent Citations (1)
Title |
---|
一种有效加密MP4文件的方法;赵丽娜;韩冬梅;薛华成;;计算机应用与软件(第10期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114390319A (zh) | 2022-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA2826552C (en) | Method and apparatus for receiving presentation metadata | |
CN102111685B (zh) | 一种网络视频加载的加速方法、设备及系统 | |
CN105760405A (zh) | 用于加载web页面的网络资源获取方法、缓存方法及装置 | |
CN109640113B (zh) | 一种拖拉视频数据的处理方法及代理服务器 | |
RU2653245C2 (ru) | Устройство и способ для доставки и приема данных мультимедиа в гибридной сети | |
CN1972193A (zh) | 兼容渐进下载方法和系统 | |
EP2510669A1 (en) | Apparatus and methods for describing and timing representations in streaming media files | |
CN104661058A (zh) | Mp4视频点播的数据流传输方法、客户端及点播系统 | |
CN114390319B (zh) | Mp4文件的读取下载方法、装置、电子设备及存储介质 | |
KR101568947B1 (ko) | 폰트 파일을 다운로드하는 방법 및 시스템 | |
CN102480520A (zh) | 一种基于差量元数据描述性结构的媒体数据同步方法 | |
CN108632388A (zh) | 一种分页内容的加载方法及装置 | |
CN110290396B (zh) | 一种视频处理的方法、装置、系统、设备和存储介质 | |
CN101702767B (zh) | 一种时基媒体播放方法及系统 | |
CN105897833A (zh) | 广告数据处理方法及路由器 | |
US11089379B2 (en) | Preload hinting for low latency HTTP live streaming system | |
CN106162311A (zh) | 一种播放网络视频的方法和终端设备 | |
US6886014B1 (en) | Modifiable universal resource locators (MURLs) | |
EP3989082A1 (en) | Multimedia file storage and access method | |
CN113301391B (zh) | 视频下载方法、装置、计算设备、介质和云端存储系统 | |
CN114666627A (zh) | 一种流媒体视频预加载的方法、装置、电子设备以及存储介质 | |
JP2015512188A (ja) | メディアファイルのファイルデータを提供する方法とシステム | |
CN113794898A (zh) | Dash媒体流传输方法、电子设备及存储介质 | |
CN115412777A (zh) | 流媒体数据的传输方法及装置、系统 | |
US20230008979A1 (en) | Mp4 file virtual mss fragmentation method, mss adapter, media server, and storage medium |
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 |