基于HLS视频点播系统的设计与实现
2023-11-14夏立洋桂健雄余朵梅
万 莹,夏立洋,高 微,桂健雄,余朵梅
(1. 贵州商学院计算机与信息工程学院,贵阳 550014;2. 贵州商学院管理学院,贵阳 550014)
0 引言
随着互联网的普及,现如今的网络应用越来越丰富,其中流媒体的出现改变了传统多媒体播放的方式。流媒体技术是指音频、视频等文件以流式的方式进行传输[1]。随着流媒体技术的发展,视频点播在各种应用中取得了突破性进展。在采用流式传输方式的视频点播系统中,不需要像传统视频播放系统一样要完整下载整个视频文件才能进行播放,采用切片传输可以实现边下载边播放的功能。由于将视频进行切片后传输,用户仅用等待短暂的几十秒缓冲延时,即可在系统上对接收的视频流进行解码和观看,极大地提升了用户的观影体验[2]。鉴于此,研究高效的流媒体分发技术在视频点播领域具有很大的实用价值。在目前流行的流媒体技术发布榜单中,HLS 的使用最具有代表性。随着5G 网络的发展及普及,HLS 将会成为未来视频点播技术的研究热点。
1 关键技术
1.1 HHLLSS技术简介
HLS(Helix server)是一款功能强大、界面简洁的主流视频点播服务器,它可以为点播视频提供跨浏览器、多平台播放的服务[3]。同时其可实现流媒体视频的分发、视频切片、管理用户等功能,而且与其它流媒体分发服务器相比较,进行HLS 设置也十分简单,因此将基于HLS 开发的视频点播系统推向市场,将会受到广大用户的欢迎。HLS 是一种基于HTTP 的自适应流媒体技术,它可以根据当前用户网络带宽的变化,通过普通的Web 服务器端自动切换成不同编码速率的文件,向用户提供更舒适的观影环境[4]。
HLS 的工作原理是对整个视频流进行切片分段,下载后放入不同的备用源。当视频切片正在播放时,点播系统的客户端将根据网络情况进行备用源选择,以不同的速率下载相同的资源,并且允许点播窗口适应不同的数据速率。根据HLS 的工作原理,将其分为三部分:内容准备服务器、视频内容分发器及点播客户端[5]。其中内容准备服务器由编码器和流分割器组成。内容准备服务器可以对用户上传的视频进行编码,并将编码后的视频进行切片,保存为TS 文件。为了方便找到TS 文件,切片的同时也生成了索引文件m3u8。视频内容分发器利用HTTP协议,通过Web 服务器将m3u8 格式的索引文件及TS文件传输至点播客户端,点播客户端则将下载好的TS 文件进行组合,最后进行解码播放[6]。HLS进行视频流处理的基本架构如图1所示。
图1 HLS基本架构
1.2 FFFFmmppeegg
FFmpeg是一个常见于处理视频、数字音频的命令行工具。可以通过它来对视频流进行记录、转换、切片等。FFmpeg采用两种许可证进行视频流的处理。通过FFmpeg将输入的视频或音频进行流编码,然后进行切片。同时生成索引文件m3u8,为后期在视频播放界面的内容分发做前期准备。FFmpeg主要由三个部分组成:第一部分包括音视频转码、用于播放视频的播放器ffplay.exe、将视频进行转换的转换器ffmpeg.exe、流媒体服务器ffserver.exe 和视频流分析器ffprobe.exe;第二部分提供了各个不同平台编译完成的库,常见的如音视频编码器和解码器libavcodec;第三部分是它拥有多个依赖的第三方接口。
FFmpeg 可以部署在多个平台下进行调用,以ertong.rmvb 视频为例介绍FFmpeg 的常用功能:转码和切片[7]。
(1)转码命令如下:
(2)切片:是通过调用FFmpeg 的命令行工具,对转码的TS文件进行切片。同时生成.m3u8索引文件。其命令如下:
2 系统设计
2.1 系统架构
基于HLS 的视频点播系统针对的用户群体是有点播视频需求的用户及管理员。通过对点播视频用户的需求进行调研及分析,本系统将用户分为两类,注册系统用户成为会员,未注册用户为非会员。对会员提供的功能为:用户登录及注册、会员信息管理、视频点播、视频上传。对非会员只能进行视频点播。对管理员提供的功能为:视频管理,会员信息管理,管理员信息管理。系统功能如图2所示。
图2 系统功能模块
基于HLS 的视频点播系统使用了ThinkPHP框架进行开发,结合Vue、JavaScript 技术,统一把管理员及用户基本信息、视频的切片TS 文件、m3u8 索引文件存放到MySQL 数据库表中,方便管理的同时也提高了用户的观影体验。
2.2 数据库设计
针对系统需求,本系统的数据库设计三张表,其中一张用于存储用户信息(表1),一张用于存储管理员信息(表2),一张用于存储视频信息(表3)。
表1 用户表
表2 管理员表
表3 视频信息表
随着大数据时代的来临,大量多媒体内容的引入,目前浏览器服务器的页面容量逐渐增加。在小数据负载下,服务器的性能尚好,但如果有人上传大量视频,势必会造成进程与线程的多开销,用户访问系统的延迟性增加,吞吐率也会降低,严重时可能导致CPU 瓶颈,系统崩溃[8]。这会给一个视频点播系统带来毁灭性的打击。因此,在数据库设计时,本系统也考虑到了用户访问频率增大、视频量激增等问题出现时的解决方案。本系统在Web 服务器缓冲算法和预读策略采用的是近期最少使用算法(LRU),该算法可以通过跟踪并保持内核文件缓冲有足够多的空闲空间,来减少乃至消灭内核的管理线程运行的机会,达到由应用程序控制系统缓冲的目的[9]。LRU 算法的原理是读取大容量数据的磁盘速度较快,在其他条件相近时优先考虑替换大容量数据,通过这种替换算法可以使缓冲的命中率得到提高,同时将保留的空间存储更多的小对象,以便播放视频时给用户提供更便捷的使用性。
2.3 系统实现
进入视频点播系统,即可看到如图3所示的界面。
图3 PC端与移动端主界面
最上面是用户可以点播的视频分类,用户可以通过该分类选择点播影片视频、搞笑视频、会员原创视频等六类视频。中间轮播图部分展示的是视频推荐模块,随便点击一个视频,即可进入播放界面观看视频。若不进行选择,视频播放界面将默认选择HLS 播放源进行播放。点击界面中的播放按钮开始播放,如图4所示。
图4 PC端与移动端播放界面
打开火狐浏览器的Firebug,如图5 所示,可以看到Firebug中视频在播放时TS文件分片的详细情况。
图5 TS分片GET情况
3 结语
本文提出了一种基于HLS 技术的视频点播系统,该系统可以很好地实现视频流媒体的分发、管理用户、快速播放视频、管理视频分发等功能。该系统可以满足用户跨平台、不同流媒体分发系统播放、跨浏览器的用户。相对于其它流媒体播放器,该视频点播系统界面更为简洁,设置起来也比较简单,会受到更多用户的点播欢迎。