学成在线-第14天-讲义-媒资管理 1 视频处理 1.1需求分析
原始视频通常需要经过编码处理,生成m3u8和ts文件方可基于HLS协议播放视频。通常用户上传原始视频,系统 自动处理成标准格式,系统对用户上传的视频自动编码、转换,最终生成m3u8文件和ts文件,处理流程如下:
1、用户上传视频成功
2、系统对上传成功的视频自动开始编码处理
3、用户查看视频处理结果,没有处理成功的视频用户可在管理界面再次触发处理
4、视频处理完成将视频地址及处理结果保存到数据库
视频处理流程如下:

视频处理进程的任务是接收视频处理消息进行视频处理,业务流程如下:
1、监听MQ,接收视频处理消息。
2、进行视频处理。
3、向数据库写入视频处理结果。

视频处理进程属于媒资管理系统的一部分,考虑提高系统的扩展性,将视频处理单独定义视频处理工程。
1.2 视频处理开发
1.2.1 视频处理工程创建
1、导入“资料”下的视频处理工程:xc-service-manage-media-processor


RabbitMQ配置如下:

[mw_shl_code=applescript,true]@Configuration public class RabbitMQConfig { 
    public static final String EX_MEDIA_PROCESSTASK = "ex_media_processor";    
   //视频处理队列 
    @Value("${xc‐service‐manage‐media.mq.queue‐media‐video‐processor}") 
    public  String queue_media_video_processtask;    
   //视频处理路由    
@Value("${xc‐service‐manage‐media.mq.routingkey‐media‐video}")  
   public  String routingkey_media_video;     
    /**     
* 交换机配置   
   * @return the exchange   
   */     
@Bean(EX_MEDIA_PROCESSTASK)   
  public Exchange EX_MEDIA_VIDEOTASK() {   
      return ExchangeBuilder.directExchange(EX_MEDIA_PROCESSTASK).durable(true).build(); 
    }    
//声明队列  
   @Bean("queue_media_video_processtask")  
   public Queue QUEUE_PROCESSTASK() {   
      Queue queue = new Queue(queue_media_video_processtask,true,false,true);     
    return queue; 
    }  
   /**   
   * 绑定队列到交换机 .   
   * @param queue    
the queue  
    * @param exchange the exchange  
    * @return the binding    
  */     
@Bean 
    public Binding binding_queue_media_processtask(@Qualifier("queue_media_video_processtask")  Queue queue,
@Qualifier(EX_MEDIA_PROCESSTASK) Exchange exchange) {      
   return BindingBuilder.bind(queue).to(exchange).with(routingkey_media_video).noargs();   
  }   }[/mw_shl_code]
在application.yml中配置队列名称及routingkey
[mw_shl_code=applescript,true]xc‐service‐manage‐media: 
  mq:  
   queue‐media‐video‐processor: queue_media_video_processor 
    routingkey‐media‐video: routingkey_media_video[/mw_shl_code]