win7下基於nginx和ffmpeg的rtmp流媒體服務器搭建

NO IMAGE

前提:

最近公司要做直播方面的APP開發,剛接觸到的時候是一臉懵逼狀態,經過兩天的採坑填坑終於搞懂了直播的流程,在此記錄一下。一是怕自己忘記,另外一個是給其他人做一個參考吧。
ps:現在好多的文章千篇一律,不負責任的複製粘貼,讓人摸不著頭腦,並且話說的不夠細緻,讓人很是頭疼。

準備條件

  • nginx-rtmp-module(帶rtmp模塊)

  • ffmpeg 密碼:eha3

  • screencapturer 密碼:ypgz (是一個虛擬設備,在使用FFMpeg之前,需要安裝)

  • vlc播放器 密碼:3yjf

    首先 nginx-rtmp-module是nginx的一個組件,可以自己編譯生成,也可以從網上下載。需要注意的是,從nginx官網上下載的版本是不帶rtmp模塊的,但您可以通過: nginx-win.ecsds.eu/找到包含rtmp組件的nginx版本,比如:nginx 1.7.8.1 Gryphon

    然後,解壓按下ctrl+R鍵輸入cmd打開命令行窗口,切換到解壓的路徑下,輸入nginx -V 查看 nginx版本,如下圖所示表示成功:

    win7下基於nginx和ffmpeg的rtmp流媒體服務器搭建

  • conf 下的nginx.conf配置文件(如果沒有需要自己新建)
    如下圖所示路徑:

    win7下基於nginx和ffmpeg的rtmp流媒體服務器搭建

    PS:下圖是nginx配置文件,如果沒有需要自己手動創建

win7下基於nginx和ffmpeg的rtmp流媒體服務器搭建

  • nginx.conf的配置內容

      #將以下內容拷貝到conf/nginx.conf文件中。
    #nginx進程數,建議設置為等於CPU總核心數
    worker_processes  2;
    #工作模式與連接數上限
     events {
       worker_connections  8192;
     }
    
     rtmp_auto_push on;
    
    rtmp {
    server {
      listen 1935;
      application myapp {
          live on;
      }       
     }
    }
    
  • nginx啟動方式

    win7下基於nginx和ffmpeg的rtmp流媒體服務器搭建

    如上圖所示:切換到你的nginx安裝路徑下然後輸入 start nginx即可啟動
    注意: 啟動也可以輸入 nginx.exe -c conf\nginx-win-rtmp.conf,這種方法帶來的問題是不能優雅退出,切記!
    然後打開任務管理器可以看到nginx進程已經啟動,如下圖所示:

win7下基於nginx和ffmpeg的rtmp流媒體服務器搭建

其次,基於ffmpeg的推拉流測試

    ffmpeg是一個自由軟件,它提供了一整套多媒體的解決方案,從採集、編碼、轉換、播放應有盡有。
在流媒體應用領域不借助 ffmpeg 的力量,就好比做 windows 程序而不用 Visual Studio ,做 iOSApp 
不用 XCode 一樣,需要很大的勇氣。
  • ffmpeg 安裝
    解壓ffmpeg到指定文件夾下,我這裡是在D盤的ProgramFile下的ffmpeg路徑,然後將ffmpeng的bin路徑添加到系統的path路徑下

    win7下基於nginx和ffmpeg的rtmp流媒體服務器搭建

__注意:__裡面的裡面的兩個視頻文件是我添加進去的,沒有什麼作用。
將D:\ProgramFile\ffmpg\ffmpeg-win64\bin 添加到環境變量的PATH後面,當然要根據你自己的安裝路徑配置環境變量。

  • 1、 ffmpeg實現錄屏推流
    打開windows命令行在命令行下輸入:

       ffmpeg -f gdigrab -i desktop -r 16 -vcodec h264 -acodec aac -f flv 
       rtmp://192.168.0.197/myapp/pc
    

    注意: 這是一行命令行下的,沒有空格,這裡是方便你們查看。如下圖所示,推流已經開始了。

    win7下基於nginx和ffmpeg的rtmp流媒體服務器搭建

  • vlc串流配置
    打開vlc客戶端,點擊媒體,在下拉框選項中選中__打開網絡串流__這一個選項,會彈出如下圖所示的對話框,在對話框中填入剛才第二行連接( rtmp://192.168.0.197/myapp/pc)即可,當然我這個是在局域網下面的。

    win7下基於nginx和ffmpeg的rtmp流媒體服務器搭建

解釋:

  • 1、myapp為application的名字,由nginx的conf中定義
  • 2、pc為直播流的名字,由推送方定義
  • 2、ffmpeg播放視頻文件
    切換到保存視頻文件的路徑下,我這裡是在nginx路徑下,如下圖所示:

    win7下基於nginx和ffmpeg的rtmp流媒體服務器搭建

那麼對應的命令就是這樣寫:

ffmpeg -re -i gdiOut.avi -vcodec libx264 -acodec aac -f flv 
rtmp://192.168.0.197:1935/myapp/home

解釋:

  • 1、myapp為application的名字,由nginx的conf中定義
  • 2、home為直播流的名字,由推送方定義

最後

  經過兩天的採坑不斷嘗試終於搞定了服務器這塊,下來直播的還需要自己去努力完成了。我相信有志者事竟成,
一定會死磕到底,去解決那個難題。

致謝

第一講:win7下快速搭建媒體服務器的方法
Nginx搭建RTMP推拉流服務器
另外推薦一個Android交流群493180098,如需轉載請標明出處,謝謝。

相關文章

AndroidGoogle應用內支付

Android海外應用內支付之ONEstore(韓國支付SDK)集成

Androidsocket高級用法(自定義協議和ProtocolBuffer使用)

Android獲取驗證碼自動填充