安装两个依赖库linux
sudo apt-get install autoconf automake
sudo apt-get install libpcre3 libpcre3-dev
复制代码
安装zlib库nginx
sudo apt-get install openssl
sudo apt-get install libssl-dev
复制代码
若是安装命令回车以后出现以下信息,请参考【Ubuntu “没法得到锁”解决方案】解决,可是我亲测对我没用,直接重启搞定git
E: 没法得到锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)
E: 没法锁定管理目录(/var/lib/dpkg/),是否有其余进程正占用它?
复制代码
进入家目录,新建一个文件夹,这里以lxf为例github
cd ~
mkdir lxf
复制代码
下载所需源码shell
// 下载nginx-rtmp源码
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
// 修改压缩包的名字
mv master.zip module.zip
复制代码
// 下载nginx
wget https://github.com/nginx/nginx/archive/master.zip
复制代码
// 下载nginx的依赖pcre源码
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz
复制代码
下载完成以后使用unzip命令进行解压vim
unzip master.zip
unzip module.zip
tar -zxvf pcre-8.39.tar.gz
复制代码
配置编译文件,准备编译安装浏览器
// 先进入nginx-master目录
cd nginx-master/
复制代码
在nginx-master目录下有一个auto文件夹,里面有一个名为configure的配置文件,咱们先来经过它进行一些配置ruby
// prefix:指定安装目录
// add-module:指定模块文件夹
auto/configure --prefix=/usr/local/nginx --with-pcre=../pcre-8.39 --with-http_ssl_module --with-http_v2_module --with-http_flv_module --with-http_mp4_module --add-module=../nginx-rtmp-module-master/
复制代码
配置好以后会多出一个Makefile文件(一种配置文件,定义了一系列的规则来指定编译操做)与objs文件夹 bash
// 编译
make
// 安装
sudo make install
复制代码
当你make后,看到则表明编译成功 服务器
如今咱们去测试一下
cd /usr/local/nginx/sbin/
sudo ./nginx -t
复制代码
看到successful说明配置文件正确!,若是是failed的话看看你是否是没加sudo
启动nginx服务器
sudo ./nginx
复制代码
默认端口是80,因此直接到浏览器中直接敲入本地地址 127.0.0.1,显示【Welcome to nginx!】就表明nginx已经成功安装
建立推流存放文件夹
// 为里以 /usr/local/var/www/hls 为例
cd /usr/local
sudo mkdir -p var/www/hls
复制代码
进入nginx的conf目录,使用vim编辑nginx.conf文件
cd /usr/local/nginx/conf
sudo vim nginx.conf
复制代码
配置Nginx,支持http协议拉流
location /hls {
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /usr/local/var/www;
add_header Cache-Control no-cache;
}
复制代码
配置Nginx,支持rtmp协议推流
rtmp {
server {
listen 1935;
application rtmplive {
live on;
max_connections 1024;
}
application hls{
live on;
hls on;
hls_path /usr/local/var/www/hls;
hls_fragment 1s;
}
}
}
复制代码
重启nginx服务器
cd /usr/local/nginx/sbin/
sudo ./nginx -s reload
复制代码
若是执行【sudo ./nginx -s reload】出现下面这个问题
nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
复制代码
就使用nginx -c的参数指定nginx.conf文件的位置,接着再reload一下就行了
sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
复制代码
我Ubuntu地址为192.168.123.191
推流至RTMP到服务器 rtmp://192.168.123.191:1935/rtmplive/lxf
ffmpeg -re -i 异形.契约.mp4 -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://192.168.123.191:1935/rtmplive/lxf
复制代码
推流至HLS到服务器 http://192.168.123.191/hls/lxf.m3u8
ffmpeg -re -i 异形.契约.mp4 -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://192.168.123.191:1935/hls/lxf
复制代码
若是出现以下错误说明你的电脑没安装ffmpeg
-bash: ffmpeg: command not found
复制代码
使用Homebrew来安装FFmpeg
// 安装Homebrew
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
// 安装FFmpeg
brew install ffmpeg
复制代码
开始推流,终端上就开始不断的刷新推流信息
咱们能够用电脑上的VLC这个软件来测试是否推流成功
OK,rmtp打开正常,hls就不演示了,同样的