nginx搭建流媒体服务器实现点播和直播

nginx搭建流媒体服务器实现点播和直播教程 - 源码文件 - 点击下载

前言
流媒体指以流方式在网络中传送音频、视频和多媒体文件的媒体形式。相对于下载后观看的网络播放形式而言,流媒体的典型特征是把连续的音频和视频信息压缩后放到网络服务器上,用户边下载边观看,而不必等待整个文件下载完毕。由于流媒体技术的优越性,该技术广泛应用于视频点播、视频会议、远程教育、远程医疗和在线直播系统中。作为新一代互联网应用的标志,流媒体技术在近几年得到了飞速的发展。
流媒体服务器是流媒体应用的核心系统,是运营商向用户提供视频服务的关键平台。流媒体服务器的主要功能是对流媒体内容进行采集、缓存、调度和传输播放。流媒体应用系统的主要性能体现都取决于媒体服务器的性能和服务质量。因此,流媒体服务器是流媒体应用系统的基础,也是最主要的组成部分。

环境   centos7 nginx

1.下载需要的所有软件包
软件包说明:
nginx-1.13.12.tar.gz //nginx
nginx-rtmp-module-master.zip //让nginx支持rtmp/hls协议
ngx_cache_purge.zip //清除缓存的模块
nginx_mod_h264_streaming-2.2.7.tar.gz //让nginx支持flv,mp4流播放
pcre-8.39.tar.gz //pcre
zlib-1.2.8.tar.gz //zlib
EV录屏_3.9.5.0.exe //录屏软件-推流
vlc16216.exe //视频播放软件-拉流
nginx.conf //nginx配置文件

2.安装nginx依赖包
yum install gcc gcc-c++ openssl openssl-devel cyrus-sasl-md5

3.将需要软件包上传到centos7上
nginx-1.13.12.tar.gz
nginx-rtmp-module-master.zip
ngx_cache_purge.zip
nginx_mod_h264_streaming-2.2.7.tar.gz
pcre-8.39.tar.gz
zlib-1.2.8.tar.gz

4.解压所有软件包
tar -zxvf nginx-1.13.12.tar.gz
unzip nginx-rtmp-module-master.zip
unzip ngx_cache_purge.zip
tar -zxvf nginx_mod_h264_streaming-2.2.7.tar.gz
tar -zxvf pcre-8.39.tar.gz
tar -zxvf pcre-8.39.tar.gz

5.进入nginx-rtmp-module-master.zip解压后nginx-rtmp-module-master目录,将ngx_http_streaming_module.c文件中的r->zero_in_uri所在的if语句注释掉

6.安装nginx
进入nginx-1.13.12.tar.gzp解压后nginx-1.13.12目录执行以下命令
./configure --prefix=/usr/local/nginx/ --with-pcre=../pcre-8.39 --with-zlib=../zlib-1.2.8 --add-module=../nginx-rtmp-module-master --add-module=../ngx_cache_purge-master --add-module=../nginx_mod_h264_streaming-2.2.7 --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --with-http_gzip_static_module --with-http_flv_module
执行完成后,修改nginx安装目录下的objs下的Makefile文件,删除-Werror
执行make && make install

7.检查是否安成功
执行 /usr/local/nginx/sbin/nginx -V  ,若为如下信息,这说明安装成功
nginx version: nginx/1.13.12
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC)
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx/ --with-pcre=../pcre-8.39 --with-zlib=../zlib-1.2.8 --add-module=../nginx-rtmp-module-master --add-module=../ngx_cache_purge-master --add-module=../nginx_mod_h264_streaming-2.2.7 --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --with-http_gzip_static_module --with-http_flv_module

8.将nginx-rtmp-module-master目录拷贝到nginx的站点下,并重命名为nginx-rtmp-module
cp -rf nginx-rtmp-module-master /usr/local/nginx/html/
mv /usr/local/nginx/html/nginx-rtmp-module-master /usr/local/nginx/html/nginx-rtmp-module

9.创建点播和直播站点目录
//点播
mkdir -p /usr/local/nginx/html/media/

//直播
mkdir -p /tmp/hls/

10.更换nginx配置文件
//做备份
cp nginx.conf nginx.conf_bak
将nginx配置更换为如下配置(可以使用安装包中nginx.conf直接进行替换)

worker_processes 2;
error_log    /usr/local/nginx/logs/error.log;
pid        /usr/local/nginx/logs/nginx.pid;
events {
    use epoll;
    worker_connections 51200;
}
   
rtmp {
    server {
        listen 1935;
        chunk_size 4096;
        application live {
            live on;
            record off;
        }
        #video on demand
        application media {
            play /usr/local/nginx/html/;
        }
        application hls {
            live on;
            hls on;
            hls_path /tmp/hls/;
        }
    }
}
 
http {
    include        mime.types;
    default_type application/octet-stream;
    sendfile        on;
    keepalive_timeout 65;
    gzip on;
    server {
        listen        80;
        server_name localhost;
        #charset koi8-r;
        #access_log logs/host.access.log main;
        location / {
            root    html;
            index index.html index.htm;
        }
        location ~ \.flv$ {
            root /usr/local/nginx/html/media/;   
            flv;
        }
        location ~ \.mp4$ {
            root /usr/local/nginx/html/media/;
            mp4;
        }
        location /stat {
            rtmp_stat all;
            rtmp_stat_stylesheet stat.xsl;
        }
        location /stat.xsl {
            root /usr/local/nginx/html/nginx-rtmp-module/;
        }
        location /hls {
            # Serve HLS fragments
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
            root /tmp;
            add_header Cache-Control no-cache;
        }
        location /dash {
            # Serve DASH fragments
            root /tmp;
            add_header Cache-Control no-cache;
        }
        error_page    500 502 503 504 /50x.html;
        location = /50x.html {
            root    html;
        }
    }
}


11.开启远程访问端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=1935/tcp --permanent
结果返回success,则设置成功
firewall-cmd --reload
结果返回success,则设置成功

12.点播测试
上传一个mp4或者flv的视频文件到/usr/local/nginx/html/media/目录下
安装安装包中的视频播放软件(其他视频播放软件也可以的)vlc16216.exe
打开VLC media player -> 媒体 -> 打开网络串流
在网络协议中输入:http://服务器IP/视频文件名  例如:http://blog.kz38.cn/test.flv,点击播放,即可看到点播视频内容
nginx搭建流媒体服务器实现点播和直播_第1张图片
nginx搭建流媒体服务器实现点播和直播_第2张图片

13.直播测试
安装录屏软件(他视频播放软件也可以的)EV录屏_3.9.5.0.exe
打开EV录屏 -> 设置 -> 直播设置
在串流地址中输入: rtmp://服务器IP/hls/直播名称(可任意命名) 例如:rtmp://blog.kz38.cn/hls/test
nginx搭建流媒体服务器实现点播和直播_第3张图片
选择在线直播,开始录屏
nginx搭建流媒体服务器实现点播和直播_第4张图片
打开浏览器 访问http://服务器IP/stat  例如:http://blog.kz38.cn/stat,可以看都正在推送的直播流
nginx搭建流媒体服务器实现点播和直播_第5张图片
打开VLC media player -> 媒体 -> 打开网络串流
在网络协议中输入:rtmp://服务器IP/hls/直播名称 例如:rtmp://blog.kz38.cn/hls/test ,点击播放,即可看到直播视频内容
nginx搭建流媒体服务器实现点播和直播_第6张图片
nginx搭建流媒体服务器实现点播和直播_第7张图片

你可能感兴趣的:(Linux)