搭建私人 HLS 服务器的三种技术选型
选型前的三个问题
动手之前先回答:播直播还是点播?观众是什么量级?愿意投入多少维护精力?三个答案凑齐,下面的方案基本能自己浮出来。
Nginx-RTMP:老牌稳健派
给 Nginx 挂上 RTMP 模块,推流进来自动切成 HLS 文件对外服务:
rtmp {
server {
listen 1935;
application mylive {
live on;
hls on;
hls_path /data/hls;
hls_fragment 4s;
hls_cleanup on;
}
}
}
OBS 把推流地址填成 rtmp://服务器IP:1935/mylive 即可开播。这套组合内存占用小、行为可预期;代价是配置项繁多,且官方主线多年未大更新,遇到疑难要做好翻文档的准备。
SRS:一站式全能选手
SRS 把推流接收、切片、HTTP 分发乃至 WebRTC 低延迟输出打包成一个二进制,几十行配置就能跑起来。想同时输出 HTTP-FLV 与 HLS,或者将来要做连麦,它省心得多,中文资料与社区问答也相当齐全。
FFmpeg 切片 + 静态托管:最简主义
点播场景根本不需要常驻流媒体进程——离线切片,静态分发:
ffmpeg -i movie.mp4 -c:v libx264 -c:a aac -f hls \
-hls_time 8 -hls_list_size 0 -hls_segment_filename "seg%03d.ts" movie.m3u8
把生成的 m3u8 与 TS 交给任意静态服务器或对象存储加 CDN,播放器即可拉取。这套架构没有状态、几乎不会宕机,也是公网分发成本最低的方式。
按场景对号入座
- 家庭自用、朋友间看直播:Nginx-RTMP 或 SRS 单机足够;
- 点播课程、素材库:静态托管加 CDN 走天下;
- 互动直播、延迟敏感:SRS 搭配 WebRTC 输出。
搭好之后想压一压延迟,请移步 HLS 延迟优化;视频源做好后,可到 M3U8Lab 首页 快速验证播放是否正常。播放列表里各标签的含义,参考 EXT-X 标签拆解。