nginx rtmp直播无延迟_利用宝塔自建linux+nginx-rtmp-module直播服务器的正确方法-程序员宅基地

技术标签: 自建linux邮件服务器  nginx rtmp直播无延迟  rtmp服务器  宝塔linux  

说明比较长,需要一定的操作动手能力才行。

基础条件 第一个必须是linux服务器 第二个安装了宝塔面板 第三编译安装nginx1.7.6+php5.6

1第一步

修改/www/server/panel/install/nginx.sh文件 如下图位置的文件

3c04148b44a5543d8acb2c6f36388613.png

点编辑 找到 ./configure 部分 免费版7.1版大约在205行 我们添加一个 --add-module=/www/server/nginx_plus/nginx-rtmp-module 添加完成后如下:请勿直接复制 版本不一样 其他的配置也不一样

./configure --add-module=/www/server/nginx_plus/nginx-rtmp-module --user=www --group=www --prefix=${Setup_Path} ${ENABLE_LUA} --add-module=${Setup_Path}/src/ngx_cache_purge --add-module=${Setup_Path}/src/nginx-sticky-module --with-openssl=${Setup_Path}/src/openssl --with-pcre=pcre-${pcre_version} ${ENABLE_HTTP2} --with-http_stub_status_module --with-http_ssl_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt="-Wl,-E" --with-cc-opt="-Wno-error" ${jemallocLD} ${ENABLE_NGX_PAGESPEED} ${ADD_EXTENSION}

可以看出就是在 --user=www 前面加上了 --add-module=/www/server/nginx_plus/nginx-rtmp-module 空格隔开

添加完了 记得保存

2第二步

打开XSHELL 命令工具 或者宝塔后台的 宝塔终端 输入你服务器的root密码登录。

执行 git clone https://github.com/arut/nginx-rtmp-module /www/server/nginx_plus/nginx-rtmp-module/ 语句,直到100%完成

4cb8a755a7f3ac638c7070a9907e063b.png

如下图 回车等待下载完成

3第三步

第二步完成后 输入命令 sh /www/server/panel/install/nginx.sh install 1.17 回车进行nginx的编译

就不截图了和上面一样 等待编译完成 完成后大概是这样的编译时间很快几分钟的事

931c1436359b651aaa72b41c17855e40.png

注意,安装成功后就不要使用宝塔后台的NGINX切换版本功能了

以上部分参考 https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=33703 并进行了修正。

4第四步

www 文件夹下建立 tmp 文件夹 tmp文件夹下建立 live 文件夹

b9bdf832caacec574f78b574bef44d75.png

继续打开 /www/server/nginx/conf 目录下的 nginx.conf 文件在

events    {        use epoll;        worker_connections 51200;        multi_accept on;    }

下面加上

