在搭建HLS流媒体服务器之前,请确保具备以下条件:
- 一台运行 Ubuntu 20.04+ 或 Debian 11+ 的服务器,拥有root权限
- 一个指向服务器的域名(生产环境推荐)
- 基本的Linux命令行操作知识
- 至少2GB内存和20GB可用磁盘空间
HLS(HTTP Live Streaming)允许您通过标准HTTP协议提供视频服务,并支持自适应码率,实现跨设备和网络条件下的流畅播放。
在搭建HLS流媒体服务器之前,请确保具备以下条件:
HLS(HTTP Live Streaming)允许您通过标准HTTP协议提供视频服务,并支持自适应码率,实现跨设备和网络条件下的流畅播放。
RTMP模块使Nginx能够通过RTMP协议接收直播视频流,并实时转换为HLS格式。您可以选择从源码编译或使用预编译包安装。
方案一:通过包管理器安装(Ubuntu/Debian)
sudo apt update
sudo apt install nginx libnginx-mod-rtmp -y
方案二:从源码编译安装
sudo apt install build-essential libpcre3-dev libssl-dev zlib1g-dev -y
git clone https://github.com/arut/nginx-rtmp-module.git
wget http://nginx.org/download/nginx-1.24.0.tar.gz
tar -xzf nginx-1.24.0.tar.gz
cd nginx-1.24.0
./configure --with-http_ssl_module --add-module=../nginx-rtmp-module
make && sudo make install
安装完成后,使用 systemctl status nginx 验证Nginx是否正常运行。
编辑 /etc/nginx/nginx.conf 文件,添加RTMP和HLS配置块。此配置同时支持直播和点播功能,并包含正确的CORS响应头以支持跨域访问。
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
hls on;
hls_path /var/www/html/hls;
hls_fragment 3;
hls_playlist_length 60;
}
}
}
http {
server {
listen 80;
server_name your-domain.com;
location /hls {
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /var/www/html;
add_header Cache-Control no-cache;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
}
}
}
配置完成后重启Nginx:sudo systemctl restart nginx。CORS响应头对于像本播放器这样的Web播放器访问HLS流至关重要。
FFmpeg是业界标准的视频编码和推流工具。使用以下命令推送直播流或将现有视频转换为HLS格式。
推送RTMP直播流到服务器:
ffmpeg -re -i input.mp4 \
-c:v libx264 -preset veryfast -b:v 3000k \
-c:a aac -b:a 128k -f flv \
rtmp://your-server-ip/live/stream
直接转换点播文件为HLS分片:
ffmpeg -i video.mp4 \
-c:v libx264 -c:a aac \
-hls_time 6 -hls_list_size 0 \
-hls_segment_filename 'segment_%03d.ts' \
output.m3u8
对于自适应码率流,需要编码多个画质级别,并创建一个引用各档位播放列表的主播放列表(Master Playlist)。
学习M3U8播放列表和HLS流媒体的基础知识。掌握自适应码率、多码率播放列表、.ts分片,并理解M3U8与MP4的区别。
修复常见的HLS服务器问题,包括CORS配置错误、缓冲问题、.ts分片404错误以及权限和所有权问题。
获取14个常见M3U8和HLS问题的答案,涵盖CORS修复、自适应码率、DRM支持、延迟降低和播放器嵌入方法。
比较HLS和MPEG-DASH流媒体协议。了解编解码器支持、DRM生态系统、延迟性能以及如何选择适合您需求的协议。