当前位置:   article > 正文

UBUNTU:nginx搭建视频服务器_ubuntu 流媒体服务器

ubuntu 流媒体服务器

 下载 Nginx 源码

源码下载:

wget http://nginx.org/download/nginx-1.20.0.tar.gz

解压:

tar zxvf nginx-1.20.0.tar.gz

重命名文件夹 

mv nginx-1.20.0 ubuntu-nginx-1.20.0

 下载 nginx-rtmp-module 模块

git clone https://github.com/arut/nginx-rtmp-module.git

如果连接失败,使用手机做热点试试。

创建一个要安装的目录

mkdir /big/nginx/ubuntu-nginx-1.20.0/install -p

配置 

./configure --prefix=/big/nginx/ubuntu-nginx-1.20.0/install --with-http_ssl_module --with-http_mp4_module --with-http_v2_module --without-http_upstream_zone_module --add-module=/big/nginx/nginx-rtmp-module

上述命令中,--prefix 指定了 nginx 的安装路径,笔者为了方便直接将其安装到 nginx 源码目录下的 install 目录中;--add-module 用于添加第三方模块,譬如我们前面下载的 nginx-rtmp-module,所以--add-module 需要指向 nginx-rtmp-module 源码路径,大家根据自己的实际路径填写。

如下所示:

编译源码

配置完成之后,接着我们执行 make 编译:

lkmao@ubuntu:/big/nginx/ubuntu-nginx-1.20.0$ make -j4

这样就会编译成功了。

安装  

编译成功之后,接着我们进行安装,执行 make install

笔者将 nginx 安装到了 /big/nginx/ubuntu-nginx-1.20.0/install目录中,进入到 install 目录下:  

conf 目录下有很多的配置文件,如下所示:  

其中 nginx.conf 配置文件很重要,后续我们会对该配置文件进行相应的配置。 sbin 目录下有一个可执行程序 nginx:

这个可执行文件是一个“notstripped”文件,说明该文件包含了很多的调试信息,所以导致该文件特别大 8.3MB,可以执行下面这条命令去掉调试信息、减少文件的大小:

strip nginx

或者 

strip --strip-debug nginx

查案版本:

  1. lkmao@ubuntu:/big/nginx/ubuntu-nginx-1.20.0/install/sbin$ ./nginx -V
  2. nginx version: nginx/1.20.0
  3. built by gcc 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12)
  4. built with OpenSSL 1.0.2g 1 Mar 2016
  5. TLS SNI support enabled
  6. configure arguments: --prefix=/big/nginx/ubuntu-nginx-1.20.0/install --with-http_ssl_module --with-http_mp4_module --with-http_v2_module --without-http_upstream_zone_module --add-module=/big/nginx/nginx-rtmp-module
  7. lkmao@ubuntu:/big/nginx/ubuntu-nginx-1.20.0/install/sbin$

 查看帮助信息:

  1. lkmao@ubuntu:/big/nginx/ubuntu-nginx-1.20.0/install/sbin$ ./nginx -h
  2. nginx version: nginx/1.20.0
  3. Usage: nginx [-?hvVtTq] [-s signal] [-p prefix]
  4. [-e filename] [-c filename] [-g directives]
  5. Options:
  6. -?,-h : this help
  7. -v : show version and exit
  8. -V : show version and configure options then exit
  9. -t : test configuration and exit
  10. -T : test configuration, dump it and exit
  11. -q : suppress non-error messages during configuration testing
  12. -s signal : send signal to a master process: stop, quit, reopen, reload
  13. -p prefix : set prefix path (default: /big/nginx/ubuntu-nginx-1.20.0/install/)
  14. -e filename : set error log file (default: logs/error.log)
  15. -c filename : set configuration file (default: conf/nginx.conf)
  16. -g directives : set global directives out of configuration file
  17. lkmao@ubuntu:/big/nginx/ubuntu-nginx-1.20.0/install/sbin$

nginx 可执行程序用于启动流媒体服务。我直接启动nginx文件试试现象

sudo ./nginx -p /big/nginx/ubuntu-nginx-1.20.0/install/

 此时 nginx 服务便在后台运行了,通过 ps 命令可查看到: ps aux | grep nginx

 此时我们可以打开电脑浏览器,输入虚拟机的 IP 地址,如下所示:

如果显示出上面这个页面,表示我们的 nginx 已经正常工作了。  

 修改网页内容

 

 刷新浏览器,如下所示,看到hello world,修改成功。

 配置 nginx

后续我们会使用 FFmpeg 进行推流,将视频流通过 RTMP 推给 nginx 流媒体服务器,在此之前,我们需 要对 nginx 进行配置,打开 nginx 的配置文件/big/nginx/ubuntu-nginx-1.20.0/install/conf/nginx.conf,添加如下内容:
  1. rtmp {
  2. server {
  3. listen 1935; # 监听 1935 端口
  4. chunk_size 4096;
  5. application live{
  6. allow publish 127.0.0.1;
  7. allow play all;
  8. live on; # 打开直播
  9. record off; # 关闭 record
  10. meta copy;
  11. }
  12. application hls {
  13. live on;
  14. hls on;
  15. hls_path /tmp/hls;
  16. hls_fragment 8s;
  17. }
  18. }
  19. }

 添加完成之后保存退出即可!

接着执行如下命令重启 nginx
sudo ./nginx -p /big/nginx/ubuntu-nginx-1.20.0/install -s reload

使用 FFmpeg 推流

nginx 重启之后,接着我们便可使用 FFmpeg 进行推流,将视频流数据通过 RTMP 推给 nginx 流媒体服务器,执行如下命令进行推流:

 ffmpeg -re -i /dev/video1 -c:av copy -f flv rtmp://127.0.0.1/live/mytest

简单地介绍一下这些参数,首先 -i 表示输入视频数据,这里我们使用了一个摄像头/dev/video1;
rtmp://127.0.0.1/live/mytest 表示将视频流通过 RTMP 推给流媒体服务器,这里因为我们的服务器和推流端都 是UBUNTU虚拟机,所以这个 IP 地址 127.0.0.1 指的就是本机的流媒体服务器。
现在我们可以进行拉流了,可以将我们的 Windows 主机作为拉流端,使用 VLC 软件进行拉流, VLC 软 件大家自己下载、安装好。下载网页:https://get.videolan.org/vlc/3.0.18/win64/vlc-3.0.18-win64.exe安装好之后打开 VLC ,如下所示:

 点击左上角“媒体”--->“打开网络串流”:

输入流媒体服务器的 IP 地址以及路径,笔者使用的ubuntu对应的 IP 地址为 192.168.250.11 ,点击“播 放”即可从 RTMP 流媒体服务器拉取视频数据进行播放,如下所示:

换一种方式测试:
ffmpeg -f v4l2 -video_size 320x240 -framerate 15 -i /dev/video0 -q 10 -f flv rtmp://127.0.0.1/live/mytest
这里笔者使用了一个 USB 摄像头进行测试,命令执行之后,接着在 Windows 下使用 VLC 拉流播放摄 像头采集到的画面,实现视频摄像头监控。
测试发现,延迟太高了,导致虚拟机当前采集到的画面与 VLC 播放到的画面并不同步,笔者实测大概5 6 秒的延迟,为什么会这样呢?

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号