视频上传配合使用Ffmpeg实时解析

本文介绍了一种视频上传方案,利用Ffmpeg进行实时视频转码、截断、水印和截图处理。通过Spring Mvc controller接收前端上传,结合ActiveMQ消息队列确保异步处理和资源管理,实现视频上传的高效与可控。
摘要由CSDN通过智能技术生成

视频上传配合使用Ffmpeg实时解析

问题点

  1. 视频上传上限1G
  2. 需要对上传的不同格式的视频,进行统一格式的转码处理,并实现 截断视频,水印转码视频,截图等功能。
  3. 视频处理的时效问题,不可以采用定时器去刷库轮询处理

方案

前台 -> 后台(即时token返回)-> 任务线程(维护 token + MultipartFile#transferTo[服务器本地文件])

前台所有信息填写完成后数据保存 -> 后台 (数据入库完成后,发送ActiveMQ消息队列)

监听代码 (实时消费) -> 根据文件路径 调用 ffmpeg 执行处理处理 -> (解析异常、JMS异常时) 触发重试机制

逻辑实现

  1. Spring Mvc 类型的controller 接口 接收前台传过来的视频信息

       @ResponseBody
       @RequestMapping(value = "/uploadVideo2", method = RequestMethod.POST)
       public String uploadVideo2(@RequestParam("upFile") MultipartFile uploadFile, HttpServletRequest request) throws Exception {
           ObjectMapper mapper = new ObjectMapper();
           Map<String, Object> map = new HashMap<>(9);
           map = ucenterKnowledgeCenterService.syncUploadVideo(uploadFile,request);
           return mapper.writeValueAsString(map);
       }
    
    • 因为要支持用户可删除维护

      • 此处追加 token(UUID) + itemFile 信息的维护
        private class TransferTask implements Runnable {

         private MultipartFile uploadFile;
         private String token;
         private Logger log = Logger.getLogger(TransferTask.class);
        
         private TransferTask(MultipartFile uploadFile, String token) {
             this.uploadFile = uploadFile;
             this.token = token;
         }
        
         /**
          * 执行转码和发送任务 todo -> 维护 token + itemFile
          */
         @Override
         public void run() {
        
             String originalFileName = this.uploadFile.getOriginalFilename();
             String savePath = UcenterKnowledgeCenterServiceImpl.class.getResource("").getPath();
             String itemFile = savePath + originalFileName;
        
             //字节流转换成文件
             try {
                 uploadFile.transferTo(new File(itemFile));
        
                 if (new File(itemFile).exists()) {
                     UcenterVideoTransferReleation releation = new UcenterVideoTransferReleation()
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值