美文网首页
windows下搭建ffmpeg + rtmp 流媒体服务器

windows下搭建ffmpeg + rtmp 流媒体服务器

作者: Author_z | 来源:发表于2017-01-09 10:42 被阅读0次

    网络上已经有nginx服务器搭建的文档,为什么我还要写呢?
    啊哈!
    因为每个人得环境不一样没问题不一样,所以写这篇文章仅作备忘用!
    而且都不完整,百度出来都是同一篇文章...
    所以这次我从头到位记录下这次的过程....
    这...必将是一个漫长的过程...唉...
    如果能帮上你,那就更好了!!
    先看下这篇文章吧!

    windows下搭建基于nginx的rtmp服务器 - zxw_tiantan的博客
    http://blog.csdn.net/zxw_tiantan/article/details/53906253

    下载 nginx 1.7.11.3 Gryphon.zip
    附上最新版下载地址:
    http://nginx-win.ecsds.eu/download/nginx 1.7.11.3 Gryphon.zip

    下载完成后解压:
    将解压后的目录名: nginx 1.7.11.3 Gryphon 改成: nginx-1.7.11.3-Gryphon

    1. 下载服务器状态检查程序 stat.xsl
      https://github.com/arut/nginx-rtmp-module/
      将nginx-rtmp-module-master.zip解压后复制到目录:nginx-1.7.11.3-Gryphon下,
      保证stat.xls的目录为:nginx-1.7.11.3-Gryphon\nginx-rtmp-module\stat.xsl
    2. 配置文件 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;
    }

    http {
    #include /nginx/conf/naxsi_core.rules;
    include mime.types;
    default_type application/octet-stream;
    location /stat {
    rtmp_stat all;
    rtmp_stat_stylesheet stat.xsl;
    }
    location /stat.xsl {
    root nginx-rtmp-module/;
    }
    location /control {
    rtmp_control all;
    }

    #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       80;
        server_name  localhost;
    
        #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 mode

        location / {
            #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;
    #    }
    #}
    

    }

    rtmp {

    server {
    listen 1935;

    #直播流配置
      application rtmplive {
          live on;
      #为 rtmp 引擎设置最大连接数。默认为 off
      max_connections 1024;
    
       }
    
    
      application hls{
    
          live on;
          hls on;
          hls_path H:\phpStudy\WWW\hls;
          hls_fragment 1s;
      }
    

    }
    }

    ···

    好了!rtmp服务器搭建完成了!

    1. 启动服务器进入windows的cmd;
    > cd nginx-1.7.11.3-Gryphon
    > nginx.exe -c conf\nginx-win-rtmp.conf
    

    啊!!!!起不来~~rtmp加载不进去。。
    继续百度
    该安装ffmpeg了!
    来吧!

    最新下载直连:https://ffmpeg.zeranoe.com/builds/win64/static/ffmpeg-20161230-6993bb4-win64-static.zip
    官网:https://ffmpeg.zeranoe.com/builds/

    握草!!官网下载速度太慢!!等了好久!
    附上百度盘的链接吧:http://pan.baidu.com/s/1eSifLFc

    好勒!现在开始安装:
    首先要解压对不对?
    解压完成后复制里面的内容到C盘根目录下(需要新建一个名为ffmpeg的文件夹哦!)
    这样的:

    123.png

    然后呢?
    我们需要把ffmpeg命令添加到全局哦!
    右键点击我的电脑选择属性找到:

    456.png 789.png

    选择环境变量

    010.png 012.png
    写漏了。。。目录应该是:c:\ffmpeg\bin
    啊哈!到这就设置完成了!来试试吧!!
    出现这个就说明对了哦! 013.png

    那现在试试推流吧!

    ffmpeg推流命令:

    ffmpeg -re -i E:\QQ空间\我要找一个对象.mpg -vcodec libx264 -acodec aac -f flv rtmp://localhost:1935/rtmplive/home
    

    哎呀!推流时报错了。。rtmp服务器没有启动成功..
    太晚了 睡觉 明天继续。。。

    相关文章

      网友评论

          本文标题:windows下搭建ffmpeg + rtmp 流媒体服务器

          本文链接:https://www.haomeiwen.com/subject/zbycbttx.html