Ubuntu 搭建Nginx-RTMP流媒体服务器

操作系统: Kubuntu 20.04

主要参考文档:https://blog.csdn.net/u011298145/article/details/78883598

1.先下载安装  nginx 和 nginx-rtmp 编译依赖工具

sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev

2. 创建一个工作目录,并切换到工作目录

mkdir ~/working

cd ~/working

3. 下载 nginx 和 nginx-rtmp源码

原步骤是安装1.7.5版本,但是在make && make install时有很多错误,逐个检查后发现无法完全解决,最后发现是版本问题,所以使用了1.20.0版本

参考文档

wget http://nginx.org/download/nginx-1.20.0.tar.gz
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip

4. 安装unzip工具,解压下载的安装包

sudo apt-get install unzip

5.解压 nginx 和 nginx-rtmp安装包

tar -zxvf nginx-1.20.0.tar.gz
unzip master.zip

6. 切换到 nginx-目录

cd nginx-1.20.0

7.添加 nginx-rtmp 模板编译到 nginx

./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master

8.编译安装

make && make install

9. 安装nginx init 脚本

原文档的原代码已经过期,无法获取,手动创建脚本文件实现nginx服务器自启动

参考文档

在/etc/init.d/目录下编写一个服务脚本

vim /etc/init.d/nginx

写入代码

#!/bin/bash
# nginx Startup script for the Nginx HTTP Server
# it is v.0.0.2 version.
# chkconfig: - 85 15
# description: Nginx is a high-performance web and proxy server.
#              It has a lot of features, but it's not for everyone.
# processname: nginx
# pidfile: /var/run/nginx.pid
# config: /usr/local/nginx/conf/nginx.conf



#注意:这里的三个变量需要根据具体的环境而做修改。
nginxd=/usr/local/nginx/sbin/nginx
nginx_config=/usr/local/nginx/conf/nginx.conf
nginx_pid=/var/run/nginx.pid



RETVAL=0
prog="nginx"

# Check that networking is up.
[ -x $nginxd ] || exit 0
# Start nginx daemons functions.
start() {
if [ -e $nginx_pid ];then
   echo "nginx already running...."
   exit 1
fi
   echo -n $"Starting $prog: "
   $nginxd -c ${nginx_config}
   RETVAL=$?
   echo
   [ $RETVAL = 0 ]  
   return $RETVAL
}
# Stop nginx daemons functions.
stop() {
  echo -n $"Stopping $prog: "
  $nginxd -s stop
  RETVAL=$?
  echo
  [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx $nginx_pid
}
# reload nginx service functions.
reload() {
  echo -n $"Reloading $prog: "
  kill -HUP `cat ${nginx_pid}`
  RETVAL=$?
  echo
}
# See how we were called.
case "$1" in
  start)
          start
          ;;
  stop)
          stop
          ;;
  reload)
          reload
          ;;
  restart)
          stop
          start
          ;;
  status)
          status $prog
          RETVAL=$?
          ;;
  *)
          echo $"Usage: $prog {start|stop|restart|reload|status|help}"
          exit 1
esac
exit $RETVAL

为所有用户添加权限

sudo chmod a+x /etc/init.d/nginx

在rc.local文件的最后中添加如下的一行: /etc/init.d/nginx start

10.启动nginx

可以通过 /etc/init.d/nginx start或者

service nginx start

进行启动,也可以通过进入 /usr/local/nginx/sbin/ 目录,使用 ./nginx 启动nginx服务

启动不成功,查看错误,如果提示地址已被使用,查看端口占用情况:

netstat -apn

在/usr/local/nginx/conf/nginx.conf更改http的listen地址或者直接杀死占用端口的进程

启动成功后可以在浏览器输入http://本机ip地址:80进入服务器,服务器显示Welcome to nginx!欢迎界面

Ubuntu 搭建Nginx-RTMP流媒体服务器

查看本机ip地址命令:ip addr show

11.配置 Nginx-rtmp 服务器

打开 /usr/local/nginx/conf/nginx.conf

在末尾添加如下 配置

rtmp {

    server {

            listen 1935;

            chunk_size 4096;





            application live {

                    live on;

                    record off;

hls on; 

hls_path /usr/share/nginx/html/hls; 

hls_fragment 2s;



                    exec ffmpeg -i rtmp://localhost/live/$name -threads 1 -c:v libx264 -profile:v baseline -b:v 350K -s 640x360 -f flv -c:a aac -ac 1 -strict -2 -b:a 56k rtmp://localhost/live360p/$name;

            }

            application live360p {               #该挂载点为360p的压缩画面

                    live on;

                    record off;

        }

application hls360p {     #个人测试,单独开放的rtmp+hls360p挂载点和hls2挂载点的360p hls流

                live on; 

                hls on; 

                hls_path /usr/share/nginx/html/hls2; 

hls_fragment 2s;

            } 

    }

}





#注意:需要创建hls的目录:mkdir -p /usr/share/nginx/html/hls

12. 保存上面配置文件,然后重新启动nginx服务

sudo service nginx restart

13. 如果你使用了防火墙,请允许端口 tcp 1935,81

iptables -A INPUT -p tcp --dport 1935 -j ACCEPT

iptables -A OUTPUT -p tcp --sport 1935 -j ACCEPT

iptables -A INPUT -p tcp --dport 81 -j ACCEPT

iptables -A OUTPUT -p tcp --sport 81 -j ACCEPT

14.安装obs推流工具

官网:https://obsproject.com/zh-cn/download

Linux支持的版本是由ubuntu14.04或者更新版本的官方提供的。 需要FFmpeg支持。对于ubuntu15.04以及之后的版本,FFmpeg被正式包括在内:

sudo apt-get install ffmpeg

在安装完FFmpeg后,使用以下指令安装OBS工作室版:

sudo add-apt-repository ppa:obsproject/obs-studio

sudo apt-get update && sudo apt-get install obs-studio

15.获取 VLC for Ubuntu

官网:https://www.videolan.org/vlc/#download

sudo snap install vlc

16.使用obs推流:

参考文档:https://zhuanlan.zhihu.com/p/144275422

来源点击“+”号,测试使用屏幕采集,点击控件菜单的设置

推流菜单,服务选择自定义,服务器填入rtmp://192.168.43.140(这里填写你的nginx服务器IP)/live传流密钥随意

输出菜单,输出模式选择高级,码率控制选择ABR,比特率600Kbps,关键帧间隔2

Ubuntu 搭建Nginx-RTMP流媒体服务器

17.使用vlc拉流:

点击媒体,选择网络串流,输入地址rtmp://服务器IP地址/live/传流密钥,点击播放

18.手机使用EasyPlayer拉流

自己通过搜索找到了手机的RTMP播放器EasyPlayer

官网:http://www.easydarwin.org/

安卓RTMP版本:http://app.tsingsee.com/EasyRTMPlayer

点击右上角+号,同样输入地址rtmp://服务器IP地址/live/传流密钥,点击首页的图片进入播放

上一篇:2021-07-17


下一篇:流媒体视频直播协议的新星——SRT协议的优点和应用介绍