[发明专利]一种音视频分片上传与重传方法有效
申请号: | 202010370609.3 | 申请日: | 2020-05-06 |
公开(公告)号: | CN111586158B | 公开(公告)日: | 2023-04-14 |
发明(设计)人: | 张咏雪;魏金雷;杨继伟;徐士强 | 申请(专利权)人: | 山东汇贸电子口岸有限公司 |
主分类号: | H04L67/06 | 分类号: | H04L67/06;H04L1/1867 |
代理公司: | 济南信达专利事务所有限公司 37100 | 代理人: | 姜明 |
地址: | 250100 山东省济南市*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 视频 分片 上传 方法 | ||
1.一种音视频分片上传与重传方法,其特征在于,分为以下步骤,
S01、文件分片初次上传失败重传:文件小于等于5M ,不进行分片,整个文件直接上传对象存储;文件大于5M,采用亚马逊分片方法,获取分片个数,分片大小;
首先每个文件的上传都开启一个线程,然后,将文件进行分片,初始化文件需要上传凭证ID、是否分片标识、文件绝对路径和分片信息集合的信息,将得到的所有文件分片信息放入线程池中,多线程执行分片上传,并获取每个线程的回调的上传结果;
若没有上传失败的分片集合,则发起一个文件合并请求到对象存储,将分片合并成一个完整的文件,并回调文件状态上报接口,记录该音视频转码文件上传成功,结束该线程;
若有上传失败的分片集合,收集上传失败的分片集合,将上传失败的分片集合序列化到上传失败记录文件中;
在将上传失败的分片集合序列化到上传失败记录文件中时,有以下步骤:
1)创建当天上传失败记录文件夹,命名为upload_error_data/yyyyMM/DD/subTaskId,其中,subTaskId为转码唯一标识;
2)在上述创建的文件夹中再创建一个上传失败记录文件,命名为上传凭证ID.errdata,其中上传凭证ID为该文件上传对象存储前所获取到的一个字符串,.errdata为上传失败记录文件后缀;
3)将上传失败的分片集合转换成json,并以UTF-8的编码方式写入到上传失败记录文件中;
4)最后结束该线程,等待定时重传上传失败文件进行重传;
在线程池中,每一单个线程中某一分片上传时分为以下步骤:
1)组装上传对象所需信息;
2)获取亚马逊S3请求连接;
3)发起上传请求;
4)如果上传失败,重新发起上传请求,直到成功,可尝试重传三次;
5)最后将上传结果返回;
所述分片信息集合包括分片编号、重试次数、分片起始字节数、分片大小和创建时间,其中,初次上传重试次数为1;
S02、定时重传上传失败文件:定时重传上传失败文件的频率为两小时启动一次,判断当天和前一天是否有上传失败的片段,将所述上传失败的片段进行重传;
获取当前时间endDate和前一天的日期startDate,格式分别为yyyyMM/DD;
查找符合条件的上传失败记录文件夹,upload_error_data/endDate/、upload_error_data/startDate/;
根据上述两个文件夹,查找所有文件后缀为.errdata的文件;
获取到的文件集合就是所有上传失败记录文件,从这些文件中获取所有需要重传的文件信息,得到失败记录文件集合,并对每一个文件进行反序列化,获取文件中记录的上传失败文件信息,循环完成即可得到所有需要重传的文件信息集合;
对文件信息集合中的每个文件都开启一个线程进行重传,每一个线程中重传的过程为:
1)、将每个重传分片重传次数+1;
2)、将该文件中所有重传的分片信息放入线程池中,多线程执行分片上传,并获取每个线程的回调上传结果;
在线程池中,每一单个线程中某一分片重传时分为以下步骤:
1)组装上传对象所需信息;
2)获取亚马逊S3请求连接;
3)发起上传请求;
4)如果上传失败,重新发起上传请求,直到成功,可尝试重传三次;
5)最后将上传结果返回;
分析每一单个线程每个分片上传情况,收集上传失败的分片集合;
若没有上传失败的分片集合,则发起一个文件合并请求到对象存储,将分片合并成一个完整的文件,然后,回调文件状态上报接口,记录该音视频转码文件上传成功,最后,清除该重传文件的上传失败记录文件,结束该线程;
若有上传失败的分片集合,则将上传失败的分片集合序列化到上传失败记录文件中;
定时任务执行完成,等待两小时之后重新启动;
若有上传失败的分片集合,具体步骤如下:
1)首先判断是否有分片重传次数已经等于3次,如果有,则回调文件状态上报接口,记录该音视频转码文件上传失败,再回调文件重传记录接口,记录该转码文件中分片重传次数超标的文件;若无,则将再次重传失败的分片信息序列化到上传失败记录文件中;
2)获取到该文件的上传失败记录文件upload_error_data/yyyyMM/DD/subTaskId/上传唯一标识.errdata,其中subTaskId为转码唯一标识;
3)然后,将上传失败的分片集合转换成json,并以UTF-8的编码方式写入到上传失败记录文件中;
4)最后结束线程,等待定时重传上传失败文件进行重传;
S03、定时清理上传失败记录文件:设定时间进行清除。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山东汇贸电子口岸有限公司,未经山东汇贸电子口岸有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010370609.3/1.html,转载请声明来源钻瓜专利网。