Nginx搭建流媒体服务器详解(RTMP和HLS)

本文所讲开发环境以Linux为准:

本文demo架构是android端采用RTMP推流,播放用H5播放器video.js播放RTMP协议或HLS协议。

实验步骤:

1.先下载安装 nginx 和 nginx-rtmp 编译依赖工具

sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev

2. 创建一个工作目录,并切换到工作目录

mkdir /usr/jason/nginx

cd /usr/jason/nginx

3. 下载 nginx 和 nginx-rtmp源码(wget是一个从网络上自动下载文件的自由工具)

wget http://nginx.org/download/nginx-1.7.5.tar.gz

wget https://github.com/arut/nginx-rtmp-module/archive/master.zip

4. 安装unzip工具,解压下载的安装包

sudo apt-get install unzip

5.解压 nginx 和 nginx-rtmp安装包

tar -zxvf nginx-1.7.5.tar.gz

-zxvf分别是四个参数

x : 从 tar 包中把文件提取出来

z : 表示 tar 包是被 gzip 压缩过的,所以解压时需要用 gunzip 解压

v : 显示详细信息

f xxx.tar.gz : 指定被处理的文件是 xxx.tar.gz

unzip master.zip

6. 切换到 nginx-目录

cd nginx-1.7.5

7.添加 nginx-rtmp 模板编译到 nginx

./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master

8.编译安装

make

sudo make install

9. 安装nginx init 脚本

sudo wget https://raw.github.com/JasonGiedymin/nginx-init-ubuntu/master/nginx -O /etc/init.d/nginx

sudo chmod +x /etc/init.d/nginx

sudo update-rc.d nginx defaults

10. 启动和停止nginx 服务,生成配置文件

sudo service nginx start

sudo service nginx stop

11. 安装 FFmpeg

make

make install

12.1 配置 nginx-rtmp 服务器或HLS服务器

打开 /usr/local/nginx/conf/nginx.conf

在末尾添加如下 配置

复制代码:


rtmp {

    server {

            listen 1935;

            chunk_size 4096;

            application live {

                    live on;

                    record off;

                    exec ffmpeg -i rtmp://localhost/live/$name -threads 1 -c:v libx264 -profile:v baseline -b:v 350K -s 640x360 -f flv -c:a aac -ac 1 -strict -2 -b:a 56k rtmp://localhost/live360p/$name;

            }

            application live360p {

                    live on;

                    record off;

        }

            #RTMP直播流配置

             application rtmplive{

               live on;

               # max_connections:1024;

             }

             #HLS直播流配置

             application hls {

                     live on;

                    hls on;

                     hls_path /usr/local/nginx/html/hls;

                     hls_fragment 5s;

            }

    }

}

13. 保存上面配置文件,然后重新启动nginx服务

sudo service nginx restart

14. 如果你使用了防火墙,请允许端口 tcp 1935

16: 使用 客户端,使用 rtmp协议进行视频实时采集

Field 1: rtmp://your.vultr.ip/live/

Field 2: stream-key-your-set

服务器配置测试播放器:

将播放器复制到目录:/usr/local/nginx/html/,然后修改播放地址

用ffplay播放RTMP直播流:

ffplay "rtmp://49.4.11.26:8088/hls/test.m3u8"

用ffplay播放HLS直播流:

ffplay "http://49.4.11.26:8088/hls/test.m3u8"

实验结论:

RTMP的延时明显低于HLS。

android推流的项目地址:

https://github.com/wxp19940506/dn_live.git

https://github.com/wxp19940506/JasonPushStream.git

你可能感兴趣的:(Nginx搭建流媒体服务器详解(RTMP和HLS))