媒资管理方案

一、媒资管理点播技术

1、播放器通过 http协议从http服务器上下载视频文件进行播放;
 问题:必须等到视频下载完才可以播放,不支持快进到某个时间点进行播放
2、播放器通过rtmp协议连接媒体服务器以实时流方式播放视频 
问题:使用rtmp协议需要架设媒体服务器,造价高,对于直播多采用此方案。
3、播放器使用HLS协议连接http服务器(Nginx、Apache等)实现近实时流方式播放视频 
HLS协议规定:基于Http协议,视频封装格式为ts,视频的编码格式为H264,音频编码格式为MP3、AAC或者AC-

HLS的工作方式是:将视频拆分成若干ts格式的小文件,通过m3u8格式的索引文件对这些ts小文件建立索引。一般10秒一个ts文件,播放器连接m3u8文件播放,当快进时通过m3u8即可找到对应的索引文件,并去下载对应的ts文件,从而实现快进、快退以近实时 的方式播放视频。

二、上传视频问题以及解决方案–断点续传

断点续传指的是在下载或上传时,将下载或上传任务(一个文件或一个压缩包)人为的划分为几个部分,每一个部分采用一个线程进行上传或下载,如果碰到网络故障,可以从已经上传或下载的部分开始继续上传下载未完成的部分,而没有必要从头开始上传下载,断点续传可以提高节省操作间,提高用户体验性

采用的技术 前端主要是webupload 后台使用微服务和io对上传文件进行读写

上传流程:
before-send-fifile
在开始对文件分块儿之前调用,可以做一些上传文件前的准备工作, 主要检查文件是否上传,已上传则直接返回。 检查文件上传路径是否存在,不存在则创建。

before-send
在上传文件分块之前调用此方法 ,检查分块文件是否上传,已上传则返回true。 未上传则检查上传路径是否存在,不存在则创建。随后将分块文件上传到指定的路径。

after-send-fifile
在所有分块上传完成后触发,将所有分块文件合并为一个文件。合并时(对分块文件进行排序)

上传合并后进行MD5(摘要--指纹) 校验 .上传和下载校验一致,说明视频没有被串改,保证了我们媒资的一致性.之后在Mongodb数据库中记录文件信息。

三、合并完成–媒资处理

采用的是RabbitMQ进行,如果不使用RabbitMQ的异步处理功能的话,这样我们用户在上传之后,就会让用户等待很长时间接收上传结果,这样用户体验就非常不好,所以我们采用RabbitMQ的异步处理功能,这能在视频合并之后,对消息队列进行监听,这样就可以提高用户体验.

在这里我们使用的是rabbitMQ的routing交换机模式,视频处理程序监听视频处理队列,接收视频处理消息,进行视频处理。最后将处理结果保存到Mongodb数据库中.
在视频处理中我们主要采用的是ffmpeg视频处理程序,可以通过Java调用ffmpeg.exe完成视频处理
当我们从消息队列中接收到视频处理消息首先判断媒体文件是否需要处理(我们只对avi视频进行处理) 当前只有avi文件需要处理,其它文件需要更新处理状态为“无需处理时”。处理前初始化处理状态为“未处理”. 
我们首先将视频进行转码,将avi转为MP4最后使用ffmpag将视频进行分块,分成10秒一个的ts文件,最后形成一个m3u8的索引文件.处理失败需要在数据库记录处理日志,及处理状态为“处理失败”,处理成功记录处理状态为“处理成功”.

四、优化

最后在测试的时候,发现10秒的一个个文件,对用户来说体验还有点缺陷,后期我们将文件切片为5秒一个的文件,提高用户的体验度.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值