首先是搭建nginx服务器,nginx服务器的搭建需要下载nginx和nginx rtmp模块
操作系统:Linux(Ubantu),我这里通过xShell连接的阿里云的服务器。
先创建了一个文件夹tuiliu,名字和路径都不重要。
下载nginx:
wget http://nginx.org/download/nginx-1.15.3.tar.gz
或者通过nginx官网下载其它版本,nginx官网地址:
http://nginx.org/
下载如下图所示的链接:
解压:
tar xvf nginx-1.15.3.tar.gz
下载nginx rtmp模块
wget https://codeload.github.com/arut/nginx-rtmp-module/tar.gz/v1.2.1
或者在githua上搜索nginx-rtmp-module或者使用这个地址https://github.com/arut/nginx-rtmp-module/releases下载其它版本。
解压:
tar xvf v1.2.1
这两步完成后解压后的文件如下所示:
进入nging-1.15.3
cd nginx-1.15.3
分别执行命令:
./configure --prefix=./bin --add-module=../nginx-rtmp-module-1.2.1
make
make install
--add-module 指向rtmp模块目录,选择在当前目录下的bin下生成文件。
在这个过程中可能因为环境不同而出现不同错误,比如缺少pcre、openssl等,这时候就需要安装这些库。
解决依赖包openssl安装,命令:
sudo apt-get install openssl libssl-dev
解决依赖包pcre安装,命令:
sudo apt-get install libpcre3 libpcre3-dev
解决依赖包zlib安装,命令:
sudo apt-get install zlib1g-dev
3个库安装完成后,如下图所示:
然后
cd bin/conf
修改nginx.conf文件,修改后的文件如下:
user root;
worker_processes 1;
error_log logs/error.log debug;
events {
worker_connections 1024;
}
rtmp {
server {
#注意端口占用
listen 1935;
application myapp {
live on;
#丢弃闲置5s的连接
drop_idle_publisher 5s;
}
}
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8080;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
location /stat {
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl {
#注意目录
root xxxxx/tuiliu/nginx-rtmp-module-1.2.1/;
}
location /control {
rtmp_control all;
}
location /rtmp-publisher {
#注意目录
root xxxxx/tuiliu/nginx-rtmp-module-1.2.1/test;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
这里需要注意几点:
1)因为是要操作直播,所以要丢弃闲置5s的连接
2)注意路径不要配置错了
红线中的路径如何获取:定位到nginx-rtmp-module-1.2.1下,执行命令 pwd,输出的路径就是。
3)1935端口和8080端口
因为我这里使用的是xShell连接的阿里云的服务器,所以还需要在阿里云服务器的后台配置1935和8080这两个端口:
进入阿里云服务器,在最左侧选择 "安全组"
然后点击右上角的“配置规则”
添加安全组
内容填写
以上完成后,来启动nginx,启动之前看1935和8080的端口是否被占用:
lsof -i:端口号
如果有端口被占用,则通过如下命令kill掉:
kill -9 进程id
进入nginx目录
cd nginx-1.15.3
执行命令,启动nginx
bin/sbin/nginx
使用命令停止nginx
bin/sbin/nginx -s stop
一定要在当前目录启动,因为上面的配置 error_log logs/error.log debug; 会去执行命令的目录下查找 logs。
如果error_log 改成一个绝对路径 那就没关系了。
打开浏览器,输入地址:
http://你的IP:8080/
我这是windows10的系统,因为我用的阿里云的服务器,所以在哪打开浏览器都是可以的,如果成功则显示下面的界面:
也可以输入如下地址:
http://你的IP:8080/stat
显示管理推流的界面
myapp是在上面的配置文件中配置的,配置文件中是什么,这里就是什么,而且在android代码中的地址要和这里一致,比如android代码中推流的地址为:
android中的推流地址中的myapp就和配置文件中的一致,否则推流会失败,“mystream”这个名字随便起,叫什么都无所谓。
推流成功则会如下所示:
如果你想看下你推流的视频,我这里使用的是VLC media player
,选择媒体-打开网络串流,填写地址:
rtmp://你的IP:1935/myapp/mystream
至此,通过nginx搭建rtmp服务器完成。
android端直播代码更新中...