ffmpeg+nginx搭建HLS 推流

因项目需要,需要在开发环境搭建一个HLS 推流。实现步骤如下:

安装ffmpeg

bash 复制代码
yum install ffmpeg -y

在一个目录下上传001.mp4、002.mp4作为测试推流的原始文件。使用ffmpeg 进行转换。

001.sh

bash 复制代码
#!/bin/sh
`在这里插入代码片`nohup ffmpeg -stream_loop -1 \
  -i /data/public/video/mp4/001.mp4 \
  -c:v libx264 -preset veryfast -crf 23 \
  -c:a aac -b:a 128k \
  -hls_time 4 \
  -hls_list_size 20 \
  -hls_flags delete_segments \
  -f hls \
  /data/public/video/m3u8/001/index.m3u8 \
  > /data/public/video/m3u8/001/ffmpeg.log 2>&1 &

002.sh

bash 复制代码
#!/bin/sh
nohup ffmpeg -stream_loop -1 \
  -i /data/public/video/mp4/002.mp4 \
  -c:v libx264 -preset veryfast -crf 23 \
  -c:a aac -b:a 128k \
  -hls_time 4 \
  -hls_list_size 20 \
  -hls_flags delete_segments \
  -f hls \
  /data/public/video/m3u8/002/index.m3u8 \
  > /dev/null 2>&1 &

配置Nginx

bash 复制代码
# 核心配置:代理 HLS 视频目录
location /hls/ {
    # 1. 指定视频文件在服务器上的实际根目录
    # 注意:路径末尾的 '/' 很重要
    alias /data/public/video/m3u8/;

    # 2. 正确设置 MIME 类型,这是 HLS 播放的关键
    types {
        application/vnd.apple.mpegurl m3u8;
        video/mp2t ts;
    }

    # 3. 解决跨域问题 (CORS),允许前端页面访问
    add_header 'Access-Control-Allow-Origin' '*';
    add_header 'Access-Control-Allow-Methods' 'GET, OPTIONS';
    add_header 'Access-Control-Allow-Headers' 'Range';
    
    # 4. 优化缓存策略
    # m3u8 文件更新频繁,不缓存或缓存时间很短
    # ts 分片文件生成后不变,可以长期缓存
    expires 1y;
    add_header Cache-Control "public, immutable";
}

两个访问地址分别如下:

https://192.168.31.100/hls/001/index.m3u8

https://192.168.31.100/hls/001/index.m3u8

相关推荐
St_rive20 小时前
webUI自动化实现及封装
运维·自动化
xx~t20 小时前
嵌入式——Linux软件编程2
linux·运维·服务器·c语言·学习方法
Shell运维手记20 小时前
Linux (挂载|rpm|yum|源码编译)
linux·运维·笔记·网络协议·bash
-今昭-20 小时前
MFS高可用负载均衡
运维·负载均衡
ITyunwei098720 小时前
SSL 证书过期排查实战:openssl + Nginx 4步从发现到续签
运维·网络
郝开21 小时前
Docker Compose 本地环境搭建:kkFileView
运维·docker·容器
QYR_1121 小时前
2032年气相分解设备市场规模达2.25亿美元:VPD向高灵敏度、自动化晶圆污染检测升级
运维·自动化
RisunJan21 小时前
Linux命令-vgchange(修改 LVM 卷组属性)
linux·运维·服务器
仓储管理员202521 小时前
不同业务场景下,如何匹配适配的WMS系统?
大数据·运维·云计算·精选
Είναι η κοπέλα21 小时前
游戏窗口自动化点击与防误点设计:模板匹配 + 区域限制 + 强制置顶
运维·游戏·自动化