当前位置:网站首页 / 个人 / 正文

[实验]使用nginx-rtmp-module模块搭建直播系统,附系统Demo!

时间:2019年06月03日 | 作者 : admin | 分类 : 个人 | 浏览: 505次 | 评论 0

这个demonginxrtmp模块搭配PHP做鉴权实现的一个简易的直播demo,由于原本的mod不支持将rtmp流转换为flv流(SRS可以做到)所以使用m3u8的直播流。本次实验使用的环境为:centos7(工具软件:PHP5.6 mariadb tenginx vim git gcc gcc-c++ )   

相关下载

Tenginx:  http://tengine.taobao.org/download/tengine-2.3.0.tar.gz
nginx-rtmp-module: https://github.com/arut/nginx-rtmp-module.git
Demo:https://gitee.com/adminmx/live.git

1安装依赖

1.1安装php 命令

yum -y install php php-fpm php-common php-devel php-mysql

1.2安装数据库

yum -y install mariadb-server mariadb

1.3安装工具

yum -y install net-tools vim git gcc gcc-c++ wget

  1.4下载配置NG代码(ng需要 openssl pcre zlib openssl-devel zlib-devel pcre-devel

./configure  --add-module=../nginx-rtmp-module

wps2.jpg

编译安装 

make&&make install

配置nginx支持php-fpm

    1.1配置伪静态

wps3.jpg

   if (!-e $request_filename) {
   rewrite  ^(.*)$  /index.php?s=/$1  last;
   break;
    }

1.2配置NG支持FastCGI

    

去掉注释,修改箭头所指位置,重启nginx即可



wps4.jpg

下载demo/usr/local/nginx/html

git clone https://gitee.com/adminmx/live.git
cd live/
mv ./* ../
cd ../
chmod -R 777 ./*
chown -R nobody:nobody ./*

进入数据库创建数据库(create database live;

MariaDB [live]> source /usr/local/nginx/html/live.sql;
Query OK, 0 rows affected (0.00 sec)
 
Query OK, 0 rows affected, 1 warning (0.01 sec)
 
Query OK, 0 rows affected (0.00 sec)
 
Query OK, 0 rows affected, 1 warning (0.00 sec)
 
Query OK, 0 rows affected (0.01 sec)
 
Query OK, 1 row affected (0.00 sec)
 
Query OK, 1 row affected (0.00 sec)
 
MariaDB [live]>

编辑数据库信息

默认MariaDBroot密码为空 那就为空吧

wps5.jpg

--------------------------------

创建文件/usr/local/nginx/conf/live.conf 写入以下内容

rtmp {
    server {
		listen 1935;

        chunk_size 4000;
        application live {
		#配置鉴权接口地址
	    on_publish http://127.0.0.1/api/on_publish;
	    on_publish_done http://127.0.0.1/api/publish_done;
		
        # enable live streaming
        live on;
		hls on; #这个参数把直播服务器改造成实时回放服务器。
		wait_key on; #对视频切片进行保护,这样就不会产生马赛克了。
		hls_path /opt/video/hls; #切片视频文件存放位置。
		hls_fragment 10s;     #每个视频切片的时长。
		hls_playlist_length 60s;  #总共可以回看的事件,这里设置的是1分钟。
		hls_continuous on; #连续模式。
		hls_cleanup on;    #对多余的切片进行删除。
		hls_nested on;     #嵌套模式。
      }
    }
}

配置配置文件(nginx.conf)在http{之前添加配置信息

image.png

完了之后在该配置文件底部继续添加,注意需要在http{  }之内

	server {
        listen       8080;
        server_name  localhost;
		location /live {
			#设置一下跨域	
			add_header Access-Control-Allow-Origin *;
			add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
			add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
        types {  
            application/vnd.apple.mpegurl m3u8;  
            video/mp2t ts;  
        }
        alias /opt/video/hls;   
        expires -1;
        add_header Cache-Control no-cache;  
		}  
	}

image.png

创建直播文件存储目录

mkdir -p /opt/video/hls

修改播放地址和推流地址,IP换成你的IP地址

wps6.jpg

登录平台进行测试

wps7.jpg


经测试可以正常进行直播





附上nginx完整的配置文件

nginx.conf

#user  nobody;
worker_processes  auto;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#error_log  "pipe:rollback logs/error_log interval=1d baknum=7 maxsize=2G";

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}

# load modules compiled as Dynamic Shared Object (DSO)
#
#dso {
#    load ngx_http_fastcgi_module.so;
#    load ngx_http_rewrite_module.so;
#}
include /usr/local/nginx/conf/live.conf;
http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;
    #access_log  "pipe:rollback logs/access_log interval=1d baknum=7 maxsize=2G"  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        #access_log  "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G"  main;

        location / {
            root   html;
            if (!-e $request_filename) {
                rewrite  ^(.*)$  /index.php?s=/$1  last;
                break;
            }
            index index.php index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }


        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    }

	server {
        listen       8080;
        server_name  localhost;
		location /live {
			#设置一下跨域	
			add_header Access-Control-Allow-Origin *;
			add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
			add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
        types {  
            application/vnd.apple.mpegurl m3u8;  
            video/mp2t ts;  
        }
        alias /opt/video/hls;   
        expires -1;
        add_header Cache-Control no-cache;  
		}  
	}
}

live.conf

rtmp {
    server {
		listen 1935;

        chunk_size 4000;
        application live {
		#配置鉴权接口地址
	    on_publish http://127.0.0.1/api/on_publish;
	    on_publish_done http://127.0.0.1/api/publish_done;
		
        # enable live streaming
        live on;
		hls on; #这个参数把直播服务器改造成实时回放服务器。
		wait_key on; #对视频切片进行保护,这样就不会产生马赛克了。
		hls_path /opt/video/hls; #切片视频文件存放位置。
		hls_fragment 10s;     #每个视频切片的时长。
		hls_playlist_length 60s;  #总共可以回看的事件,这里设置的是1分钟。
		hls_continuous on; #连续模式。
		hls_cleanup on;    #对多余的切片进行删除。
		hls_nested on;     #嵌套模式。
      }
    }
}


推荐您阅读更多有关于“实验nginxrtmp直播开源,”的文章

猜你喜欢

额 本文暂时没人评论 来添加一个吧

发表评论

必填

选填

选填

必填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

网站分类
搜索
友情链接
Top