版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huanghuangjin/article/details/82813313
nginx 反向代理服务器搭建(Ubuntu中):(除了nginx搭建流媒体服务器(模块化配置),常用的还有red5(java配置)) nginx官网:http://nginx.org/
nginx中有很多模块,rtmp-module
1.先下载安装 nginx 和 nginx-rtmp 编译依赖工具,下载的nginx是c源码,需要编译,所以需要先下载编译nginx的工具
sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev
2. 创建一个工作目录,并切换到工作目录
mkdir /home/hankin/Desktop/mpeg/nginx
cd /home/hankin/Desktop/mpeg/nginx
3. 下载 nginx 和 nginx-rtmp源码(wget是一个从网络上自动下载文件的自由工具)
wget http://nginx.org/download/nginx-1.14.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.14.0.tar.gz
-zxvf分别是四个参数
x : 从 tar 包中把文件提取出来
z : 表示 tar 包是被 gzip 压缩过的,所以解压时需要用 gunzip 解压
v : 显示详细信息
f xxx.tar.gz : 指定被处理的文件是 xxx.tar.gz
unzip master.zip
6. 切换到 nginx-目录
cd nginx-1.14.0
7.添加 nginx-rtmp 模板编译到 nginx , 如果出现 the HTTP gzip module requires the zlib library 错误,那么 sudo apt-get install zlib1g zlib1g.dev 即可
./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master
8.编译安装
make // 编译
sudo make install // nginx服务默认是安装在 /usr/local/nginx 目录下,端口默认 listen 80 ,参看 /usr/local/nginx/conf/nginx.conf 配置,可以直接修改该文件,修改nginx服务的端口(我改成了8082)
9. 安装 nginx init 脚本 (https://github.com/JasonGiedymin/nginx-init-ubuntu/blob/master/nginx)
sudo wget https://raw.github.com/JasonGiedymin/nginx-init-ubuntu/master/nginx -O /etc/init.d/nginx // 开机启动运行开启nginx服务的脚本,-O 表示下载的脚本保存到 /etc/init.d/nginx 文件中
也可以手动创建 /etc/init.d/nginx 脚本文件(nginx_init.sh),但是注意windows与linux编码问题,不注意的话,启动nginx服务的时候可能会报 Exec format error
sudo chmod +x /etc/init.d/nginx // 添加执行权限
sudo update-rc.d nginx defaults // 开机启动,执行 /etc/init.d/nginx 脚本文件(此指令可以在其他工作目录下执行)
10. 启动和停止nginx 服务,生成配置文件
sudo service nginx start // systemctl start nginx.service 高版本的Linux系统,换成systemctl命令 , 在浏览器 192.168.1.103:8082/ 即可看到nginx服务器首页 /usr/local/nginx/html/index.html
sudo service nginx stop // status 查看状态
11. 安装 FFmpeg // 推流到nginx服务器后,需要在服务器解码,这里用ffmpeg
tar -xvf ffmpeg-4.0.2.tar.bz2 // 重新解压一份ffmpeg,然后复制到 /home/hankin/Desktop/mpeg/nginx 目录下
cd ffmpeg-4.0.2
./configure --disable-x86asm // 检测下配置是否正确,也可以用 --disable-yasm
make // 编译 ffmpeg
sudo make install // 安装
ffmpeg -v // 查看版本信息
12. 配置 nginx-rtmp 服务器
打开 /usr/local/nginx/conf/nginx.conf 在末尾添加如下 配置 rtmp 推流:
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
# 推流为 live ,$name 表示房间名任意,视频使用 libx264 编码,码率 350K ,视频尺寸 640x360 ,视频格式 flv ,音频采用 aac 编码,码率为 56K
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 {
live on;
record off;
}
}
}
13. 保存上面配置文件,然后重新启动nginx服务
sudo service nginx restart
14. 如果你使用了防火墙,请允许端口 tcp 1935
telnet 192.168.1.103 1935 测试 tcp 的 1935 端口是否打开(Linux、windows下都可以) 出现 Connected to 192.168.1.103 表示已连接,按 ctrl+] 进入telnet命令行模式,quit退出
15.服务器配置测试播放器:
将 flash_player_nginx 内容复制到目录:/usr/local/nginx/html/,然后修改 index.html 的播放地址 src:"rtmp://192.168.1.103:1935/live/hj"
16.用ffplay播放RTMP直播流:
ffplay "rtmp://xx.xx.xx.xx:1935/live/hj live=1"
.
Ubuntu中的运行级别: 例如:init 0 命令关机; init 6 命令重新启动
0(关闭系统)
1(单用户模式,只允许root用户对系统进行维护。)
2 到 5(多用户模式,其中3为字符界面,5为图形界面。)
6(重启系统)
Ubuntu 系统 update-rc.d 命令 是用来更新系统启动项的脚本。这些脚本的链接位于/etc/rcN.d/目录,对应脚本位于/etc/init.d/目录
update-rc.d -f <basename> remove // 从所有的运行级别中删除指定启动项
update-rc.d <basename> start|stop <order> <runlevels> // 按指定顺序、在指定运行级别中启动或关闭
实例:update-rc.d apachectl start 20 2 3 4 5 . stop 20 0 1 6 . // apachectl 为假设的命令
// 解析:表示在2、3、4、5这五个运行级别中,由小到大,第20个开始运行apachectl;在 0 1 6这3个运行级别中,第20个关闭apachectl。这是合并起来的写法,注意它有2个点号,效果等于下面方法:
update-rc.d apachectl defaults
update-rc.d A defaults 80 20
update-rc.d B defaults 90 10 // A启动后B才能启动,B关闭后A才关闭
update-rc.d <basename> defaults 90 // 启动和关闭顺序为90,级别默认