news 2026/2/8 18:29:10

基于Docker部署M3U8流媒体

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于Docker部署M3U8流媒体

本方案基于Docker + Nginx-RTMP + Nginx,实现将本地 MP4 文件转换为 24/7 循环播放的 HLS (M3U8) 直播流。

一、 环境准备

1、操作系统

  • 已安装宝塔面板的 Linux 服务器(推荐 CentOS 7+ 或 Ubuntu 20.04+)。

2、基础软件

  • 宝塔面板内已安装Nginx
  • 系统已安装Docker(可在宝塔“软件商店”一键安装)。
  • 系统已安装FFmpeg(支持libx264的版本)

下载支持 libx264 的 FFmpeg:

https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz

解压后,将 ffmpeg 和 ffprobe 复制到 /usr/bin 目录下。

二、启动 Docker 容器

在终端执行以下命令,启动 RTMP 转流服务器。需要将 Docker 内部的流文件目录映射到宝塔的站点目录下,方便直接访问。

注意:先创建/hls文件夹。

docker run -d --name nginx-rtmp \ -p 1935:1935 \ -p 8088:8080 \ -v /projects/nginx.conf:/etc/nginx/nginx.conf \ -v /projects/hls:/opt/data/hls \ alfg/nginx-rtmp

启动后会生成 /projects/nginx.conf

里面包含推流的链接示例:

rtmp://localhost:1935/stream/$name

查看 docker 输出:

docker logs --tail 200 nginx-rtmp

三、设置 hls 目录权限

用 ACL 的“默认权限(default ACL)”,让将来新生成的所有文件/目录自动拥有权限,后面nginx访问不会再报错403/Permission denied

# 安装 ACL yum -y install acl # 永久读写执行权限 setfacl -R -m u:www:rwx /projects/hls # 保证新文件也有权限 setfacl -R -d -m u:www:rwx /projects/hls # 验证 getfacl /projects/hls | sed -n '1,20p'

四、启动 FFmpeg 循环推流

使用 FFmpeg 对视频裁剪+转码:

ffmpeg -i video.mp4 -t 00:15:00 -c:v libx264 -c:a aac output.mp4

启动循环推流:

nohup ffmpeg -re -stream_loop -1 -i /projects/input.mp4 -c:v libx264 -preset veryfast -tune zerolatency -profile:v baseline -level 3.1 -g 60 -keyint_min 60 -sc_threshold 0 -c:a aac -b:a 128k -ar 44100 -f flv "rtmp://127.0.0.1:1935/stream/test" > /tmp/log1.txt 2>&1 &

性能优化建议:

如果服务器 CPU 较弱,且 MP4 已经是 H.264 编码,可以将 -c:v libx264 改为 -c:v copy,这样可以极大降低 CPU 占用。

查看 /projects/hls 目录,看是否有生成 M3U8 文件和 ts 文件。

五、宝塔 Nginx 配置(HTTP / HTTPS 播放)

在 宝塔 → 网站 → 你的站点 → 配置文件 中加入:

location ^~ /hls/ { alias /projects/hls/; types { application/vnd.apple.mpegurl m3u8; video/mp2t ts; } add_header Cache-Control no-cache; add_header Access-Control-Allow-Origin * always; if ($request_method = OPTIONS) { return 204; } disable_symlinks off; }

查看 nginx 错误输出:

tail -n 30 /www/wwwlogs/my.domain.com.error.log

六、 播放与验证

直播流生成的地址如下,您可以使用 VLC 播放器或网页 HLS 播放器测试:

  • 视频流http://你的域名/hls/test_****/index.m3u8

在服务器上使用CURL指令测试视频流链接是否返回200

curl -I http://my.domain.com/hls/test_240p264kbs/index.m3u8

前端HTML嵌入视频流:

<video controls autoplay muted loop playsinline> <source src="http://my.domain.com/hls/test_720p2628kbs/index.m3u8" type="application/x-mpegURL"> 您的浏览器不支持 HLS 原生播放。 </video>
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/6 10:00:11

粘贴WORD到CKEDITOR时表格变形如何处理?

军工级富文本内容迁移解决方案技术评估日志 2023年X月X日 于长沙研发中心 一、需求拆解与技术调研 1.1 核心需求矩阵 需求类型技术指标信创要求Word粘贴保留形状/表格/公式等复杂样式&#xff0c;图片自动转存OSS支持银河麒麟V10飞腾FT-2000环境文档导入支持Office/PDF格式解…

作者头像 李华
网站建设 2026/2/3 7:05:01

EXCEL数据导入CKEDITOR后为何无法编辑?

要求&#xff1a;开源&#xff0c;免费&#xff0c;技术支持 编辑器&#xff1a;ckeditor 前端&#xff1a;vue2,vue3.vue-cli 后端&#xff1a;asp,java,jsp,springboot,php,asp.net,.net core 功能&#xff1a;导入Word,导入Excel,导入PPT(PowerPoint),导入PDF,复制粘贴word,…

作者头像 李华
网站建设 2026/2/7 6:17:20

GEO是什么?小白怎么做?为什么它能火?

最近大家可能注意到了&#xff0c;很多人都在说GEO&#xff0c;那是因为AI火起来了&#xff0c;所以带来了一个新的词汇和新的玩法&#xff0c;说通俗一点GEO就是AI搜索引擎&#xff0c;过去我们在百度、谷歌来搜索那叫SEO&#xff0c;现在大家喜欢用AI来搜索了&#xff0c;喜欢…

作者头像 李华
网站建设 2026/2/3 10:26:42

AI媒体助理软件批量文章生成设置教程

配置批量生成文章的任务我们可以创建多条&#xff0c;让他同时进行生成任务&#xff08;使用web模型的时候不可以&#xff0c;只支持API模型批量同时进行&#xff0c;web模型只能单线程&#xff09;添加任务我们可以选择任务名称、文章分类、文字类型&#xff08;长文、短文、视…

作者头像 李华
网站建设 2026/2/3 8:21:38

国外论文参考文献怎么找:实用方法与资源指南

刚开始做科研的时候&#xff0c;我一直以为&#xff1a; 文献检索就是在知网、Google Scholar 里反复换关键词。 直到后来才意识到&#xff0c;真正消耗精力的不是“搜不到”&#xff0c;而是—— 你根本不知道最近这个领域发生了什么。 生成式 AI 出现之后&#xff0c;学术检…

作者头像 李华
网站建设 2026/2/4 16:07:16

【Oracle】Ubuntu 部署 Oracle 10g 的完整实战复盘

说实话&#xff0c;如果是新项目&#xff0c;我绝对不会首选 Oracle 10g。但工作中你难免会遇到一些老系统的迁移工作&#xff0c;这就没有办法了。之前我也分享过使用 Docker 来进行快速部署&#xff0c;但并不是每个项目都能允许我这样做&#xff0c;因此 Oracle 的 Linux 部…

作者头像 李华