采用消息中间件rabbitMq
视频播放需要消耗的CPU资源比较大,所需时间也比较长,若采用同步方案,单个请求耗时太久,故考虑采用异步解决方案,这里推荐采用rabbitMq消息中间件,将需要处理的视频信息依次放入消息队列中,使其异步处理完视频信息,成功处理完之后手动确认。
下面先介绍Spring整合rabbitMq的方案:
1、添加依赖
org.springframework.boot
spring-boot-starter-amqp
2、在yaml文件中加入相关的配置
rabbitmq:
listener:
simple:
acknowledge-mode: manual
host: 192.168.41.63
port: 5672
username: admin
password: 123456
3、将视频基本信息存入队列中
@Autowired
private RabbitTemplate rabbitTemplate;
//将视频地址存入消息队列中
Map<String, Object> map = new HashMap<>();
map.put(“videoUrl”, videoUrl);
map.put(“fileName”, upload.getName());
map.put(“fileId”, upload.getId());
rabbitTemplate.convertAndSend(“videoQueue”, map);
4、消费者
@Component
@RabbitListener(queues = “videoQueue”)
public class Consumer {
@RabbitHandler
public void execute(Map<String, Object> map, Channel channel, Message message) throws Exception {
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
} catch (Exception e) {
e.printStackTrace();
}
}
可以在192.168.41.63:15672 查看队列中消息的个数,状态等信息
5、消费视频
在消费者中进行,主要是对视频的格式进行校验,然后下载视频,转码视频成MP4,然后切割视频,生成索引文件m3u8和多个视频ts文件
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交