赞
踩
下载 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
查案版本:
-
- lkmao@ubuntu:/big/nginx/ubuntu-nginx-1.20.0/install/sbin$ ./nginx -V
- nginx version: nginx/1.20.0
- built by gcc 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12)
- built with OpenSSL 1.0.2g 1 Mar 2016
- TLS SNI support enabled
- 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
- lkmao@ubuntu:/big/nginx/ubuntu-nginx-1.20.0/install/sbin$
查看帮助信息:
- lkmao@ubuntu:/big/nginx/ubuntu-nginx-1.20.0/install/sbin$ ./nginx -h
- nginx version: nginx/1.20.0
- Usage: nginx [-?hvVtTq] [-s signal] [-p prefix]
- [-e filename] [-c filename] [-g directives]
-
- Options:
- -?,-h : this help
- -v : show version and exit
- -V : show version and configure options then exit
- -t : test configuration and exit
- -T : test configuration, dump it and exit
- -q : suppress non-error messages during configuration testing
- -s signal : send signal to a master process: stop, quit, reopen, reload
- -p prefix : set prefix path (default: /big/nginx/ubuntu-nginx-1.20.0/install/)
- -e filename : set error log file (default: logs/error.log)
- -c filename : set configuration file (default: conf/nginx.conf)
- -g directives : set global directives out of configuration file
-
- 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,修改成功。
后续我们会使用 FFmpeg 进行推流,将视频流通过 RTMP 推给 nginx 流媒体服务器,在此之前,我们需 要对 nginx 进行配置,打开 nginx 的配置文件/big/nginx/ubuntu-nginx-1.20.0/install/conf/nginx.conf,添加如下内容:
- rtmp {
- server {
- listen 1935; # 监听 1935 端口
- chunk_size 4096;
- application live{
- allow publish 127.0.0.1;
- allow play all;
- live on; # 打开直播
- record off; # 关闭 record
- meta copy;
- }
- application hls {
- live on;
- hls on;
- hls_path /tmp/hls;
- hls_fragment 8s;
- }
- }
- }
添加完成之后保存退出即可!
sudo ./nginx -p /big/nginx/ubuntu-nginx-1.20.0/install -s reload
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 指的就是本机的流媒体服务器。
点击左上角“媒体”--->“打开网络串流”:
ffmpeg -f v4l2 -video_size 320x240 -framerate 15 -i /dev/video0 -q 10 -f flv rtmp://127.0.0.1/live/mytest
测试发现,延迟太高了,导致虚拟机当前采集到的画面与 VLC 播放到的画面并不同步,笔者实测大概5 、 6 秒的延迟,为什么会这样呢?
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。