声明:网上有很多关于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版实现直播相关推荐

  1. 通过live555实现H264 RTSP直播(Windows版)

    为何标明"Windows版",因为firehood大神已经实现了linux版:通过live555实现H264 RTSP直播 相关文章: [1]Win7(Windows 7)下用VS ...

  2. flv + livego + obs 实现简易直播平台(windows版+Linux版)

    直播运行效果: Windows版 1. 前端编写(网页播放视频功能) flvjs是b站开源出来的前端流媒体播放器 下载链接:https://github.com/saysmy/flvjs-pr354 ...

  3. ffmpeg,rtmpdump和nginx rtmp实现录屏,直播和录制

    ffmpeg,rtmpdump和nginx rtmp实现录屏,直播和录制 2014年 四月 19日 周六 | tags: ffmpeg, rtmp, rtmpdump, nginx, -- (perm ...

  4. 使用 NGINX 搭建 RTMP 流媒体服务器实现直播功能

    使用 NGINX 搭建 RTMP 流媒体服务器实现直播功能 本文介绍了如何使用 Nginx 搭建 RTMP 流媒体服务器,并提供配置文件和前端示例,实现直播功能. 环境 操作系统: Ubuntu 18 ...

  5. nginx+nginx-http-flv-module+ffmpeg/obs实现点播+直播

    nginx+nginx-http-flv-module+ffmpeg/obs实现点播+直播 更新:2021/02/19 nginx+nginx-http-flv-module+ffmpeg/obs实现 ...

  6. 生产者消费者问题——C++ windows版 多生产者多消费者的队列实现

    最进要写一个多线程加载资源的资源管理器(ResourceManager)和多线程音频解码器(MultiThread Decoder).因为距最近一次用到多线程放下好久了,所以今天把生产者消费者问题练一 ...

  7. flutter项目打包.exe文件发布windows版

    目录 发布windows版 1.为现有的 Flutter 应用程序添加桌面支持 2..创建main_desktop.dart文件 3.hover安装和环境配置 4.初始化,并打包 坑1 发布windo ...

  8. 在WEBSTART中实现串口通信(WINDOWS版)

    在WEBSTART中实现串口通信(WINDOWS版) 看到这个题目,你是不是问:这跟在JAVA中实现串口通信有什么区别?在JAVA中能做在WEBSTART中不就 一样吗? 真聪明,的确是这样的,但事实 ...

  9. 为何Windows版QuickTime突然寿终正寝?

    在QuickTime中两个零日漏洞被披露.且苹果公司突然停止支持该软件后,美国国土安全部和趋势科技公司发布安全公告建议用户卸载Windows版QuickTime.苹果公司随后宣布Windows版Qui ...

最新文章

  1. inner join on, left join on, right join on要详细点的介绍?内连接,左外连接,右外连接。...
  2. windbg+VM 设置内核调试环境(双机调试)
  3. 芝枝.计算机与人文科学,2014人文并计算机学院选拔赛秩序册
  4. Sharding-JDBC水平分表(分片策略)_Sharding-Sphere,Sharding-JDBC分布式_分库分表工作笔记008
  5. 0基础学python要多久-怎么自学python,大概要多久?
  6. NGINX反向代理部署
  7. 为什么找不到使用rem的网站
  8. WPF复制异常问题(OpenClipboard 失败 (异常来自 HRESULT:0x800401D0 (CLIPBRD_E_CANT_OPEN)))
  9. Android程序配置热点IP,Android 10版本获取已连接本机热点的ip
  10. 计算机软件研究方法与技术路线,研究方法与技术路线
  11. flash 批量编译发布fla 文件
  12. 神经网络的基本结构介绍
  13. 【C语言】结构体指针与结构体数组
  14. 蓝屏终止代码:WHEA_UNCORRECTABLE_ERROR
  15. js获取手机号码归属地(省)
  16. 最长公共子序列、最长连续公共子序列、最长递增子序列
  17. Qt学习 第21节:窗口初始化EVENT
  18. facebook 使用的软件
  19. [TopCoder 12984] TorusSailing(高斯消元主元法优化)
  20. 螺旋测微器b类不确定度_螺旋测微器b类不确定度_物理实验直测量不确定度评估.ppt...

热门文章

  1. usmssosetup 单点登录被禁用_SSO(单点登录)实施中遇到的几个问题
  2. r、s sm2签名值_用Openssl计算ECDSA签名
  3. XML技术人员的十大问题
  4. java实现二维码生成的几个方法
  5. POJ - 1905 (几何+二分)
  6. python 面向对象程序设计 1.3 请为学校图书管理系统设计一个管理员类和一个学生类。
  7. SEM百度推广初学者入门级教程
  8. wordpress网站同步微信小程序源码搭建(附源码,亲测)
  9. Scrcpy - 基础使用
  10. 阅读科研文献的一些做法