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

相关推荐
ping某13 小时前
为什么 Nginx 明明监听了 80,转发后端时却用了 4xxxx 端口?
后端·nginx
大树882 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠2 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质2 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工2 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智3 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_3 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉3 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造
AC赳赳老秦3 天前
用 OpenClaw 搭建服务器故障应急响应系统,自动处理 80% 常见运维故障
android·运维·服务器·python·rxjava·deepseek·openclaw
java_cj3 天前
深入kube-apiserver认证机制:从Bearer Token到mTLS的完整认证链解析
linux·运维·服务器·云原生·容器·kubernetes