宝塔 搭建 nginx rtmp 流媒体服务器

宝塔 搭建 nginx rtmp 流媒体服务器

安装环境说明

系统环境: Centos 7
机型: DELL R540

准备工作

nginx 添加模块,编译安装 nginx ,下载 nginx-rtmp-module

git clone https://github.com/arut/nginx-rtmp-module /www/server/nginx_rtmp_module/ 
模块名称:nginx_rtmp_module
模块描述:nginx_rtmp_module
模块参数:--add-module=/www/server/nginx_rtmp_module/

上述路径要核对清楚


参考 bt.cn 网站 截图

如果安装失败,请检查安装模块的参数是否正确

查看安装是否成功

nginx -V 查看安装是否完成

创建文件 并配置相关参数

cd /www/server/nginx/conf/
mkdir rtmp
touch nginx-rtmp.conf
touch nginx-rtmp-play.conf
mkdir -p /www/tmp/hls
# nginx-rtmp.conf
rtmp {
    server {
        listen 1935;
        ping 30s;
        chunk_size 4000;
        notify_method get;

        application live { # 推流地址rtmp://ip:1935/live/密钥,同拉流播放地址
            live on;
            record all; # 是否开启记录 alloff, all,用于录制直播视频以便回放重播
            record_unique on; # 记录值唯一
            record_max_size 200M; # 记录文件大小
            record_path "/www/tmp/video"; # 记录文件位置
            record_suffix -%Y-%m-%d-%H_%M_%S.flv; # 记录文件命名
            # on_publish http://127.0.0.1:8686/auth; # 开始推流的回调地址
            #on_done 'http://when live stop call this url'; # 结束推流的回调地址
            #on_play http://127.0.0.1:8686/auth; # 开始播放的回调地址
        }
        
        application hls { # 推流地址rtmp://ip:1935/hls/密钥,开启HLS协议进行m3u8直播
            live on;
            hls on; # 开启hls, hls的推流会产生一个m3u8的ts视频文件索引,同时保存一个个视频片段缓存,可以拿到再次播放。
            hls_path /www/tmp/hls; # 视频切片ts文件存放的位置
            hls_sync 100ms;
            hls_fragment 5s; # 视频切片的大小,ts文件大小
            hls_cleanup on; #对多余的切片进行删除
            hls_playlist_length 60s;    #保存m3u8列表长度时间,默认是30秒
        }

        #application vod { # 用于视频点播flv/mp4
        #    play /www/tmp/videos; # 本地视频MP4文件存放地址,作为流播放视频: rtmp://ip:1935/vod/视频名称.mp4
        #}
        #application vod_http { # 播放远程http链接的视频,rtmp://ip:1935/vod_http/视频名称.mp4
        #    play http://localhost:8080/vod/;
        #}   
    }
}

# nginx-rtmp-play.conf
server {
    listen 1000;
    
    location /stat { # http://ip:1000/stat, 监控流的地址 
        rtmp_stat all;  
        rtmp_stat_stylesheet stat.xsl;
    }  
  
    location /stat.xsl {
        root /www/server/nginx-rtmp-module/;  
    }

    location /hls { # http拉流的地址,http://ip:1000/hls/密钥.m3u8
        # Serve HLS fragments
        types {
            application/vnd.apple.mpegurl m3u8;
            video/mp2t ts;
        }
        root /www/tmp;
        expires -1;
        add_header Cache-Control no-cache;
        add_header Access-Control-Allow-Origin *;
    }
}

nginx.conf 引入相关配置


user  www www;
worker_processes auto;
error_log  /www/wwwlogs/nginx_error.log  crit;
pid        /www/server/nginx/logs/nginx.pid;
worker_rlimit_nofile 51200;

stream {
    log_format tcp_format '$time_local|$remote_addr|$protocol|$status|$bytes_sent|$bytes_received|$session_time|$upstream_addr|$upstream_bytes_sent|$upstream_bytes_received|$upstream_connect_time';
  
    access_log /www/wwwlogs/tcp-access.log tcp_format;
    error_log /www/wwwlogs/tcp-error.log;
    include /www/server/panel/vhost/nginx/tcp/*.conf;
}

events
    {
        use epoll;
        worker_connections 51200;
        multi_accept on;
    }
# 加入
include /www/server/nginx/conf/rtmp/nginx-rtmp.conf;
http
    {
        include       mime.types;
    #include luawaf.conf;

    include proxy.conf;

        default_type  application/octet-stream;

        server_names_hash_bucket_size 512;
        client_header_buffer_size 32k;
        large_client_header_buffers 4 32k;
        client_max_body_size 50m;

        sendfile   on;
        tcp_nopush on;

        keepalive_timeout 60;

        tcp_nodelay on;

        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
        fastcgi_buffer_size 64k;
        fastcgi_buffers 4 64k;
        fastcgi_busy_buffers_size 128k;
        fastcgi_temp_file_write_size 256k;
    fastcgi_intercept_errors on;

        gzip on;
        gzip_min_length  1k;
        gzip_buffers     4 16k;
        gzip_http_version 1.1;
        gzip_comp_level 2;
        gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml;
        gzip_vary on;
        gzip_proxied   expired no-cache no-store private auth;
        gzip_disable   "MSIE [1-6]\.";

        limit_conn_zone $binary_remote_addr zone=perip:10m;
    limit_conn_zone $server_name zone=perserver:10m;

        server_tokens off;
        access_log off;

server
    {
        listen 888;
        server_name phpmyadmin;
        index index.html index.htm index.php;
        root  /www/server/phpmyadmin;

        #error_page   404   /404.html;
        include enable-php.conf;

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }

        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }

        location ~ /\.
        {
            deny all;
        }

        access_log  /www/wwwlogs/access.log;
    }

# 加入
include /www/server/nginx/conf/rtmp/nginx-rtmp-play.conf;
include /www/server/panel/vhost/nginx/*.conf;
}

重启 nginx

nginx -t
nginx -s reload

下载推流软件

下载 OBS 软件进行推流, 设置如下:

开启测试

rtmp://127.0.0.1:1935/hls
test

下载 VLC 进行拉流测试,查看推流状

html 观看视频

<!DOCTYPE html>
<html lang="zh-CN">

<head>
  <meta charset="UTF-8">
  <title>HTML5 直播</title>
  <link href="https://vjs.zencdn.net/7.0.3/video-js.css" rel="stylesheet">
  <script src="https://vjs.zencdn.net/7.0.3/video.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/videojs-flash@2/dist/videojs-flash.min.js"></script>
</head>

<body style="margin: auto; width: 1080px;">
  <!-- HTTP直播hls拉流地址 -->
  <video id="hls-live" class="video-js vjs-default-skin vjs-big-play-centered" controls preload="auto" width="1080"height="608" data-setup='{}'>
    <source src="http://127.0.0.1:1000/hls/test.m3u8" type="application/x-mpegURL">
  </video>
</body>
</html>

软件推荐

线上系统可以使用杏林推流 app 进行推拉流,本地项目可以使用 obs,主流还是使用 obs

  • 安卓版本杏林推流 app 可以使用

测试

生成 ts 切片

参考网站博客

  • https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=51618&highlight=rtmp
  • https://blog.csdn.net/xinyflove/article/details/79806543
  • https://blog.csdn.net/yeluo_vinager/article/details/98732653
  • https://obsproject.com/zh-cn/download
  • https://blog.csdn.net/O0mm0O/article/details/73896384
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值