rtmp {        server {            listen 1935;  #监听的端口          chunk_size 4000;                  application hls {            live on;            hls on;            hls_path /www/tmp/live;#视频流存放地址            hls_fragment 1s;            hls_playlist_length 2s;            hls_continuous on; #连续模式。            hls_cleanup on;    #对多余的切片进行删除。            hls_nested on;     #嵌套模式。        }    }  }
82e3bc1b0cd174d4acb9c59750396aeb.png

   access_log  /www/wwwlogs/access.log;    }

下面加上

server    {        listen 8080;        ####要配置https格式访问的话就要把下面的启用,即把开头的#号删除,同时修改域名及证书#listen 8082 ssl;#https协议的端口号 比如 https://xx.com:8082/        #server_name svn.php168.com;#填写绑定证书的域名#ssl_certificate    C:/nginx-rtmp-win32-dev/conf/svn.php168.com.crt;#换成自己的证书 注意路径#ssl_certificate_key    C:/nginx-rtmp-win32-dev/conf/svn.php168.com.key;#换成自己的证书#ssl_protocols TLSv1 TLSv1.1 TLSv1.2;#ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#ssl_prefer_server_ciphers on;#ssl_session_cache shared:SSL:10m;#ssl_session_timeout 10m;#error_page 497  https://$host$request_uri;           location / {            root html;        }        location /stat {            rtmp_stat all;            rtmp_stat_stylesheet stat.xsl;        }        location /stat.xsl {            root /www/server/nginx_plus/nginx-rtmp-module/;        }          location /hls {  #添加视频流存放地址。        types {            application/vnd.apple.mpegurl m3u8;            video/mp2t ts;        }        #访问权限开启,否则访问这个地址会报403        autoindex on;        alias /www/tmp/live;#视频流存放地址,与上面的hls_path相对应,这里root和alias的区别可自行百度        expires -1;        add_header Cache-Control no-cache;        #防止跨域问题        add_header 'Access-Control-Allow-Origin' '*';        add_header 'Access-Control-Allow-Credentials' 'true';        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';        add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';  }

添加完成后的完整配置:(可以对照着修改)

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;events    {        use epoll;        worker_connections 51200;        multi_accept on;    }rtmp {        server {            listen 1935;  #监听的端口          chunk_size 4000;                  application hls {            live on;            hls on;            hls_path /www/tmp/live;#视频流存放地址            hls_fragment 1s;            hls_playlist_length 2s;            hls_continuous on; #连续模式。            hls_cleanup on;    #对多余的切片进行删除。            hls_nested on;     #嵌套模式。        }    }  }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;    }    server    {        listen 8080;        ####要配置https格式访问的话就要把下面的启用,即把开头的#号删除,同时修改域名及证书#listen 8082 ssl;#https协议的端口号 比如 https://xx.com:8082/        #server_name svn.php168.com;#填写绑定证书的域名#ssl_certificate    C:/nginx-rtmp-win32-dev/conf/svn.php168.com.crt;#换成自己的证书 注意路径#ssl_certificate_key    C:/nginx-rtmp-win32-dev/conf/svn.php168.com.key;#换成自己的证书#ssl_protocols TLSv1 TLSv1.1 TLSv1.2;#ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#ssl_prefer_server_ciphers on;#ssl_session_cache shared:SSL:10m;#ssl_session_timeout 10m;#error_page 497  https://$host$request_uri;           location / {            root html;        }        location /stat {            rtmp_stat all;            rtmp_stat_stylesheet stat.xsl;        }        location /stat.xsl {            root /www/server/nginx_plus/nginx-rtmp-module/;        }          location /hls {  #添加视频流存放地址。        types {            application/vnd.apple.mpegurl m3u8;            video/mp2t ts;        }        #访问权限开启,否则访问这个地址会报403        autoindex on;        alias /www/tmp/live;#视频流存放地址,与上面的hls_path相对应,这里root和alias的区别可自行百度        expires -1;        add_header Cache-Control no-cache;        #防止跨域问题        add_header 'Access-Control-Allow-Origin' '*';        add_header 'Access-Control-Allow-Credentials' 'true';        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';        add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';  }    }include /www/server/panel/vhost/nginx/*.conf;}

最后记得点保存。

3c783e3a390d4985f65a7b0fb73d5191.png

点他后面的设置按钮 先点重载配置 再点重启

2c3118f8f58f101c4f801630906741ce.png

5最后一步

21ddfe09d4060d83ddf00c719295447a.png

在这里我们可以添加一个 ip或者你域名的网站

推流地址:rtmp://122.51.110.79/hls/selfserver162 ip可以是你这里绑定的域名或者ip selfserver162 是流名称

播放地址:http://122.51.110.79/hls/selfserver162/index.m3u8 selfserver162 是流名称

后台插件设置

92802f5598fd996c418b4156d279d4f1.png

以下是隐藏的内容需要回复才可见,因为回复过了,所以下面的内容可见

51a975dd1d0c702a6caebe35bd2bdf9d.gif

69_202002051909190ee29.rar(头条不能上传附件,请童孩们关注我并私信“直播服务器运行附件”留下邮箱,我会统一发到邮箱)

下载附件解压 放到你新创建的这个网站根目录。

宝塔后台添加一个定时任务一分钟执行一次就好或者自行百度shell 执行php

或者在xshell cd到你刚刚创建的网站根目录执行 nohup php zhibo.php & 任何按任意键返回控制台 再关闭xshell即可

zhibo.php 请打开修改17 18 19行为自己的网址

$web_url 为你展示直播的网站

$play_server 和$stat_url 为你最后一步在直播服务器创建的网站域名或者ip

步骤比较多 中间也修正过多次 应该是没有遗漏了 出问题概不负责 也是瞎鼓捣的

提供一个测试直播服务器 http://122.51.110.79 直播插件选择自建服务器 输入这个ip即可 有效期一个月 1核1G1M宽带的 1块钱买了一个月测试了下自建服务器 没有用了

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39528559/article/details/109876158

智能推荐

服务器数据收发测试软件,Packet Sender(UDP/TCP网络测试工具) v7.0.5-程序员宅基地

文章浏览阅读4k次。Packet Sender(UDP/TCP网络测试工具)是一个开源实用程序,允许发送和接收TCP、UDP和SSL(加密的TCP)数据包,主线分支正式支持Windows、Mac和桌面Linux,其他地方可以重新编译和重新分发分组发送器。Packet Sender软件特色数据包发送方可以在您选择的端口上发送和接收UDP、TCP和SSL。所有服务器和客户端可以同时运行。100%免费开源。没有广告,没有捆..._packet sender

Java 使用工具类 Collections.sort() 对集合根据时间排序(DESC)_java list 日期 desc-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏2次。# 使用Coollections.sort(@NotNull List<T> list,@NotNull Comparator<? super T> c)Collections.sort(warcEnterInfos, new Comparator<WARCEnterInfo>() { @Override public int compare..._java list 日期 desc

sql语句 改变日期格式_易语言sql语言修改日期框-程序员宅基地

文章浏览阅读7.2k次。一般存入数据库中的时间格式为yyyy-mm-ddhh:mm:ss 如果要转换为yyyy-mm-dd 短日期格式.可以使用convert函数.下面是sqlserver帮助中关于convert函数的声明:使用 CONVERT:CONVERT (data_type[(length)],expression[,style])参数expression是任何有效的 Micr_易语言sql语言修改日期框

转载和积累系列 - Nodejs HTTP多线程_node http 多线程吗-程序员宅基地

文章浏览阅读3.1k次。译自:http://developer.yahoo.net/blog/archives/2010/07/multicore_http_server_with_nodejs.html(稍有修改), 转载请指明原文链接:http://www.grati.org/?p=307简单地说,NodeJS是一个使用了Google高性能V8引擎 的服务器端JavaScript实现。它提供了一个(几乎)_node http 多线程吗

Android Studio Error:Connection timed out: connect._android studio connection timed out-程序员宅基地

文章浏览阅读813次。最近在配置使用android studio时遇到了个错误Android Studio Error:Connection timed out: connect.,纠结了很久,后来在网上看到了一篇文章,试了下很有帮助,在这里给大家也看一下,希望能帮到同样错误的小伙伴Error:Connection timed out: connect. If you are behind an HTTP proxy,..._android studio connection timed out

php判断是否为手机浏览器_php 判断为手机浏览器-程序员宅基地

文章浏览阅读3.8k次。function is_mobile(){ // returns true if one of the specified mobile browsers is detected // 如果监测到是指定的浏览器之一则返回true $regex_match="/(nokia|iphone|android|motorola|^mot_php 判断为手机浏览器

随便推点

vue出现空白页面的可能情况_前端导出v-if是空白-程序员宅基地

文章浏览阅读4.2k次。如果在父组件中注册了组件,然后又用路由出口跳转到这个组件,当点击页面刷新的时候,就会出现空白的页面,解决方法就删除父组件里的注册。_前端导出v-if是空白

在ubuntu20.10上安装unity3d-程序员宅基地

文章浏览阅读1.1k次。打开下载页面,点击start here点击agree and download下载完成后开始安装先授权后安装启动前要登陆_在ubuntu20.10上安装unity3d

离线安装Cloudera Manager 5和CDH5(最新版5.9.3) 完全教程(四)数据库安装(单节点)_cdh5.9 重新配置数据库-程序员宅基地

文章浏览阅读159次。离线安装Cloudera Manager 5和CDH5(最新版5.9.3) 完全教程(四)数据库安装(单节点)一、卸载CentOS自带的MySQL1.1 查看之前是否安装过mysql[root@master mysql]# rpm -qa|grep -i mysqlmysql-libs-5.1.71-1.el6.x86_64[root@master mysql]#1.2 卸载自带的..._cdh5.9 重新配置数据库

安装gitbook sourcetree或命令行推送数据到Githup上 No “xxx“ file (or is ignored) which查看软件安装目录 operation not permi_"filenotfounderror: no \"readme\" file (or is igno-程序员宅基地

文章浏览阅读1.1k次。mac如何安装gitbook、sourcetree、typera等。如何使用sourcetree或命令行推送数据到Githup上。以及在安装的过程中,解决FileNotFoundError: No "README" file (or is ignored)的问题。使用which gitbook可以查看Gitbook安装到哪里。解决operation not permitted的权限问题。......_"filenotfounderror: no \"readme\" file (or is ignored)"

FTP-----局域网内部远程桌面_远程登陆ftp-程序员宅基地

文章浏览阅读1.8k次。从此文学会远程桌面(局域网内部)。_远程登陆ftp

制作bat和linux下的sh文件-程序员宅基地

文章浏览阅读323次。 1.制作bat文件(test.bat)set CLASSPATH=%CLASSPATH%;./test/Ice.jar;./test/slf4j-api-1.4.3.jar; 设置CLASSPATH需要导入的jar文件 java test.TestSoufunProxy 执行TestSoufunProxy 类 ,不要忘了前面的包名test 2.制作linux 下的.s..._linux怎么弄成bat文件弄成sh服务