ffmpeg结合aliyun-sdk-oss解决视频封面链接异常问题

  1. 问题描述
    近期线上环境出现视频封面链接异常的问题,视频封面链接地址视频封面地址后缀是 PNG格式,但是把文件保存在本地并把后缀改为MP4,可以用视频播放器正常打开。

  2. 原因分析
    定位问题出现原因是安卓端调用阿里SDK上传视频后传到服务端的视频封面参数出错。

  3. 解决方案
    由于线上已经产生了大量的异常数据,首先要将异常数据修复。同时,安卓端解决代码问题,在下一个发版的时间窗口修复此问题。

  4. 具体实施

服务端修复此问题的业务流程如下:
先给表增加一个fixed字段标识数据是否已修复。
alter table act_works add column FIXED int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘数据修复标志:0 未修复 1 待修复 2 已修复’;
update act_works t set t.FIXED=1;
把此表的线上数据导出到测试环境。
服务端通过跑定时任务修复异常的视频链接,业务流程如下:
修复视频链接业务流程图

定时任务代码

public void fixVedioUrl() throws IOException {
   
        //查询作品
        List<ActWorksDO> list = actWorksDao.getActWorkToHandle("2019-08-26 02:10:00", 100);
        //保存至本地
        if (!CollectionUtils.isEmpty(list)) {
   
            for (ActWorksDO bo : list) {
   
                if (!StringUtils.isEmpty(bo.getResourceUrl())) {
   
                    String filePath = DOWNLOAD_FILE_DIR + bo.getId() + ".png";
                    downloadUtils.downloadFile(bo.getResourceUrl(), filePath);
                    File file = new File(filePath);
                    if (videoHandler.isImage(file)) {
   
                        //判断文件格式,png格式文件删除
                        LOGGER.info(filePath + "文件格式正常");
                        if (file.exists()) {
   
                            file.delete();
                        }
                        actWorksDao.updateFixed(bo.getId(), 2, null);
                    } else {
   
                        try {
   
                            LOGGER.info(filePath + "是mp4文件");
                            //拷贝文件修改视频后缀
                            String newFile = VIDEO_FILE_DIR + bo.getId() + ".mp4";
                            File destFile = new File(newFile);
                            file.renameTo(destFile
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值