当前位置: 首页 > news >正文

nginx-rtmp服务器搭建

音视频服务器搭建

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

流程

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

查看当前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

  • 进入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.lryc.cn/news/509882.html

相关文章:

  • [c++进阶(三)]单例模式及特殊类的设计
  • 企业内训|高智能数据构建和多模态数据处理、Agent研发及AI测评技术内训-吉林省某汽车厂商
  • 009 Qt_显示类控件_QLCDNumber、ProgressBar、Calendar
  • --spring.profiles.active=prod
  • 深入解析JVM中对象的创建过程
  • 使用开源在线聊天工具Fiora轻松搭建个性化聊天平台在线交流
  • ffmpeg之显示一个yuv照片
  • MySQL中Performance Schema库的详解(下)
  • 【Rust自学】7.1. Package、Crate和定义Module
  • 【Git】-- 版本说明
  • 1919C. Grouping Increases
  • Pion WebRTC 项目教程
  • 【安全编码】Web平台如何设计防止重放攻击
  • VUE3+django接口自动化部署平台部署说明文档(使用说明,需要私信)
  • Python爬虫(入门+进阶)
  • 保姆级教程Docker部署RabbitMQ镜像
  • 【RAII | 设计模式】C++智能指针,内存管理与设计模式
  • Linux复习3——管理文件系统2
  • c++---------数据类型
  • 前端Python应用指南(三)Django vs Flask:哪种框架适合构建你的下一个Web应用?
  • 鸿蒙系统文件管理基础服务的设计背景和设计目标
  • 要查询 `user` 表中 `we_chat_open_id` 列不为空的用户数量
  • AI科研助手开发总结:向量与数据权限的应用(二)
  • python爬虫----爬取视频实战
  • HarmonyOS NEXT 实战之元服务:静态案例效果--航空出行
  • DP83848以太网移植流程,可以TCP通信
  • css 裁剪 clip-path
  • MySQL用表组织数据
  • 细说STM32F407单片机轮询方式读写SPI FLASH W25Q16BV
  • C++-------指针