1. 程式人生 > >mac下利用ffmpeg+nginx搭建直播伺服器的總結

mac下利用ffmpeg+nginx搭建直播伺服器的總結

最近自己一直在研究直播相關的技術,前一陣子用了騰訊雲簡單的實現了直播,騰訊雲實現起來很方便,而且SDK對一些關鍵問題的處理也做得很好,開發者直接在騰訊雲平臺上申請認證後便可進行騰訊雲直播的測試開發了.除了像騰訊雲,七牛雲這些三方平臺外,開發者也可以搭建rtmp+nginx本地環境,通過HLS協議進行直播測試.這裡記錄今天的整個研究過程以及那些被坑了的地方,希望能對大家有所幫助.

一.nginx的配置

有關nginx的配置可以參考這篇文章.這裡主要寫一下配置過程中踩到的坑!

1.首先通過homebrow安轉nginx的時候,因為要用到rtmp協議,brew install nginx-full 後面一定要帶上--with-rtmp-module!否則在接下的操作過程中又會遇到接下來我踩到的雷!

        

在終端輸入 brew info nginx-full會看到有關nginx是一些詳細資訊,其中這幾條命令非常有用,在下文中會用到其中的一條或多條.

安裝成功後

nginx安裝所在位置  /usr/local/Cellar/nginx-full/1.10.1/bin/nginx


  • nginx配置檔案所在位置  /usr/local/etc/nginx/nginx.conf

  • nginx伺服器根目錄所在位置  /usr/local/var/www

2.正如第一點所說的,如果在安裝nginx的時候忘記了--with-rtmp-module,那麼在開啟nginx.conf檔案配置rtmp協議的時候會出現 ""的報錯!原因不多解釋了,解決方法是刪除nginx重新安裝.在執行刪除命令brew uninstall nginx 的時候,我有遇到了新的問題:終端返回Error: No such keg: /usr/local/Cellar/nginx ,意思是說找不到這個目錄.於是看了下nginx的所在的資料夾是nginx-full而不是nginx.因此這個問題該如何解決大家也知道了吧!
在配置rtmp的過程中還遇到了一個小問題:nginx: [error] open() "/usr/local/var/run/nginx.pid" failed (2: No such file or directory) 不知為什麼,我的pid檔案突然間消失了......解決這個問題的方法是:在終端依次輸入nginx  nginx -s reload. 3.在啟動nginx的時候,肯定會有小夥伴遇到下面的問題
這說明我的8080埠和1935埠(在nginx.conf中配置的rtmp協議埠)被佔用.解決這個問題的方法也很簡單,首先看一下那個程序佔用了這些埠,發現後將其kill掉便搞定! 在終端輸入
lsof -i tcp:8080檢視8080埠被哪個程序佔用

   隨後將其殺死!kill 12441(這裡輸入自己的PID號). 接下來, (1)重新執行nginx (2)重新載入配置檔案 nginx -s reload (3)重新載入日誌    nginx -s reopen (4)停止nginx   nginx -s stop (5)有序退出nginx  nginx -s quit 我在做這個步驟的時候,只執行了前兩步,隨後關閉終端,開啟反覆執行了兩次就搞定了.上述步驟不成功的小夥伴也可以試試我的解決方案. 到這裡,nginx的配置也就差不多了,如果小夥伴們一路走下來很順暢,那麼這些話當我沒說好了大笑. 二.ffmpeg Mac 下 ffmpeg就不說了,Windows 的小夥伴可Google,翻不出去的話就直接找度娘了大笑. ffmpeg的常用命令還是有必要了解一下的,詳細可以參考這篇文章 到這裡,本地的環境已經配置得差不多,接下來要做的就是實現推流拉流了! 推拉流在iOS端,可以分別通過LFLiveKit還有B站開源的ijkplayer來實現! 這裡沒有記錄具體的實現過程,因為網上的資料已經很詳細了.每個人在研究新事物的過程中難免會遇到各種各樣的問題,希望上述總結能夠對大家有所幫助!博主學識淺薄,希望多多得到大家的批評指正.也歡迎大傢俬信與我一起交流! 參考的一些文章: