基于HLS的流媒体方案

1.协议选择

1.1 HTTP Live Streaming

HTTP Live Streaming(缩写是HLS)是一个由苹果公司提出的基于HTTP的流媒体网络传输协议。是苹果公司QuickTime X和iPhone软件系统的一部分。它的工作原理是把整个流分成一个个小的基于HTTP的文件来下载,每次只下载一些。当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。在开始一个流媒体会话时,客户端会下载一个包含元数据的extended M3U (m3u8) playlist文件,用于寻找可用的媒体流。
HLS只请求基本的HTTP报文,与实时传输协议(RTP)不同,HLS可以穿过任何允许HTTP数据通过的防火墙或者代理服务器。它也很容易使用内容分发网络来传输媒体流。

2.切片工具

2.1 FFmpeg

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec。FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。
FFmpeg有非常强大的功能,包括视频采集功能、视频格式转换、视频抓图、给视频加水印等。

3.活动图

活动图

3.1 角色说明

客户端:视频的上传者,可能是App,或Web前端,或后台管理端。
应用服务器:提供Web应用的服务器,Tomcat。
切片服务器:简称切服,专门用于视频切片的服务器。支持集群。
切片服务器控制器:简称切服控制器,是一个中间件。作用有以下几点:
1.代理切片服务器,对应用服务器提供服务。
2.用于管理切片服务器(集群),提供算法决策最终由哪台切服提供服务。
3.现在控制器的算法是:切片请求过来后,找出一台当前切片任务最少的切服,用以完成新的切片请求。

3.2 流程说明

3.2.1 上传视频

客户端上传视频。

3.2.2 申请切服

应用服务器收到视频后,找切服控制器申请切服,切服控制器找一台当前切片任务最少的切服,并将切服标识告知应用服务器。

3.2.3 保存视频

应用服务器拿到切服标识后,将视频文件保存到对应切服的原始视频文件夹内。该文件夹由切服分享给应用服务器,对于后者,该文件夹是可读写的。

3.2.4 保存视频信息

应用服务器将视频保存成功后,向数据库保存业务信息,视频信息(时长,名字,url,状态-待切片等),然后将保存结果返回到客户端。

3.2.5 切片

应用服务器向切服控制器发送切片指令,并将切服标识传给控制器,切服控制器找到对应的切服开始切片服务,生成的m3u8文件和ts文件,将保存在切服的流媒体文件夹下。该文件夹由切服分享给应用服务器,对于后者,该文件夹是可读写的。

4.服务器结构图

服务器结构图

5.优化方向

5.1 效率

5.1.1 切片效率

由于整个视频文件需要切片成流文件,ffmpeg工具虽然支持多线程,但是效率还无法满足生产需要。对于ffmpeg需要更深入研究,提高其切片效率。

5.1.2 切片策略

现在的架构,如果搭建了切服集群,也还是用一台切服来处理一个切片任务,实际上这是服务器队列的模式,这种结构只有在并发切片情景下,才能发挥优势,如果切片任务是一个个进来,则切服集群没有任何效果。
我们认为更好的方式是:实现切服集群的map-reduce工作模式,用多台切服来处理一个切片任务,使集群能同时工作,榨取更多性能,并且支持横向扩展。
我们认为最好的方式是:实现切服集群簇的概念。
切片策略全由切服控制器掌握,如果要改进切片策略,只需要修改切服控制器的算法就行了。

5.2 后续并发和负载的处理

流媒体业务在生产环境,必然是有后台管理业务,如果用管理业务的服务器来承担流媒体业务显然是划不来的,需要单独开视频服务器,这样在并发和负载上的处理会更方便,且不影响其他业务。对于并发和负载均衡,我们还有更多事情可做。这上面还有很高的优化空间。

5.3 视频直播

满足了效率和并发的问题之后,我们还需要处理直播,其本质就是边录视频,边切片,其核心问题就是缩短延时。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值