首页 > 系统相关 >Nginx配置搭建m3u8格式的视频播放服务

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

时间:2024-03-22 19:23:31浏览次数:32  
标签:视频 FFmpeg nginx -- m3u8 hls Nginx 播放

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

 

本文采用Nginx+FFmpeg来进行m3u8格式的视频播放服务,解决:nginx如何搭建视频服务器,要求流媒体服务,视频hls分片加载

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

参数说明

-i test.mp4:指定要处理的视频文件。

-hls_time 10:指定每个切片的时间为10秒。

-hls_list_size 0:切片列表限制,无限制。

-hls_segment_filename ./hls/test_%05d.ts:自定义切片的文件名,这里会生成类似:test_00001.ts的视频文件。

./hls/test.m3u8:保存切片信息的m3u8文件。

参考另一种mp4转m3u8

ffmpeg -i /m3u8/demo.mp4 -c:v copy -c:a copy -f ssegment -segment_format mpegts -segment_list /m3u8/hls/test.m3u8 -segment_time 10 /m3u8/hls/test%05d.ts
m3u8/demo.mp4输入的mp4文件
m3u8/hls/test.m3u8输出的m3u8文件
-segment_time设置每片的长度,单位为秒
-segment_list :段文件的名称,%05d表示5位数字

生成的效果是:将demo.mp4视频文件每10秒生成一个ts文件,最后生成一个m3u8文件,m3u8文件是ts的索引文件。

修改nginx配置文件

需要加入一段加载视频分片后的配置信息,这样才能正常访问切片后的视频源

server {
    listen 80;
    server_name your_domain.com;  # 替换为您的域名或IP地址

    location /videos {
        root /path/to/hls;  # 替换为您的视频文件所在的目录
        add_header Cache-Control no-cache;
        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Allow-Credentials' 'true';
        types {
            application/vnd.apple.mpegurl m3u8;
            video/mp2t ts;
        }
    }
}

注意:root的配置只能配置到vidoes上下文路径的上一级目录,否则视频地址会出现404错误

检查Nginx配置文件的语法是否正确

sudo nginx -t

至此,您已经成功搭建了一个基于Nginx的视频服务器,可以使用HLS分片加载流媒体视频

将您的视频文件放置在配置中指定的目录下,并通过 http://your_domain.com/your_video_file.m3u8 的URL访问视频,其中 your_domain.com 是您的域名或IP地址,your_video_file 是您的视频文件名。

请注意,确保视频文件已经通过HLS分片切割成 .m3u8 和 .ts 文件,并存储在合适的目录中。您可以使用工具如FFmpeg等来进行HLS分片切割。

标签:视频,FFmpeg,nginx,--,m3u8,hls,Nginx,播放
From: https://www.cnblogs.com/sexintercourse/p/18090287

相关文章

  • C#的播放资源文件里的音频例子 - 开源研究系列文章
          今天无聊,想起原来开发的待办列表TodoList里还缺个提醒声音,于是就添加了提供声音模块代码。然后想着记录一下,让更多的读者能够复用这个模块代码,于是就有了此博文。这个例子只是用于播放资源文件里的wav音频文件,如果要播放本地文件,那请读者自己添加代码,直接调用操作类......
  • Nginx+ModSecurity(WAF) 加强 Web 应用程序安全性
    Nginx和ModSecurity加强Web应用程序的安全性在当今互联网时代,Web应用程序的安全性变得尤为重要。为了保护应用程序和用户的数据免受恶意攻击和漏洞利用,使用合适的工具和技术是必不可少的。本文将探讨如何使用两个流行的工具——Nginx和ModSecurity,来加强Web应用程序的......
  • nginx.conf常用配置
    server{listen9001;//使该服务器块监听在TCP端口9001上listen9000sslhttp2;//使该服务器块在TCP端口9000上监听HTTPS请求,并启用HTTP/2协议。server_namesiyuan.terwergreen.com;//定义该服务器块的服务器名称为siyuan.terwergreen.......
  • Nginx服务
    NGINX服务目录第一章·Nginx简介4·什么是nginx4·正向代理4·反向代理5·负载均衡5·动静分离6第二章·Nginx的安装7·yum方式安装7·源码包方式安装7·测试8第三章·Nginx常用命令9第四章·Nginx的配置文件11·全局块11·events块11·http块......
  • 基于SDL的yuv视频播放
    ##1基于SDL的yuv视频播放YUV的播放涉及到创建窗口和创建线程,在窗口中传入YUV码流数据,以达到播放视频的目的。##2代码例子#include<stdio.h>#include<string.h>#include<SDL.h>//自定义消息类型#defineREFRESH_EVENT(SDL_USEREVENT+1)//请求画面刷......
  • nginx故障实例--附带排查思路
    nginx故障实例--附带排查思路一Nginx工作场景Nginx是最受欢迎的HTTP服务器之一,在我们公司扮演着举足轻重的作用,做为我们公司的核心组件之一,在整个访问链路上是不可或缺的一环,而且,Nginx组件、模块、版本众多,所以如何管理好Nginx将显得至关重要.Beforewegetstarted,......
  • nginx入门-31-学习笔记
    nginx入门-31-学习笔记环境环境:虚拟机ip:10.0.1.0网关:10.0.1.2子网掩码:255.255.255.0测试机器ip:10.0.1.101概念1.安装nginx软件安装:yum安装yuminstallepel-releaseyuminstallnginx-ysystemctlstartnginx编译安装(生产环境)yum-yinstallpcr......
  • <sa8650>sa8650 video-之-vidc_test_app测试播放mp4
    <sa8650>sa8650video-之-vidc_test_app测试播放mp41、前言2、编写测试xml3、测试运行4、其它5、参考1、前言在SA8650中有一个测试video的测试程序那就是vidc_test_app;vidc_test_app的可是视频的编解码功能;本文主要分析讲解解码mp4文件的测试过程;详细内容下面分......
  • Nginx 反向代理
    nginx反向代理的好处提高访问速度因为nginx本身可以进行缓存,如果访问的同一接口,并且做了数据缓存,nginx就直接可把数据返回,不需要真正地访问服务端,从而提高访问速度。进行负载均衡所谓负载均衡,就是把大量的请求按照我们指定的方式均衡的分配给集群中的每台服务器。保......
  • nginx localtion 匹配规则
    1、语法规则 语法规则:location[=|~|^~*|^~]/uri/{…}表示精确匹配,这个优先级也是最高的^~表示uri以某个常规字符串开头,理解为匹配url路径即可。nginx不对url做编码,因此请求为/image/20%/aa,可以被规则^~/image//aa匹配到(注意是空格)。~表示区分......