HLS流媒体服务器简单构建
发布网友
发布时间:2024-09-05 10:05
我来回答
共1个回答
热心网友
时间:2024-11-16 04:39
当前几乎所有的长视频、短视频都适用基于物理切片的自适应码率http流媒体传输技术,包括HLS(Apple)和DASH(MPEG)。在流媒体传输场景下,数据包传输是渐进式的,并且可以根据网络环境自适应切换到合适的视频质量上。
我们的研究内容为流媒体传输网络性能分析,因此本文旨在使用最简单的方式,快速构建一个HLS流媒体传输场景,只包括内容分发服务器和客户端。
观看本文需要你对流媒体传输协议拥有一定的了解。
简单来说,整个流媒体传输服务,面向用户的最后一个端到端传输为(建立TCP端到端连接)
CDN服务器 <----> 客户端
整体过程为:
自己下载一个视频,然后使用scp命令上传到云服务器指定路径即可。
可以参考菜鸟编程:
FFmpeg是一个开源跨平台的音视频处理工具集,它包含了多个用于处理音频、视频、字幕等多媒体格式的库和工具。FFmpeg可以对多媒体进行编解码、转码、剪辑、裁剪、合并、提取、过滤等操作,同时也支持流媒体的处理。
FFmpeg最初是由Fabrice Bellard开发的,现在由一群志愿者维护。它可以在多个操作系统上使用,包括Windows、MacOS、Linux等,同时也支持多种语言的绑定,如C、C++、Python等。由于其功能强大且免费开源,FFmpeg被广泛应用于多媒体相关的领域,如视频网站、电影、电视等领域。
在Linux(ubuntu20.04)上安装ffmpeg
视频切片
其中,动物世界-2018_HD.mp4是要切割的视频文件名,-c copy -map 0表示直接复制原始视频流,-f segment表示将视频分段,-segment_time 10表示每段视频的时长为10秒,-segment_list playlist.m3u8表示生成m3u8索引文件,-segment_format mpegts表示每个分段视频的格式为ts,output_%03d.ts表示输出文件的文件名模板。
我的视频被切割成780个ts切片和1个playlist.m3u8,可以创建一个文件夹整理一下。
当前我们对ts和m3u8在服务器上,我们使用一个本地的播放器是无法访问到该资源的,需要使用代理服务器暴露出该资源。
当下最流行的的Http代理服务器有:
这里使用Nginx作为我们代理服务器
还需要用到的命令
参考这篇博文修改文件配置信息
比如我想实现http代理的的文件路径为
/home/admin
添加配置信息
保存退出,重启nginx服务
在你本地的电脑上即可访问到服务器上的该文件夹
有很多支持m3u8的播放器,在线的也有一些,我的电脑上下载了VCL播放器
还有多种在线m3u8播放器
在URL框中添上相应的m3u8文件即可播放视频
最初的目标是构建端到端的视频传输场景,本文简单介绍了一个如何实现播放HLS视频流的过程。本文中涉及到的相关技术或工具仅作为一个展示,没有过多谈论工具的使用细节。想要实现更复杂的个人业务请自行查阅相关资料,如FFmpeg、Nginx、VCL播放器等。