要求:做一个网页获取摄像头的视频流,然后将视频流经过流服务器推送到后台视频处理服务器,再由后台视频处理服务器推送到流服务器,最终推送到页面。如图:
经过查阅资料,目前有red5以及nginx+nginx-rtmp-module实现,选择第二种方式来实现。
第一步:准备一个ubuntu的系统。本人使用的是ubuntu16.0.4的系统。
第二步:下载nginx以及相关的依赖,我已经准备好了,大家可以下载我的,安装的过程以及命令可以直接用我的,网盘地址:XXX(用我的,直接看第三步),也可以去官网下载。如果自己安装的话,请参考下面两篇文章(编译的版本以及路径需要自己修改)
点击打开链接,点击打开链接。
第三步:将下载下来的依赖包中的四个文件拷贝到/usr/local目录下。
第四步:将这四个文件解压。使用 tar -zxvf +压缩文件名 来进行解压
第一步:nginx编译依赖pcre,zlib,openssl,编译前请确保g++编译器已安装,若未安装使用sudo apt-get install build-essential
安装。
第二步:编译openssl,进入目录:cd openssl-1.0.2j/ (tips:如果在使用下面命令报类似权限的错误,请使用sudo)
./config
./config -t
make depend
make
make test
make install
第三步:编译pcre,进入目录: cd /usr/local/pcre-8.38
切换至pcre目录,sudo apt-get install libpcre3-dev
安装libpcre3-dev依赖库
./configure --prefix=/usr/local/pcre-8.38
make
make install
第四步:编译nginx
cd /usr/local/nginx-1.8.1
sudo ./configure --prefix=/usr/local/nginx --with-pcre=/usr/local/pcre-8.38 --with-zlib=/usr/local/zlib-1.2.11 --with-openssl=/usr/local/openssl-1.0.2j --with-http_ssl_module
sudo make
sudo make install
第五步:测试nginx是否顺利的搭建
如编译成功,/usr/local
下将有nginx
文件夹,cd /usr/local/nginx/sbin
切换到该目录,sudo ./nginx
,运行nginx,在浏览器中输入本机ip,如看到下图则nginx搭建成功,sudo ./nginx -s stop
可退出服务器
第一步:从github上克隆nginx-rtmp-moudle到/usr/local目录下(注意,需要将这个文件克隆/usr/lcoal目录下)
git clone https://github.com/arut/nginx-rtmp-module.git
第二步:编译安装(注意:下面标记色的地方,你要换一下你自己用户的目录!!!!)
cd /usr/local/nginx-1.8.1
sudo ./configure --prefix=/usr/local/nginx --with-pcre=/usr/local/pcre-8.38 --with-zlib=/usr/local/zlib-1.2.11 --with-openssl=/usr/local/openssl-1.0.2j --with-http_ssl_module
--add-module=/home/wangwei/nginx-rtmp-module
sudo make
sudo make install
wangwei/nginx-rtmp-module
sudo make
sudo make install
第三步:切换至conf目录cd /usr/local/nginx/conf
,备份一个nginx.conf,编辑nginx.confsudo nano nginx.conf
,将下面的配置替换原来nginx.conf文本中的内容。
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
rtmp {
server {
listen 1935;
application myapp{
live on;
}
application hls {
live on;
hls on;
hls_path /tmp/hls;
}
}
}
http {
server {
listen 80;
location /stat {
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl {
root /usr/local/nginx/html/nginx-rtmp-module/;
}
location /control {
rtmp_control all;
}
location /rtmp-publisher {
root /usr/local/nginx/html/nginx-rtmp-module/test;
}
location / {
root /usr/local/nginx/html/nginx-rtmp-module/test/www;
}
}
}
第四步:现在可以测试直播推流。
1、首先必须安装ffmpeg,如果没有安装,安装ffmpeg,ubuntu超简单安装ffmpeg
2、上传一个视频到/usr/local目录下,例如上传的为test.mp4
3、启动nginx,开始推流:
ffmpeg -re -i /usr/local/test.mp4 -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://localhost:1935/myapp/test123
4、windows中使用potplayer打开rtmp://你的ip:1935/test/test123 ,打开成功的话,表示安装完成。
第五步:使用webcam来直播推流
1、nginx.conf配置文件需要的内容放在对应的目录下
mkdir /usr/local/nginx/html/nginx-rtmp-module
cp /root/nginx-rtmp-module/test /usr/local/nginx/html/nginx-rtmp-module/
cp /root/nginx-rtmp-module/stat.xsl /usr/local/nginx/html/nginx-rtmp-module/
2、然后修改/usr/local/nginx/html/nginx-rtmp-module/test/www目录下的index.html和record.html,将这个里面的localhost修改为本机的ip,例如我的ip是192.168.25.133,我就把localhost换为如下。
3、重启nginx。使用ie浏览器打开你的ip,然后点击recoder,点击启动摄像头,你就可以在index.html看到直播的效果了。如图:
4、基本的已经处理完了,以后接着更新