• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • Windows環境下基于NGINX進行rtmp推流直播

    標簽: 架構  nginx

    準備工作

    NGINX下載地址
    Rtmp擴展下載地址
    下載完進行解壓
    在這里插入圖片描述
    nginx點播設置

    worker_processes  1;
     
    events {
        worker_connections  1024;
    }
     
    ##################RTMP服務#################
    rtmp {
     
        server {
     
            listen 1935;  #//服務端口 
     
    	chunk_size 4096;   #//數據傳輸塊的大小
     
    	application video {
    	    play /usr/local/data/video; #//視頻文件存放位置,訪問方式rtmp://localhost:1935/video
     
    	    #如視頻路徑存有視頻welcome.mp4訪問路徑即為rtmp://localhost:1935/video/welcome.mp4
    	}
        }
    }
     
    http {
        include       mime.types;
     
        default_type  application/octet-stream;
     
        sendfile        on;
     
        keepalive_timeout  65;
     
        server {
     
            listen       80;
     
            server_name  localhost;
     
            location / {
                root   html;
                index  index.html index.htm;
            }
     
            error_page   500 502 503 504  /50x.html;
     
            location = /50x.html {
                root   html;
            }
        }
    }
    

    nginx直播設置

    worker_processes  1;
     
    events {
        worker_connections  1024;
    }
     
    ##################RTMP服務#################
    rtmp {
     
        server { 
     
            listen 1935;
     
            chunk_size 4096;
     
            application video {
               play /usr/local/data/video;
            }
     
    	application live{ #第一處添加的直播字段
    	   live on;
    	}
        }
     
    }
    ####啟動瀏覽器查看http://localhost:80/stat
    http {
        include       mime.types;
     
        default_type  application/octet-stream;
     
        sendfile        on;
     
        keepalive_timeout  65;
     
        server {
     
            listen       80;
     
            server_name  localhost;
     
        location /stat {     
                #第二處添加的location字段。
                rtmp_stat all;
                rtmp_stat_stylesheet stat.xsl;
        }
     
        location /stat.xsl { 
            #第二處添加的location字段。
            root /usr/local/nginx/nginx-rtmp-module/;
        }
     
            location / {
                root   html;
                index  index.html index.htm;
            }
     
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
    }
    

    nginx 直播回放配置

    worker_processes  1;
     
    events {
        worker_connections  1024;
    }
     
    ##################RTMP服務#################
    rtmp {
        server {
            listen 1935;
            chunk_size 4096;
     
            application video {
                play /usr/local/data/video;
            }
     
            application live {
     
    		live on;#直播模式
     
    		hls on; #這個參數把直播服務器改造成實時回放服務器。
     
    		wait_key on; #對視頻切片進行保護,這樣就不會產生馬賽克了。
     
    		hls_path /usr/local/data/hls; #切片視頻文件存放位置。
     
    		hls_fragment 10s;     #每個視頻切片的時長。
     
    		hls_playlist_length 60s;  #總共可以回看的事件,這里設置的是1分鐘。
     
    		hls_continuous on; #連續模式。
     
    		hls_cleanup on;    #對多余的切片進行刪除。
     
    		hls_nested on;     #嵌套模式。
            }
        }
    }
     
    http {
        include       mime.types;
     
        default_type  application/octet-stream;
     
        sendfile        on;
     
        keepalive_timeout  65;
     
        server {
                listen       80;
     
                server_name  localhost;
     
    	    location /stat {
    		    rtmp_stat all;
    		rtmp_stat_stylesheet stat.xsl;
    	    }
     
    	    location /stat.xsl {
    		root /usr/local/nginx/nginx-rtmp-module/;
    	    }
     
    	    location /live {  #這里也是需要添加的字段。
     
    		types {  
     
    		    application/vnd.apple.mpegurl m3u8;  
     
    		    video/mp2t ts;  
    		}
    		alias /opt/video/hls;   
    		expires -1;
    		add_header Cache-Control no-cache;  
    	    }  
     
    	   location / {
    		root   html;
    		index  index.html index.htm;
    	   }
     
    	   error_page   500 502 503 504  /50x.html;
     
    	   location = /50x.html {
    		root   html;
    	   }
        }
    }
    

    啟動nginx rtmp服務

    nginx.exe -c conf\nginx-win-rtmp.conf
    

    在這里插入圖片描述
    都弄完了之后安裝OBS

    安裝obs

    百度也可以查到OBS的官網進行下載,但是慢
    OBS的github下載地址
    默認就是中文版的,不要瞎找,自己按需下載
    在這里插入圖片描述
    安裝之后的設置
    在這里插入圖片描述

    服務器地址照著我的寫就行,直播秘鑰對應的是拉流地址,
    拉流地址等于 服務器地址+秘鑰

    在這里插入圖片描述
    需要在輸出里面設置模式為高級,不然會推流不成功

    在這里插入圖片描述
    最后進行推流
    在這里插入圖片描述
    點擊開始推流,,成功推流

    拉流

    播放器的demo

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta http-equiv="Access-Control-Allow-Origin" content="*">
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
        <title>測試rtmp直播源</title>
        <script src="http://vjs.zencdn.net/5.5.3/video.js"></script>
        <link href="http://vjs.zencdn.net/5.5.3/video-js.css" rel="stylesheet">
        <!-- If you'd like to support IE8 -->
        <script src="http://vjs.zencdn.net/ie8/1.1.1/videojs-ie8.min.js"></script>
    </head>
    
    <body>
        <div class="openFlashTips" style="width:300px;position:absolute;top:20px;left:225px;z-Index:9999;color:white">
            視頻無法正常播放,請點擊下方啟用flash</div>
        <video id="my-video" style="color:black;width:750px;height:350px" class="video-js" autoplay controls preload="auto"
            width="750" height="350" data-setup="{}">
            <source src='rtmp://127.0.0.1:1935/live/test' type='rtmp/flv' />
        </video>
        <embed width="300" height="70" class="openFlash" style="position:absolute;top:130px;left:225px;z-Index:9999;"
            type="application/x-shockwave-flash">
        <script type="text/javascript" language="JavaScript">
            function flashChecker() {
                var hasFlash = 0; //是否安裝了flash
                var flashVersion = 0; //flash版本
                var isIE = /*@cc_on!@*/ 0; //是否IE瀏覽器
    
                if (isIE) {
                    var swf = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');
                    if (swf) {
                        hasFlash = 1;
                        VSwf = swf.GetVariable("$version");
                        flashVersion = parseInt(VSwf.split(" ")[1].split(",")[0]);
                    }
                } else {
                    if (navigator.plugins && navigator.plugins.length > 0) {
                        var swf = navigator.plugins["Shockwave Flash"];
                        if (swf) {
                            hasFlash = 1;
                            var words = swf.description.split(" ");
                            for (var i = 0; i < words.length; ++i) {
                                if (isNaN(parseInt(words[i]))) continue;
                                flashVersion = parseInt(words[i]);
                            }
                        }
                    }
                }
                return {
                    f: hasFlash,
                    v: flashVersion
                };
            }
    
            var fls = flashChecker();
            var s = "";
            if (fls.f) {
                document.getElementsByClassName("openFlash")[0].style.display = "none";
                document.getElementsByClassName("openFlashTips")[0].style.display = "none";
                //        document.write("您安裝了flash,當前flash版本為: " + fls.v + ".x");
            } else {
                document.getElementsByClassName("openFlash")[0].style.display = "block";
                document.getElementsByClassName("openFlashTips")[0].style.display = "block";
                //        document.write("您沒有安裝flash");
            }
        </script>
    </body>
    
    </html>
    

    最終效果
    在這里插入圖片描述

    版權聲明:本文為weixin_39998006原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/weixin_39998006/article/details/106660447

    智能推薦

    iOS開發之利用IJKPlayer+nginx+rtmp搭建直播的推流和拉流

    最近項目中想實現直播的功能,所以研究了一段時間的直播功能,當然也是在別人的基礎上不斷的學習實現的,所以記錄一下,希望對大家有所幫助。 直播拉流功能: 這里使用了開源的IJKPlayer第三框架,ijkplayer 是一款做視頻直播的框架, 基于ffmpeg,是大多數搭建直播平臺的首選框架,當然各大云平臺都有自己的直播框架,具體大家使用的時候可以自行研究,有問題再留言,我這里不再說明框架的集成和拉流...

    iOS 直播推流 - 搭建基于RTMP的本地Nginx服務器報錯homebrew/nginx was deprecated. This tap is now empty as all its form

    最近搭建基于RTMP的本地Nginx服務器,沒想到第一步克隆就報錯:homebrew/nginx was deprecated. This tap is now empty as all its formulae were migrated.具體如下: 第一步使用: 報錯如下: 出現的原因是homebrew/nginx的git路徑變了(貌似是2018年3月更新) 查找得到把克隆到本地的命令更改后可...

    iOS直播--Nginx服務器搭建和RTMP,HLS推流實現

    2019獨角獸企業重金招聘Python工程師標準>>> Nginx介紹 Nginx ("engine x") 是一個高性能的HTTP和反向代理服務器,也是一個IMAP/POP3/SMTP服務器。Nginx是由Igor Sysoev為俄羅斯訪問量第二的Rambler.ru站點開發的,第一個公開版本0.1.0發布于2004年10月4日。其將源代碼以類BSD許可證的...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    猜你喜歡

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    requests實現全自動PPT模板

    http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...

    Linux C系統編程-線程互斥鎖(四)

    互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...

    統計學習方法 - 樸素貝葉斯

    引入問題:一機器在良好狀態生產合格產品幾率是 90%,在故障狀態生產合格產品幾率是 30%,機器良好的概率是 75%。若一日第一件產品是合格品,那么此日機器良好的概率是多少。 貝葉斯模型 生成模型與判別模型 判別模型,即要判斷這個東西到底是哪一類,也就是要求y,那就用給定的x去預測。 生成模型,是要生成一個模型,那就是誰根據什么生成了模型,誰就是類別y,根據的內容就是x 以上述例子,判斷一個生產出...

    精品国产乱码久久久久久蜜桃不卡