Nginx做流媒体服务Windows版实现直播
声明:网上有很多关于Linux系统的配置,这里就不记录了。刚开始搭建直播室,用的是Java语言,
Java开源的流媒体服务有Red5,但是很久没更新了,而且文档较少不容易上手,对于直播功能相对要求较低的还是选择ngin来搭建流媒体服务,下面是记录搭建步骤。
一、下载搭建时需要用到的软件
1、下载 nginx 1.7.11.3 Gryphon
链接: http://nginx-win.ecsds.eu/download/nginx 1.7.11.3 Gryphon.zip
下载完成后解压,将文件重新命名因为含有空格,nginx
2、下载服务器状态检查程序
链接:https://github.com/arut/nginx-rtmp-module/
下载完成后解压,将解压过的文件放到nginx根目录,例如:E:\nginx\nginx-rtmp-module
3、下载OBS推流软件
链接:https://obsproject.com/ 进入官网选择下载
二、配置流媒体服务
1、修改nginx服务器中 conf 目录下的 nginx-win.conf 文件,配置如下
#user nobody; # multiple workers works ! worker_processes 2;#error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;#pid logs/nginx.pid;events {worker_connections 8192;# max value 32768, nginx recycling connections+registry optimization = # this.value * 20 = max concurrent connections currently tested with one worker# C1000K should be possible depending there is enough ram/cpu power# multi_accept on; }rtmp {server {listen 1935;chunk_size 4000;notify_method get;application live { #rtmp推流地址:rtmp://ip地址:1935/livelive on;on_publish http://192.168.8.210/on_publish.php; #rtmp推流鉴权,如果鉴权不通过则没有权限进行推流 }} }http {#include /nginx/conf/naxsi_core.rules;include mime.types;default_type application/octet-stream;#log_format main '$remote_addr:$remote_port - $remote_user [$time_local] "$request" '# '$status $body_bytes_sent "$http_referer" '# '"$http_user_agent" "$http_x_forwarded_for"';#access_log logs/access.log main;# # loadbalancing PHP # upstream myLoadBalancer { # server 127.0.0.1:9001 weight=1 fail_timeout=5; # server 127.0.0.1:9002 weight=1 fail_timeout=5; # server 127.0.0.1:9003 weight=1 fail_timeout=5; # server 127.0.0.1:9004 weight=1 fail_timeout=5; # server 127.0.0.1:9005 weight=1 fail_timeout=5; # server 127.0.0.1:9006 weight=1 fail_timeout=5; # server 127.0.0.1:9007 weight=1 fail_timeout=5; # server 127.0.0.1:9008 weight=1 fail_timeout=5; # server 127.0.0.1:9009 weight=1 fail_timeout=5; # server 127.0.0.1:9010 weight=1 fail_timeout=5; # least_conn; # }sendfile off;#tcp_nopush on;server_names_hash_bucket_size 128;## Start: Timeouts ##client_body_timeout 10;client_header_timeout 10;keepalive_timeout 30;send_timeout 10;keepalive_requests 10; ## End: Timeouts ###gzip on;server {listen 8081;server_name localhost;location /stat {rtmp_stat all;rtmp_stat_stylesheet stat.xsl;}location /stat.xsl {root nginx-rtmp-module/;}location /control {rtmp_control all;}#charset koi8-r;#access_log logs/host.access.log main;## Caching Static Files, put before first location#location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {# expires 14d;# add_header Vary Accept-Encoding;#}# For Naxsi remove the single # line for learn mode, or the ## lines for full WAF modelocation / {#include /nginx/conf/mysite.rules; # see also http block naxsi include line##SecRulesEnabled;##DeniedUrl "/RequestDenied";##CheckRule "$SQL >= 8" BLOCK;##CheckRule "$RFI >= 8" BLOCK;##CheckRule "$TRAVERSAL >= 4" BLOCK;##CheckRule "$XSS >= 8" BLOCK;root html;index index.html index.htm;}# For Naxsi remove the ## lines for full WAF mode, redirect location block used by naxsi##location /RequestDenied {## return 412;##}## Lua examples ! # location /robots.txt { # rewrite_by_lua ' # if ngx.var.http_host ~= "localhost" then # return ngx.exec("/robots_disallow.txt"); # end # '; # }#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;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {# proxy_pass http://127.0.0.1; #}# 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; # single backend process# fastcgi_pass myLoadBalancer; # or multiple, see example above# fastcgi_index index.php;# fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;# include fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one ##location ~ /\.ht {# deny all;#}}# another virtual host using mix of IP-, name-, and port-based configuration##server {# listen 8000;# listen somename:8080;# server_name somename alias another.alias;# location / {# root html;# index index.html index.htm;# }#}# HTTPS server##server {# listen 443 ssl spdy;# server_name localhost;# ssl on;# ssl_certificate cert.pem;# ssl_certificate_key cert.key;# ssl_session_timeout 5m;# ssl_prefer_server_ciphers On;# ssl_protocols TLSv1 TLSv1.1 TLSv1.2;# ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:ECDH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!eNULL:!MD5:!DSS:!EXP:!ADH:!LOW:!MEDIUM;# location / {# root html;# index index.html index.htm;# }#}}
推流鉴权文件PHP:on_publish.php,可以为任意服务端文件, on_publish 指定服务器鉴权地址,此代码简单的作了用户验证,也可以改成带数据库验证以及加入更多参数进行验证。
<?php// ?user=user&pass=pass$user = isset($_POST['user']) ? $_POST['user'] : ''; $pass = isset($_POST['pass']) ? $_POST['pass'] : '';if (empty($user) || empty($pass)) {echo "wrong query input";header('HTTP/1.0 500 error...');exit(); }$saveuser = $user; $savepass = $pass;if (strcmp($user, $saveuser) == 0 && strcmp($pass, $savepass) == 0) {echo "Username and Password OK"; } else {echo "Username or Password wrong";header('HTTP/1.0 404 Not Found');exit(); }?>
注意:在接受参数时一定用POST接收,否则鉴权失败。
更新配置文件,运行cmd命令:
> cd nginx > nginx.exe -c conf\nginx-win.conf
2、打开OBS客户端进行推流测试,按照如下步骤进行配置
注意:rtmp地址:rtmp://ip地址:1935/live?user=1&pass=2,后面的参数为鉴权所用,否则连接失败。
转载于:https://www.cnblogs.com/victorlyw/p/10107213.html
Nginx做流媒体服务Windows版实现直播相关推荐
- 通过live555实现H264 RTSP直播(Windows版)
为何标明"Windows版",因为firehood大神已经实现了linux版:通过live555实现H264 RTSP直播 相关文章: [1]Win7(Windows 7)下用VS ...
- flv + livego + obs 实现简易直播平台(windows版+Linux版)
直播运行效果: Windows版 1. 前端编写(网页播放视频功能) flvjs是b站开源出来的前端流媒体播放器 下载链接:https://github.com/saysmy/flvjs-pr354 ...
- ffmpeg,rtmpdump和nginx rtmp实现录屏,直播和录制
ffmpeg,rtmpdump和nginx rtmp实现录屏,直播和录制 2014年 四月 19日 周六 | tags: ffmpeg, rtmp, rtmpdump, nginx, -- (perm ...
- 使用 NGINX 搭建 RTMP 流媒体服务器实现直播功能
使用 NGINX 搭建 RTMP 流媒体服务器实现直播功能 本文介绍了如何使用 Nginx 搭建 RTMP 流媒体服务器,并提供配置文件和前端示例,实现直播功能. 环境 操作系统: Ubuntu 18 ...
- nginx+nginx-http-flv-module+ffmpeg/obs实现点播+直播
nginx+nginx-http-flv-module+ffmpeg/obs实现点播+直播 更新:2021/02/19 nginx+nginx-http-flv-module+ffmpeg/obs实现 ...
- 生产者消费者问题——C++ windows版 多生产者多消费者的队列实现
最进要写一个多线程加载资源的资源管理器(ResourceManager)和多线程音频解码器(MultiThread Decoder).因为距最近一次用到多线程放下好久了,所以今天把生产者消费者问题练一 ...
- flutter项目打包.exe文件发布windows版
目录 发布windows版 1.为现有的 Flutter 应用程序添加桌面支持 2..创建main_desktop.dart文件 3.hover安装和环境配置 4.初始化,并打包 坑1 发布windo ...
- 在WEBSTART中实现串口通信(WINDOWS版)
在WEBSTART中实现串口通信(WINDOWS版) 看到这个题目,你是不是问:这跟在JAVA中实现串口通信有什么区别?在JAVA中能做在WEBSTART中不就 一样吗? 真聪明,的确是这样的,但事实 ...
- 为何Windows版QuickTime突然寿终正寝?
在QuickTime中两个零日漏洞被披露.且苹果公司突然停止支持该软件后,美国国土安全部和趋势科技公司发布安全公告建议用户卸载Windows版QuickTime.苹果公司随后宣布Windows版Qui ...
最新文章
- inner join on, left join on, right join on要详细点的介绍?内连接,左外连接,右外连接。...
- windbg+VM 设置内核调试环境(双机调试)
- 芝枝.计算机与人文科学,2014人文并计算机学院选拔赛秩序册
- Sharding-JDBC水平分表(分片策略)_Sharding-Sphere,Sharding-JDBC分布式_分库分表工作笔记008
- 0基础学python要多久-怎么自学python,大概要多久?
- NGINX反向代理部署
- 为什么找不到使用rem的网站
- WPF复制异常问题(OpenClipboard 失败 (异常来自 HRESULT:0x800401D0 (CLIPBRD_E_CANT_OPEN)))
- Android程序配置热点IP,Android 10版本获取已连接本机热点的ip
- 计算机软件研究方法与技术路线,研究方法与技术路线
- flash 批量编译发布fla 文件
- 神经网络的基本结构介绍
- 【C语言】结构体指针与结构体数组
- 蓝屏终止代码:WHEA_UNCORRECTABLE_ERROR
- js获取手机号码归属地(省)
- 最长公共子序列、最长连续公共子序列、最长递增子序列
- Qt学习 第21节:窗口初始化EVENT
- facebook 使用的软件
- [TopCoder 12984] TorusSailing(高斯消元主元法优化)
- 螺旋测微器b类不确定度_螺旋测微器b类不确定度_物理实验直测量不确定度评估.ppt...