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

  • 下载对应源码:将以下两个文件安装到同一个路径下(如新建一个/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

重新编译并配置nginx

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

    shell 复制代码
    ./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目录

  • 配置nginx.conf文件

    shell 复制代码
    rtmp {
        server {
            listen 1935;
            chunk_size 4096;
    
            # live on
            application 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 videos
            application rtmp_play{
                play ./videos;  #build directory
            }
        }
    }
  • 启动nginx服务

    shell 复制代码
    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

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

    • 如果出现以下错误:

      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流到服务器

    推送成功

    测试rtmp服务器的点播效果

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

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

参考文献

1\] https://mp.weixin.qq.com/s/axPKe2m2Cn6W17v56j-UQQ \[2\] [视频教程](https://www.bilibili.com/video/BV1pT4y1R7SN?spm_id_from=333.788.videopod.episodes&vd_source=8d80eb7c4defe23ebcf93241dbde1254&p=27) \[3\] https://www.cnblogs.com/Naylor/p/18070047

相关推荐
云雾J视界8 分钟前
Linux企业级解决方案架构:字节跳动短视频推荐系统全链路实践
linux·云原生·架构·kubernetes·音视频·glusterfs·elk stack
拾光Ծ1 小时前
【Linux】“ 权限 “ 与相关指令
linux·运维·服务器
歪歪1001 小时前
React Native开发有哪些优势和劣势?
服务器·前端·javascript·react native·react.js·前端框架
To_再飞行1 小时前
Linux Bash(一)
linux·运维·服务器·bash
孤廖2 小时前
C++ 模板再升级:非类型参数、特化技巧(含全特化与偏特化)、分离编译破解
linux·服务器·开发语言·c++·人工智能·后端·深度学习
文火冰糖的硅基工坊2 小时前
[人工智能-大模型-9]:大模型十大应用场景和对应的代表性的产品?
服务器·人工智能·大模型
Likeadust2 小时前
新版视频直播点播平台EasyDSS用视频破局,获客转化双提升
大数据·音视频
TG_yunshuguoji2 小时前
亚马逊云代理商:AWS怎么通过加密实现数据保护目标?
服务器·云计算·aws
可涵不会debug2 小时前
UU远程深度测评:重构远程控制体验的“无套路”标杆
运维·服务器
峰顶听歌的鲸鱼3 小时前
1.云计算与服务器基础
运维·服务器·笔记·云计算·学习方法