Nginx配置搭建m3u8格式的视频播放服务

发布时间 2023-06-29 16:39:10作者: 子墨老师

本文采用Nginx+FFmpeg来进行m3u8格式的视频播放服务

FFmpeg概念介绍

FFmpeg是一个开源的计算机程序,可以用来记录、转换、编辑和流化数字音频和视频。FFmpeg的名称来自MPEG视频编码标准,前面的“FF”代表“Fast Forward”。FFmpeg既是一个程序库,也是一个命令行工具,可以对各种格式的音视频或图像

FFmpeg支持视频格式

FFmpeg支持多种视频格式,包括但不限于:AVI、WMV、MOV、FLV、MKV、MP4、MPEG、3GP等¹²⁴。如果您想了解更多关于FFmpeg的信息,可以参考以下链接:¹²⁴¹: https://zhuanlan.zhihu.com/p/117523405
²: http://ruanyifeng.com/blog/2020/01/ffmpeg.html
⁴: https://ffmpeg.org/

源: 与必应的对话, 2023/6/29
(1) FFMPEG命令入门到提高,一篇文章就够了 - 知乎. https://zhuanlan.zhihu.com/p/117523405.
(2) FFmpeg 视频处理入门教程 - 阮一峰的网络日志. http://ruanyifeng.com/blog/2020/01/ffmpeg.html.
(3) ffmpeg所支持的所有视频或音频文件类型 - CSDN博客. https://blog.csdn.net/COCO56/article/details/107098664.
(4) 如何用FFMpeg生成视频 - 知乎. https://zhuanlan.zhihu.com/p/465418866.
(5) FFmpeg概述及编码支持 - 知乎. https://zhuanlan.zhihu.com/p/37516093.

安装Nginx,还是简单说一下

1.安装gcc

$ yum install -y gcc

2.安装第三方库:pcre 和 zlib

$ yum install -y pcre pcre-devel
$ yum install -y zlib zlib-devel

3.检查gcc是否安装成功

$ gcc --version

 4.下载安装包

// 使用前要确保系统已经安装了wget
// 如果没有则执行 yum -y install wget 进行安装
$ wget https://nginx.org/download/nginx-1.21.6.tar.gz

5.安装nginx

// 解压
$ tar zxvf nginx-1.21.6.tar.gz

// 进入解压后的目录
$ cd nginx-1.21.6

// 安装
$ ./configure --prefix=/usr/local/nginx  // /usr/local/nginx 指定的安装目录

// 编译
$ make
$ make install

6.nginx相关命令

$ ./nginx					    //启动nginx
$ ./nginx -s stop			 	//停止nginx
$ ./nginx -s quit 			    //优雅的关闭,在退出前完成已经接受的连接请求
$ ./nginx -s reload 			// 重新加载nginx配置

7.开启nginx端口号

$ firewall-cmd --state  // 查看防火墙状态
$ systemctl stop firewalld.service  // 关闭防火墙(不推荐使用)
$ systemctl disable firewalld.service  // 阻止防火墙开机启动
$ firewall-cmd --reload // 重启防火墙
$ firewall-cmd --zone=public --list-ports // 查看防火墙所有开放的端口
$ firewall-cmd --permanent --zone=public --remove-port=80/tcp // 关闭80端口
$ firewall-cmd --zone=public --add-port=80/tcp --permanent  // 放行防火墙80端口(–permanent永久生效,没有此参数重启后失效)
$ firewall-cmd --reload // 重启防火墙

安装ffmpeg

1.安装EPEL软件源

sudo yum install -y epel-release

2.安装Nux Dextop软件源,它提供了FFmpeg的最新版本

sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm

3.安装FFmpeg及其相关依赖

sudo yum install -y ffmpeg ffmpeg-devel

4.验证FFmpeg安装

ffmpeg -version

视频进行格式转换,生成m3ug+ts分片文件

ffmpeg \
-i test.mp4 \
-hls_time 10 \
-hls_list_size 0 \
-hls_segment_filename ./hls/test_%05d.ts \
./hls/test.m3u8

参数说明

  1. -i test.mp4:指定要处理的视频文件。
  2. -hls_time 10:指定每个切片的时间为10秒。
  3. -hls_list_size 0:切片列表限制,无限制。
  4. -hls_segment_filename ./hls/test_%05d.ts:自定义切片的文件名,这里会生成类似:test_00001.ts的视频文件。
  5. ./hls/test.m3u8:保存切片信息的m3u8文件