nginx-rtmp服务器搭建

devtools/2024/12/26 11:07:54/

音视频服务器搭建

本文采用 nginx/1.18.0nginx-rtmp-module模块源代码搭建RTMP流媒体服务器

流程

  1. 查看当前服务器nginx版本
  2. 下载nginxnginx-rtmp-module源代码
  3. 重新编译nginx,并进行相关配置(nginx.conf、防火墙等)
  4. 客户端测试连接
  5. 测试搭建的直播与点播功能

nginx_13">查看当前nginx版本,并下载对应的源代码

  • nginx版本:nginx -V

    image-20241221112103292

  • 下载对应源码:将以下两个文件安装到同一个路径下(如新建一个/cml路径)

    • 下载nginx源码:wget http://nginx.org/download/nginx-1.18.0.tar.gztar -zxvf nginx-1.18.0.tar.gz
    • 下载nginx-rtmp-module模块源码:git clone https://github.com/arut/nginx-rtmp-module.git

image-20241221114437978

nginx_26">重新编译并配置nginx

  • 进入nginx-1.18目录,执行configure可执行文件

    ./configure --prefix=/home/ubuntu/cml/nginx-1.18.0/build --add-module=/home/ubuntu/cml/nginx-rtmp-module
    

    参数说明:

    第一个参数--prefix=/home/ubuntu/cml/nginx-1.18.0/build指明安装路径

    第二个参数--add-module=/home/ubuntu/cml/nginx-rtmp-module指明导入的模块

    再执行make install指令生成build目录

    image-20241221133824897

  • 配置nginx.conf文件

    image-20241221133920334

    rtmp {server {listen 1935;chunk_size 4096;# live onapplication rtmp_live {live on;# hls on; #这个参数把直播服务器改造成实时回放服务器# wait_key on; #对视频切片进行保护,这样就不会产生马赛克了。# hls_path ./sbin/html; #切片视频文件存放位置。# hls_fragment 10s;     #每个视频切片的时长。# hls_playlist_length 60s;  #总共可以回看的时间,这里设置的是1分钟。# hls_continuous on; #连续模式。# hls_cleanup on;    #对多余的切片进行删除。# hls_nested on;     #嵌套模式。}# play videosapplication rtmp_play{play ./videos;  #build directory}}
    }
    
  • 启动nginx服务

    sudo ./sbin/nginx
    
  • 打开端口防火墙 sudo ufw allow 1935/tcp

  • 通过ffmpeg客户端命令测试服务器是否搭建成功

    • ffmpeg -i test.flv -vcodec libx264 -acodec aac -f flv rtmp://8.134.156.7:1935/rtmp_live/mystream

      出现以下画面则服务器搭建成功。

      image-20241221134407680

    • 如果出现以下错误:

      Connection to tcp://8.134.156.7:1935 failed: Error number -138 occurred [rtmp @ 00000202d836e940] Cannot open connection tcp://8.134.156.7:1935 rtmp://8.134.156.7:1935/rtmp_live/mystream: Unknown error

      请再度检查防火墙是否开放该端口,或再次重启nginx服务systemctl status nginx

    测试服务器直播效果

    打开VLC视频测试工具,选择 媒体->打开网络串流 -> 输入网络地址 rtmp://xxx.xxx.xxx:1935/rtmp_live/mystream* ,再客户端推送rtmp流到服务器

    image-20241221134716141

    推送成功

    image-20241221135109676

    测试rtmp服务器的点播效果

    在系统中准备好测试的点播文件

    image-20241221135506356

​ 打开网络流:rtmp://xxx.xxx.xxx:1935/rtmp_play/test.flv,点播打开成功。

image-20241221135712904

参考文献

[1] https://mp.weixin.qq.com/s/axPKe2m2Cn6W17v56j-UQQ

[2] 视频教程

[3] https://www.cnblogs.com/Naylor/p/18070047


http://www.ppmy.cn/devtools/145512.html

相关文章

宏定义介绍

假设我们有以下代码: LOG_INFO("rkipc_ini_path_ is %s, rkipc_iq_file_path_ is %s, rkipc_log_level is %d\n",rkipc_ini_path_, rkipc_iq_file_path_, rkipc_log_level);1. LOG_INFO 宏定义 根据之前的 LOG_INFO 宏定义: #define LOG_IN…

springboot485基于springboot的宠物健康顾问系统(论文+源码)_kaic

摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统宠物健康顾问系统信息管理难度大,容错率低&am…

软件项目需求分析的实践探索(1)

一、项目启动与规划 组建团队 包括项目经理、系统分析师、业务分析师以及可能涉及的最终用户代表和领域专家等。例如,开发一个医疗管理软件,就需要有医疗行业的专家参与,确保对医疗业务流程有深入理解。明确各成员的职责,如系统分…

企业司法风险如何查询?如何通过司法风险API评估企业风险?

「企业司法风险」 司法风险指的是企业在经营过程中可能面临的法律后果,这种风险可能源于外部法律环境的变动,或是由于企业自身及其他相关方未能遵循法律规定或合同条款而产生。它包括了开庭通知、诉讼案件、法院公告、消费限制、执行情况、终结案件、送…

Matrix-Breakout 2 Morpheus靶场

第一步 信息收集 (1)寻找靶场真实ip arp-scan -l 靶场真实 ip 为192.168.152.154 (2)探测端口及服务 nmap -p- -sV 192.168.52.135 第二步 开始渗透 (1)访问web服务 http://192.168.152.154 and http://192.168.52.135:81 发现 81 端口的页面要登录 我们使用…

【赵渝强老师】MongoDB逻辑存储结构

MongoDB的逻辑存储结构是一种层次结构,主要包括了三个部分,即:数据库(Database)、集合(Collection,也可以叫做表)和文档(Document,也可以叫做记录&#xff09…

C语言实现顺序表详解

文章目录 [TOC] 1.前言🙋🏼‍♂️2.顺序表🧣2.1 顺序表盖帘🧣2.2 顺序表特点🧣2.2 顺序表作用🧣 3.顺序表基操🧤3.1 结构体初始化🎉3.2 顺序表初始化🎉3.3 顺序表创建&am…

华为原生鸿蒙5.0与代理IP的奇妙融合

目录 一、华为原生鸿蒙5.0简介 二、代理IP技术详解 三、鸿蒙5.0与代理IP的融合应用 四、设置与操作 五、案例分析 六、注意事项 七、未来展望 在数字世界的浩瀚宇宙中,操作系统如同星际间的桥梁,连接着设备与服务。华为原生鸿蒙5.0,这颗…