学成在线-处理常见视频格式avi,mp4,mov,rmvb,flv

本文档介绍了在学成在线教程中扩展视频格式处理的过程,包括服务端Java任务类MediaProcessTask.java的修改,增加了对mp4等常见格式的判断和支持,以及前端vue组件media_list.vue的调整,确保处理失败的文件可以重新处理。同时,文章提供了详细的操作步骤和代码示例。
摘要由CSDN通过智能技术生成


前言

学成在线教程中老师讲只处理了avi格式的文件,后面我经过命令行的测试和工具类测试最后发现代码是可以处理常见的视频格式的例如:avi,mp4,mov,rmvb,flv。本人技术有限实现有问题敬请原谅


一、处理思路?

上传文件时对文件的格式是没有任何限制的,当我们发送mq消息处理视频的过程中会对视频的格式进行验证,所以需要更改代码只需要增加对格式的判断即可

二、更改步骤

1. 服务端MediaProcessTask.java

(1)添加视频格式判断的代码

//String[] fileTypeList={"avi","mp4","mov","rmvb","flv"}
if (!fileType.equals("avi")&&!fileType.equals("mp4")&&!fileType.equals("mov")&&!fileType.equals("rmvb")&&!fileType.equals("flv")){
	//视频格式不是常见的avi等,设置状态为无需处理
	mediaFile.setProcessStatus("303004");
	this.mediaFileRepository.save(mediaFile);//更新下状态
	log.warn("此上传的文件格式不是常见的视频格式avi,mp4,mov,rmvb,flv,无需处理,mediaId:"+mediaId);
	return;
}else {
    //格式正确需要处理设置处理状态为处理中
    mediaFile.setProcessStatus("303001");
    this.mediaFileRepository.save(mediaFile);//更新下状态
}

(2)上传mp4文件考虑

如果上传的是mp4文件就不需要执行转换mp4的操作

//在转换成mp4这个代码块中增加一个判断如果视频格式为mp4不执行
  //视频格式不是mp4的才执行转换为mp4
        if (!fileType.equals("mp4")){
            //需要转换的视频文件的路径
            String video_path=this.serverPath+mediaFile.getFilePath()+mediaFile.getFileName();
            String mp4_name = mediaFile.getFileId()+".mp4";
            String mp4folder_path = this.serverPath+mediaFile.getFilePath();//与avi文件还在同一目录
            //创建工具类对象调用工具类
            Mp4VideoUtil mp4VideoUtil=new Mp4VideoUtil(this.ffmpeg_path,video_path,mp4_name,mp4folder_path);
            //调用方法进行处理
            String result = mp4VideoUtil.generateMp4();
            //判断是否成功
            if (result==null|| !result.equals("success")){
                //记录处理失败的状态
                mediaFile.setProcessStatus("303003");
                //定义失败的原因
                MediaFileProcess_m3u8 mediaFileProcess_m3u8=new MediaFileProcess_m3u8();
                mediaFileProcess_m3u8.setErrormsg(result);
                //更新到media_file集合中
                mediaFile.setMediaFileProcess_m3u8(mediaFileProcess_m3u8);
                this.mediaFileRepository.save(mediaFile);//更新下状态
                log.error(mediaFile.getFileOriginalName()+"原视频文件转mp4视频文件失败,mediaId:"+mediaId);
                return;
            }
        }

2.前端手动上传media_list.vue

//处理失败的文件
      // String[] fileTypeList={"avi","mp4","mov","rmvb","flv"}
      process (mediaId,processStatus,fileStatus,fileType) {
        if (fileStatus=="301002"&&(fileType=="avi"||fileType=="mp4"||fileType=="mov"||fileType=="rmvb"||fileType=="flv")){//基本要求一个上传成功,一个视频格式为avi或常见格式
          //一种情况发送消息了处理失败,另一种情况消息发送失败根本没有处理(这种情况,后台设置了处理状态为失败)两种情况都可以根据状态进行重新处理
          if (processStatus=="303003") {
            //表示文件上传成功发送消息处理失败的媒资文件,需要重新发送MQ消息进行视频的处理
            mediaApi.media_process(mediaId).then((res)=>{
              if(res.success){
                this.$message.success('开始处理,请稍后查看处理结果或处理状态');
              }else{
                this.$message.error('操作失败,请刷新页面重试');
              }
            })
          }else {
            this.$message.warning('视频处理状态进行中或者无需处理,请勿重复处理');
          }
        }else{
          this.$message.error('系统暂只支持常见视频格式处理。例如avi,mp4,mov,rmvb,flv');
        }
      },

总结

手动发送消息处理视频更详细的讲解参考
https://blog.csdn.net/weixin_45305953/article/details/108729836

本人技术有限如有任何问题,或者更好的解决方法直接评论私聊我即可

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值