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

相关推荐
Decay__11 小时前
VMware 安装 SQL Server 双节点 AlwaysOn 可用性组教程 —— WSFC、AG 与侦听器完整部署(系列核心篇)
运维·数据库·sql·mysql·架构
测试界的小码农11 小时前
【Linux 命令实战(06):Linux 文件权限管理,掌握 chmod、chown、chgrp】
linux·运维·服务器
陈希12312 小时前
负载均衡与高可用:LVS、HAProxy、Keepalived 实战
运维·负载均衡·lvs
StarsGreen15 小时前
ffmpeg中常用结构体以及函数简介以及版本变化情况
ffmpeg
SQL7716 小时前
IT运维发展史,一部宏伟史诗
运维·运维发展史
分布式存储与RustFS17 小时前
Terraform 状态文件老在本地丢、并发还撞锁:把 state 锁进 RustFS
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
csdn_aspnet17 小时前
macOS 10 、Docker 玩轉 MySQL
运维·mysql·macos·docker·容器·mac
Java码农也是农17 小时前
一篇文章讲清 NGINX 反向代理:location、proxy_pass、负载均衡与排错
nginx·负载均衡·后端开发·反向代理·proxy_pass
爱和冰阔落19 小时前
【Linux网络】TCP 半包粘包怎么解决?从长度报头、JSON 拆包到网络计算器完整实战
linux·运维·网络·tcp/ip
无奈笑天下1 天前
银河麒麟上nproc命令教程详解
linux·运维·服务器