使用nginx的rtmp模块搭建RTMP和HLS流媒体服务器

news2024/11/25 23:30:30

使用nginx的rtmp模块搭建RTMP和HLS流媒体服务器

文章目录

  • 使用nginx的rtmp模块搭建RTMP和HLS流媒体服务器
    • 环境搭建
    • 参数配置
    • 验证结果

前面文章中已经介绍了《使用nginx搭建rtmp流媒体服务器》和《使用nginx搭建HLS服务器》,其实nginx的RTMP模块本身就支持接收RTMP推流、提供RTMP拉流服务及HLS切片器功能,因此可以直接通过nginx的rtmp模块直接接收RTMP推流、对音视频流进行HLS切片,而不需要ffmpeg去生成切片。

环境搭建

操作系统操作centos 7版本,有关nginx源码下载、编译和安装过程,参照《使用nginx临时搭建rtmp服务器》文章,这里不做过多介绍

有关nginx的更多文章,请关注公众号壹零仓,发送nginx ,获取

参数配置

修改nginx.conf文件,修改后如下

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}

# rtmp配置
rtmp {
        server {
                listen 1935;
                chunk_size 4096;

                application live {
                        ##开启RTMP实时流推流和拉流服务,地址格式:rtmp://ip:1935/live/xxx
                        live on;
                        ##开启HLS切片服务
                        hls on;
                        ##HLS切片保存路径
                        hls_path /tmp/hls;
                        record off;
                }
        }
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }
        #HLS切片文件及索引文件拉取路径
        location /live{
            add_header Access-Control-Allow-Origin *;
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
            # HLS切片文件目录
            alias /tmp/hls;
            expires -1;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }     
    }

}

这里需要配置RTMP服务相关参数,开启RTMP实时推拉流,开启HLS,配置HLS切片及播放列表索引文件存放路径、切片长度、播放列表长度:

application live {
                        ##开启RTMP实时流推流和拉流服务,地址格式:rtmp://ip:1935/live/xxx
                        live on;
                        ##开启HLS切片服务
                        hls on;
                        ##HLS切片保存路径
                        hls_path /tmp/hls;
                        hls_fragment 4;
                        hls_playlist_length 30;
                        record off;
                }

然后配置HLS协议的HTTP服务,支持播放器拉取播放列表和切片文件:

location /live{
            add_header Access-Control-Allow-Origin *;
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
            # HLS切片文件目录
            alias /tmp/hls;
            expires -1;
        }

配置完成后,执行:/home/wangdenuan/nginx/sbin/nginx -s reload,使得配置生效。

验证结果

  • 在PC机上安装ffmpeg,具体安装方式可百度

  • 找一个可播放的RTSP地址,通过vlc播放器验证rtsp地址播放是否正常,这里以rtsp://admin:zxm10@@@@10.45.12.141/h264/ch1/main/av_stream为例:
    在这里插入图片描述

  • 打开命令提示行,输入如下ffmpeg命令,推送rtmp视频流到rtmp服务器,这里假设rtmp服务器IP为:10.45.12.29
    ffmpeg -i rtsp://admin:zxm10@@@@10.45.12.141/h264/ch1/main/av_stream -vcodec copy -acodec copy -f flv rtmp://10.45.12.29:1935/live/test
    ffmpeg推流命令成功后,出现如下图所示界面:
    4

  • 用vlc播放如下串流:rtmp://10.45.12.29:1935/live/test,验证是否rtmp拉流成功:
    在这里插入图片描述

  • 用VLC播放如下串流:http://10.45.12.29/live/test.m3u8,验证是否hls能够播放成功:
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/167940.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【jQuery】实现文件上传和loading效果

一、 jQuery实现文件上传1. 定义UI结构<!-- 导入 jQuery --><script src"./lib/jquery.js"></script><!-- 文件选择框 --><input type"file" id"file1" /><!-- 上传文件按钮 --><button id"btnUplo…

我们是存算一体化

从最初的计算和存储分离,随着技术的发展,存算一体化越来越被大家重视,成为了下一个发展浪潮。其实对于海量数据场景来说,我们更认为数据应该是存算协同的关系。存算一体化才是最高效的技术之一,但是目前真正的存算一体,或者说革命性地突破冯•诺伊曼架构的存算一体还未实…

