logo好方法网

一种音视频分片上传与重传方法


技术摘要:
本发明涉及多媒体通信领域,具体提供了一种音视频分片上传与重传方法。一种音视频分片上传与重传方法,分为以下步骤,S01、文件分片初次上传失败重传:文件小于等于5M,不进行分片,整个文件直接上传对象存储;文件大于5M,采用亚马逊分片方法,获取分片个数,分片大小  全部
背景技术:
现有技术下,整个音视频上传时,如果中途出现网络中断或是网络不好等问题,将 会导致音视频文件上传失败,且不能继续之前失败文件的上传。另外,上传音视频文件过多 过大都容易给文件服务器造成压力,不管是上传失败,还是重新上传,都会造成更多的成本 损失。
技术实现要素:
本发明是针对上述现有技术的不足,提供一种实用性强的音视频分片上传与重传 方法。 本发明解决其技术问题所采用的技术方案是: 一种音视频分片上传与重传方法,分为以下步骤, S01、文件分片初次上传失败重传:文件小于等于5M,不进行分片,整个文件直接上 传对象存储;文件大于5M,采用亚马逊分片方法,获取分片个数,分片大小; S02、定时重传上传失败文件:定时重传上传失败文件的频率为两小时启动一次, 判断当天和前一天是否有上传失败的片段,将所述上传失败的片段进行重传; S03、定时清理上传失败记录文件:设定时间进行清除。 进一步的,在步骤S01中,首先每个文件的上传都开启一个线程,然后,将文件进行 分片,初始化文件需要上传凭证ID、是否分片标识、文件绝对路径和分片信息集合的信息, 将得到的所有文件分片信息放入线程池中,多线程执行分片上传,并获取每个线程的回调 的上传结果; 若没有上传失败的分片集合,则发起一个文件合并请求到对象存储,将分片合并 成一个完整的文件,并回调文件状态上报接口,记录该音视频转码文件上传成功,结束该线 程; 若有上传失败的分片集合,收集上传失败的分片集合,将上传失败的分片集合序 列化到上传失败记录文件中。 进一步的,在将上传失败的分片集合序列化到上传失败记录文件中时,有以下步 骤: 1)创建当天上传失败记录文件夹,命名为upload_error_data/yyyyMM/DD/ subTaskId,其中,subTaskId为转码唯一标识; 2)在上述创建的文件夹中再创建一个上传失败记录文件,命名为上传凭证 ID.errdata ,其中上传凭证ID为该文件上传对象存储前所获取到的一个字符串,.errdata 为上传失败记录文件后缀; 3)将上传失败的分片集合转换成json,并以UTF-8的编码方式写入到上传失败记 4 CN 111586158 A 说 明 书 2/5 页 录文件中; 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次,如果有,则回调文件状态上报接 口,记录该音视频转码文件上传失败,再回调文件重传记录接口,记录该转码文件中分片重 5 CN 111586158 A 说 明 书 3/5 页 传次数超标的文件;若无,则将再次重传失败的分片信息序列化到上传失败记录文件中; 2)获取到该文件的上传失败记录文件upload_error_data/yyyyMM/DD/ subTaskId/上传唯一标识.errdata,其中subTaskId为转码唯一标识; 3)然后,将上传失败的分片集合转换成json,并以UTF-8的编码方式写入到上传失 败记录文件中; 4)最后结束线程,等待定时重传上传失败文件进行重传。 本发明的一种音视频分片上传与重传方法和现有技术相比,具有以下突出的有益 效果: 本发明将音视频分割为多个分片进行上传,并且存储文件上传进度。当确定某一 个分片上传失败时,只需要对该上传失败的分片进行上传即可,不用重复上传已经上传成 功的部分,从而减少了对对象存储的存储资源占用。并在设置的重试次数内对发送失败的 分片重复发送,以确保文件的完成性,减少音视频文件因网络等问题导致的上传失败率。 附图说明 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明 的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据 这些附图获得其他的附图。 附图1是一种音视频分片上传与重传方法中文件分片初次上传失败重传的流程 图; 附图2是一种音视频分片上传与重传方法中定时重传上传失败文件的流程图。
下载此资料需消耗2积分,
分享到:
收藏