上一篇我们已经实现了使用ffmpeg实现视频的播放,接下来再来一波骚操作,我们来探索一下近两年火热的视频直播是如何实现的。
简单来说就是一端推流,多端拉流(流即视频流和音频流),也就是一个主播对应多个观众。视频流的传输是通过rtmp协议而非以往的http协议
在敲代码之前我们需要做一些准备工作,首先我们来搭建一个nginx服务器。那nginx又是什么呢?
nginx是一个高性能的HTTP和反向代理的web服务器,用来处理前端(Android IOS Web)过来的请求,以往在一台服务器上需要部署多个服务需要通过端口号指明访问具体服务。部署nginx就不需要了,主要用来倒流与分发。
下面我们开始搭建:
1.打开我们的远程服务器,下载nginx(nginx官网)
当前最新版本为nginx-1.17.0,输入一下命令下载并解压
//下载
wget http://nginx.org/download/nginx-1.17.0.tar.gz
//解压
tar -xvf nginx-1.17.0.tar.gz
2.我们还需要在nginx中集成一个直播模块nginx-rtmp-module(当前最新为1.2.1),项目地址
//下载nginx-rtmp-module
wget https://github.com/arut/nginx-rtmp-module/archive/v1.2.1.tar.gz
//解压
tar -xvf v1.2.1.tar.gz
ok,现在我们已经准备好了
3.接下来进入nginx-1.17.0进行编译
输入命令:./configure --prefix=./bin --add-module=../nginx-rtmp-module-1.2.1/
其中:
./configure :运行configure
--prefix=./bin :编译后保存到当前路径的bin下(bin没有会自动生成)
--add-module=../nginx-rtmp-module-1.2.1/ :将上一级目录中的nginx-rtmp-module-1.2.1模块编译进来
编译后,如出现一下所示则表示编译成功
如出现类似情况,则说明缺少系统库,根据提示安装缺少的系统库,然后重新编译即可
安装openssl:
sudo apt-get install openssl libssl-dev
安装zlib:
sudo apt-get install zliblg-dev
安装pcre:
sudo apt-get install libpcre3 libpcre3-dev
4.编译成功后进行安装,输入命令
make && make install
5.随后我们还需要对nginx进行一些配置
来到生成的bin/conf目录下,有个nginx.conf文件
打开这个文件,写入以下内容
user root;
#所在进程
worker_processes 1;
error_log logs/error.log debug;
events {
#最大连接个数,即做多有1024个观众可观看,可以调大
worker_connections 1024;
}
rtmp {
server {
#监听端口
listen 1935;
#
application myapp {
#打开直播
live on;
#5s没有数据传递就断开连接,保证服务器资源
drop_idle_publisher 5s;
}
}
}
http {
server {
#监听端口
listen 8081;
#以下是分发路径,注意要改成自己nginx-rtmp-module-1.2.1所在的路径
location /stat {
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl {
root /zhoumohan/nginx-rtmp-module-1.2.1/;
}
location /control {
rtmp_control all;
}
location /rtmp-publisher {
root /zhoumohan/nginx-rtmp-module-1.2.1/test;
}
location / {
root /zhoumohan/nginx-rtmp-module-1.2.1/test/www;
}
}
}
保存后,来到nginx-1.17.0根目录执行命令:
5.检验服务器是否部署成功
在浏览器打开http://你的服务器地址:8081/stat
如图显示说明已经部署成功
当然也可能出现打开地址失败的情况,这是因为没有开放我们刚刚配置的8081和1935端口
来到阿里云控制台,依次来到:安全组 -> 配置规则 -> 添加安全组规则,添加这两个端口号即可
然后输入命令:
关闭nginx服务器
./bin/sbin/nginx -s stop
开启nginx服务器
./bin/sbin/nginx
刷新浏览器即可。还有可能出现这个提示
这个原因则是使用了https协议请求,而https需要ssl认证证书导致,改为http协议请求即可。
好了,视频直播的准备工作,nginx服务器搭建就到这里啦,如有不足欢迎小伙伴交流指正。