Ubuntu 安装nginx 来搭建推流服务器

安装nginx

安装两个依赖库

sudo apt-get install autoconf automake
sudo apt-get install libpcre3 libpcre3-dev

安装zlib库

sudo apt-get install openssl
sudo apt-get install libssl-dev

如果安装命令回车之后出现如下信息,请参考【Ubuntu “无法获得锁”解决方案】解决,但是我亲测对我没用,直接重启搞定

E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)
E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?

进入家目录,新建一个文件夹,这里以lxf为例

cd ~
mkdir lxf

下载所需源码

// 下载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命令进行解压

unzip master.zip 
unzip module.zip
tar -zxvf pcre-8.39.tar.gz

配置编译文件,准备编译安装

// 先进入nginx-master目录
cd nginx-master/

在nginx-master目录下有一个auto文件夹,里面有一个名为configure的配置文件,我们先来�通过它进行一些配置

// 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文件夹

// 编译
make
// 安装
sudo make install

当你make后,看到则�代表编译成功

make成功

再执行【sudo make install】,看到这个则代表安装完成

�安装完成

现在我们去测试一下

 cd /usr/local/nginx/sbin/
sudo ./nginx -t

看到successful说明配置文件正确!,如果是failed的话看看你是不是没加sudo

配置文件正确

启动nginx服务器

sudo ./nginx

默认端口是80,所以直接到浏览器中直接敲入本地地址 127.0.0.1,显示【Welcome to nginx!】就代表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;
        }
    }
}

hls

rtmp

重启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这个软件来测试是否推流成功

VLC

�打开流

OK,rmtp打开正常,hls就不演示了,一样的

rmtp打开成功

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏PHP技术

linux软件包安装yum

1.redhat可以使用setup配置IP 网络配置dhcp是*号代表自动获取 重启网络服务service network restart ONBOOT=yes...

3429
来自专栏晓晨的专栏

ASP.NET Core 与支付宝开发文档

843
来自专栏云计算教程系列

如何在Debian 8上安装Linux,Apache,MySQL,PHP(LAMP)堆栈

LAMP软件堆栈由Linux操作系统,Apache Web服务器,MySQL数据库和PHP脚本语言组成,是Web或应用程序开发的良好基础。这个软件堆栈安装在一起...

1153
来自专栏云计算教程系列

如何使用Passenger和Nginx部署Rails

如果您是Ruby on Rails开发人员,可能需要Web服务器来托管您的Web应用程序。本教程将向您展示如何使用Phusion Passenger。作为Rai...

1082
来自专栏云计算

使用Hyper-V在Windows 10上建立虚拟机

如果你正在使用 Windows 10 并且你的硬件支持 Hyper-V,你可以建立一个独立的存储来部署和使用你的虚拟机。在同一时间你可以新建和运行多个虚拟机。

2389
来自专栏大数据和云计算技术

MongoDB系列11:Munin监控MongoDB

Munin是一个网络资源监控工具,可以帮助分析资源趋势。默认提供了大量的分析图形。以下讲述如何设置MongoDB的Munin监控插件。

933
来自专栏緣來來來

申请Let's Encrypt通配符证书

Let's Encrypt支持通配符证书了,也就是说你只需要为你的网站申请*.example.com这样一个证书,所有的子域名都可以支持,下面介绍下申请方法:

1002
来自专栏张善友的专栏

使用WinSCP软件在windows和Linux中进行文件传输

当我们的开发机是Windows,服务器是Linux时,如何在windows操作系统和linux操作系统之间进行文件传输呢?大部分使用ScureCRT或者putt...

22010
来自专栏源码之家

申请淘宝客AppKey的最新教程

1443
来自专栏逸鹏说道

ifconfig: command not found CentOS专版,其他的可以参考

ifconfig: command not found ? 查看path配置(echo相当于c中的printf,C#中的Console.WriteLine) e...

2608

扫码关注云+社区