学成在线-第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配置如下:
[AppleScript] 纯文本查看 复制代码
?
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | @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 ( ) ; } } |
在application.yml中配置队列名称及routingkey
[AppleScript] 纯文本查看 复制代码
?
1 2 3 4 | xc‐service‐manage‐media : mq : queue‐media‐video‐processor : queue_media_video_processor routingkey‐media‐video : routingkey_media_video |