# 自制HLS视频流
# 环境
- 操作系统:CentOS 7
# 简介
FFmpeg 是一个功能强大的开源多媒体处理工具集,包含 libavcodec、libavformat 和 libavutil 等核心库。它支持多种音视频格式的转换、采样率设置、流媒体捕获以及视频尺寸调整等操作。
# 安装步骤
# 1. 启用EPEL仓库
sudo yum install epel-release
# 2. 启用RPM Fusion仓库
sudo yum localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm
# 3. 安装FFmpeg
sudo yum install ffmpeg ffmpeg-devel
# 4. 验证安装
ffmpeg -version
# HLS流媒体制作
# 示例:将demo.mp4
转换为HLS格式
ffmpeg -i demo.mp4 \
-c:v libx264 \
-preset ultrafast \
-crf 23 \
-c:a aac \
-b:a 128k \
-map 0:v:0 \
-map 0:a:0 \
-f hls \
-hls_time 4 \
-hls_list_size 0 \
-hls_base_url "demo/" \
-hls_segment_filename "demo/demo_%03d.ts" \
demo.m3u8
# 参数说明
参数 | 说明 |
---|---|
-i demo.mp4 | 指定输入文件 |
-c:v libx264 | 使用H.264编码器 |
-preset ultrafast | 使用最快的编码预设 |
-crf 23 | 视频质量参数(范围0-51,值越小质量越高) |
-c:a aac | 使用AAC音频编码 |
-b:a 128k | 设置音频比特率为128kbps |
-map 0:v:0 -map 0:a:0 | 选择第一个视频和音频流 |
-f hls | 指定输出格式为HLS |
-hls_time 4 | 设置每个TS切片时长为4秒 |
-hls_list_size 0 | 播放列表包含所有切片 |
-hls_base_url "demo/" | 设置切片文件的基础路径 |
-hls_segment_filename "demo/demo_%03d.ts" | 指定切片文件命名格式 |
# Nginx服务器配置
# 文件存放路径
/usr/share/nginx/html/video
# Nginx配置示例
server {
listen 80;
server_name xxx.com;
location /hls/ {
alias /usr/share/nginx/html/video/;
add_header Access-Control-Allow-Origin *;
add_header Cache-Control no-cache;
expires 30s;
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
}
}
# 配置生效
sudo systemctl restart nginx
# 播放链接示例
http://xxx.com/hls/demo.m3u8
# 播放方法
- 打开支持HLS的播放器(如VLC、PotPlayer等)
- 添加网络流,输入
.m3u8
链接 - 开始播放
# 注意事项
- 确保服务器防火墙开放80端口
- 视频文件路径和Nginx配置中的路径需保持一致
- 可根据实际需求调整HLS切片时长和视频质量参数
- 视频太长,可以将视频切割后再分片,切割工具 (opens new window)