考虑电能交互的冷热电区域多微网系统双层多场景协同优化配置(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

力扣sql基础篇(十)

力扣sql基础篇(十) 1 矩形面积 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # 纵坐标相同或者横坐标的两个点是不可能成为矩形的 # 使用inner join连接两个表的时候 考虑需不需要去重,如何去重也是很重要的(会有重复的两条数据,只是顺序不一样) S…

振弦采集模块配置工具VMTool通用串口调试模块

振弦采集模块配置工具VMTool通用串口调试模块 VMTool 扩展功能 双击主界面右侧扩展工具条可实现扩展功能区的显示与隐藏切换。 扩展功能包括串口调试、MODBUS、实时曲线及数据存储等几个功能模块。 扩展功能区显示效果如下。 串口调试模块直接使用当前已连接的 COM 端口&#…

redis集群启动

文章目录一、添加配置文件二、启动服务和集群三、集群操作四、故障恢复一、添加配置文件 一共8个文件 创建6个redisXXX.conf文件 6个文件的内容和下面的一样&#xff0c;但是要修改端口数值。例如&#xff1a;把下面的6379全部改为6380# 路径为redis.conf的绝对路径 include…

易基因2022年度DNA甲基化研究高分项目文章精选

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。回顾刚刚过去的2022年&#xff0c;易基因参与的DNA甲基化研究在细胞分化与发育、疾病发生发展及标志物筛选、环境因素暴露与响应等应用场景成果层出不穷&#xff0c;小编选取其中三个研究方…

挖掘HTTP请求走私漏洞

利用Burp插件挖掘HTTP请求走私 HTTP请求走私通常遗留在漏洞发现赏金项目中。但通过正确的插件&#xff0c;您 可以在下一个赏金项目中自动化地完成挖掘HTTP请求走私漏洞的过程。 了解HTTP请求走私 现代网站经常部署多个代理服务器用于转发用户请求到托管Web应用程序的真实服务…

linux free命令

free是指查看当前系统内存的使用情况&#xff0c;它显示系统中剩余及已用的物理内存和交换内存&#xff0c;以及共享内存和被核心使用的缓冲区。 选项&#xff1a; -b&#xff1a;以字节为单位显示。 -k&#xff1a;以K字节为单位显示。 -m&#xff1a;以兆字节为单位显示。 参…

JavaScript 库之 dyCalendarJS(日历)

JS 库之 dyCalendarJS&#xff08;日历&#xff09;&#xff09;参考获取使用导入CSSJS使用HTMLJavaScript代码总汇样式容器圆边颜色渐变阴影日历dycalendar.draw()举个栗子默认样式daymonth其他参考 项目描述DYClassRoom前往GitHub前往 获取 GitHub dyCalendarJSFrom jsDeli…

拼一个自己的操作系统(SnailOS 0.03的实现)

像文本模式一样显示字符串在拼操作系统的征程中&#xff0c;仅仅是画上一些简单的图形&#xff0c;显然是不够的。原因就在于&#xff0c;如果开发的过程中&#xff0c;出现了“臭虫”&#xff0c;而系统并不能显示任何有价值的信息&#xff0c;那我们岂不是两眼一抹黑&#xf…

【电子学会】2022年12月图形化四级 -- 简易抗疫物资管理系统

简易抗疫物资管理系统 1. 准备工作 (1)角色:从角色库中添加4个按钮,添加文字“增加”、“删除”、“修改”、“查询”,修改角色名字为“增加按钮”、“删除按钮”、“修改按钮”、“查询按钮”; (2)列表:新建列表“抗疫物资清单”。 2. 功能实现 (1)点击“增加按…

第三章 Linux中的shell与权限

第三章 Linux中的shell与权限一、linux的内核&#xff08;kernel&#xff09;与外壳&#xff08;shell&#xff09;1、内核与外壳的关系2、外壳的作用二、权限1、用户中的权限&#xff08;1&#xff09;超级用户&#xff1a;root&#xff08;2&#xff09;普通用户a.普通用户的…

超实用的微信公众号内容运营方案分享

公众号运营的本质就是图文生产&#xff0c;内容绝对是涨粉引流的关键。没有产出好的内容&#xff0c;这个公众号是绝对走不长远的。 公众号内容运营大致上可以分为两个大方向&#xff0c;一个是搭建完整的公众号内容体系&#xff0c;一个是创作具体的公众号推文内容&#xff0…

Sklearn标准化和归一化方法汇总(2):Min-Max归一化

Sklearn中与特征缩放有关的五个函数和类&#xff0c;全部位于sklearn.preprocessing包内。作为一个系列文章&#xff0c;我们将逐一讲解Sklearn中提供的标准化和归一化方法&#xff0c;以下是本系列已发布的文章列表&#xff1a; Sklearn标准化和归一化方法汇总(1)&#xff1a…

【现代机器人学】学习笔记十:机器人控制

这节的内容主要讲述在关节空间和任务空间中的运动控制中的反馈控制&#xff0c;力控制&#xff0c;运动-力混合控制以及阻抗控制、导纳控制&#xff0c;pid控制等内容。在之前的内容当中&#xff0c;往往不涉及到实际对机器人的操纵&#xff0c;即我们计算出一个结果&#xff0…

【5】KubeSphere部署应用 | MySQL

目录 1、部署的架构 2、KubeSphere几个主要的模块 3、部署MySQL 【1】先创建MySQL的配置文件 【2】创建存储卷 【3】部署有状态服务 【4】查看创建的服务 【5】创建一个服务可以在集群外可以访问 1、部署的架构 2、KubeSphere几个主要的模块 KubeSphere的工作负载相当于k8s里…

算法之常见字符串题目

leedcode344. 反转字符串 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间&#xff0c;你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 示例 1&#xff1a; 输入&#xff1a;s […

进程学习笔记

进程 定义 一个程序程序在一个数据集合上的动态执行过程 与程序区别 动静&#xff0c;暂时的过程和永久的存在&#xff0c;进程由程序、数据、进程控制块&#xff08;PCB&#xff09;组成 特性 动态并发&#xff08;进程&#xff09;独立&#xff08;分页有力支持&#x…

Linux:C/C++文件操作

回忆C语言文件操作 fopen()的使用&#xff1a;   答&#xff1a;打开文件流指针。 param2 “w”&#xff0c;当前没有文件就先创建&#xff0c;再写入。 “r”&#xff0c;只读。 “b”&#xff0c;可与w、b组合。 只写的例子&#xff1a; 只读的例子&#xff1a; 依靠fg…