本发明涉及互联网视频点播及数字媒体的,更具体地,涉及一种mp4文件的切片方法及mp4文件的生成方法。
背景技术:
1、业务服务器通常同时有网页播放服务以及视频下载的业务,其中,hls格式文件常用于网页播放服务,其与浏览器网路兼容性好,便于实现动态切不同的分辨率,也便于加密播放,而mp4格式文件则常用于视频下载,其通用性好,便于保存。但由于hls格式文件与mp4格式文件不是相同格式的文件,为了满足下载的需要,常规的操作是在本地分别保存两种格式的视频,但这无疑会加大了本地的存储开销。
2、为了解决存储开销大的技术问题,公开号为cn103957469b的专利提出了一种解决方案,该方案中只存储mp4格式的视频,当用户需要hls格式文件时,对mp4格式的视频进行转换,从而做到只存储一种格式文件就能实现两种格式文件输出的效果。然而,在实际的业务里,浏览器访问请求hls的机会更多,而下载mp4的机会则比较少,若采用存储格式mp4格式的视频的话,需要进行转封装的几率也更大,会长期占用cpu资源。
技术实现思路
1、本发明为克服现有技术中转封装次数过多,长期占用cpu资源的技术问题,提供一种mp4文件的切片方法及mp4文件的生成方法,本发明采用的技术方案如下。
2、第一方面,本发明提供一种mp4文件的切片方法,包括:
3、获取源mp4文件;
4、读出源mp4文件中的除mdat外的所有box,并将读取到的除mdat外的所有box保存到虚拟的mp4文件中;
5、按照源mp4文件中的mdat中的音视频编码数据的存储顺序,将源mp4文件中的mdat中的音视频编码数据转封装成ts切片。
6、在一种实施方式中,还包括:每形成一个ts切片时,将该ts切片中最后一帧编码数据在源mp4中的偏移位置写入到转封装位移索引表。
7、在一种实施方式中,还包括:在源mp4文件的moov放在mdat的后面时,对虚拟的mp4文件中的moov进行修改,使得修改后的moov能够置于mdat的前面。
8、在一种实施方式中,所述对虚拟的mp4文件中的moov进行修改的过程,包括:
9、递归分析源mp4文件中各个box的偏移位置和大小,并根据所述偏移位置和大小对stco的box进行修改。
10、第二方面,本发明提供一种mp4文件的生成方法,包括:
11、接收mp4文件的下载请求;
12、根据所述下载请求查找对应的虚拟的mp4文件;
13、根据下载请求中的offset读取所述对应的虚拟的mp4文件中的数据,并将读取到的数据封装成mp4文件格式;
14、其中,所述根据下载请求中的offset读取所述对应的虚拟的mp4文件中的数据的过程,包括:
15、在读取到非mdat位置时,读取所述虚拟的mp4文件中对应的数据;
16、在读取到mdat的开始位置时,根据所述下载请求查找对应的ts文件,按照ts列表顺序对ts文件中的ts切片进行转封装并读取转封装后的音视频编码数据,将读取到的音视频编码数据写入到待生成的mp4文件的mdat中,其中,所述ts文件使用上述任一实施方式的切片方法生成。
17、在一种实施方式中,还包括:
18、查找所述对应的虚拟的mp4文件所对应的转封装位移索引表;
19、所述根据下载请求中的offset读取所述对应的虚拟的mp4文件中的数据的过程,还包括:
20、当由mdat的非开始位置重新读取时,根据当前的offset和转封装位移索引表得到对应的ts序号,从所述ts序号开始按照ts列表顺序对ts切片进行转封装并读取转封装后的音视频编码数据,将读取到的音视频编码数据写入到待生成的mp4文件的mdat中。
21、第三方面,本发明提供一种mp4文件的切片装置,包括:
22、获取模块,用于获取源mp4文件;
23、读取模块,用于读出源mp4文件中的除mdat外的所有box,并将读取到的除mdat外的所有box保存到虚拟的mp4文件中;
24、切片模块,用于按照源mp4文件中的mdat中的音视频编码数据的存储顺序,将源mp4文件中的mdat中的音视频编码数据转封装成ts切片。
25、第四方面,本发明提供一种mp4文件的生成装置,包括:
26、接收模块,用于接收mp4文件的下载请求;
27、查找模块,用于根据所述下载请求查找对应的虚拟的mp4文件;
28、生成模块,用于根据下载请求中的offset读取所述对应的虚拟的mp4文件中的数据,并将读取到的数据封装成mp4文件格式;
29、其中,生成模块在执行根据下载请求中的offset读取所述对应的虚拟的mp4文件中的数据的过程,包括步骤:
30、在读取到非mdat位置时,读取所述虚拟的mp4文件中对应的数据;
31、在读取到mdat的开始位置时,按照ts列表顺序对ts切片进行转封装并读取转封装后的音视频编码数据,将读取到的音视频编码数据写入到待生成的mp4文件的mdat中。
32、第五方面,本发明提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一实施方式的方法。
33、第六方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现上述任一实施方式的方法。
34、本发明中,在对mp4文件进行切片的过程中,保存源mp4文件中的除mdat外的所有box,按照源mp4文件中的mdat中的音视频编码数据的存储顺序转封装生成ts切片,使得重新生成mp4格式文件逆向转封装成mdat时,让重新生成到mdat的音视频编码数据与源mp4文件中的音视频编码数据的存储顺序相同,从而实现两种格式的文件能够共享相同的编码后的数据帧,在快速为客户端提供两种不同格式的文件的同时,又节省了存储空间。
1.一种mp4文件的切片方法,其特征在于,包括:
2.根据权利要求1所述的mp4文件的切片方法,其特征在于,还包括:
3.根据权利要求1或2所述的mp4文件的切片方法,其特征在于,还包括:
4.根据权利要求3所述的mp4文件的切片方法,其特征在于,所述对虚拟的mp4文件中的moov进行修改的过程,包括:
5.一种mp4文件的生成方法,其特征在于,包括:
6.根据权利要求5所述的mp4文件的生成方法,其特征在于,还包括:
7.一种mp4文件的切片装置,其特征在于,包括:
8.一种mp4文件的生成装置,其特征在于,包括:
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-6中任一所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一所述的方法。