1. 程式人生 > >iOS簡單直播實現(一:建立本地rtmp伺服器)Mac上搭建直播伺服器Nginx+rtmp

iOS簡單直播實現(一:建立本地rtmp伺服器)Mac上搭建直播伺服器Nginx+rtmp

簡介

nginx是非常優秀的開源伺服器,用它來做hls或者rtmp流媒體伺服器是非常不錯的選擇,本人在網上整理了安裝流程,分享給大家並且作備忘。

步驟安裝

Homebrew簡稱brew,是Mac OSX上的軟體包管理工具,能在Mac中方便的安裝軟體或者解除安裝軟體,可以說Homebrew就是mac下的apt-get、yum神器

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

如果已經安裝過,而想要解除安裝:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)
"

2、安裝Nginx伺服器

增加對 nginx 的擴充套件;也就是從github上下載,home-brew對ngixnx的擴充套件

brew tap homebrew/nginx

3、安裝Nginx伺服器和rtmp模組

brew install nginx-full --with-rtmp-module

這個安裝,耗時相對來說比較長。通過操作以上步驟nginx和rtmp模組就安裝好了,下面開始來配置nginx的rtmp模組。

首先來看看我們的nginx安裝在哪裡

brew info nginx-full

執行上面的命令後我們可以看到資訊

  • nginx安裝所在位置  /usr/local/Cellar/nginx-full/1.10.1/bin/nginx
  • nginx配置檔案所在位置  /usr/local/etc/nginx/nginx.conf
  • nginx伺服器根目錄所在位置  /usr/local/var/www

執行命令 ,測試下是否能成功啟動nginx服務

nginx

命令列如下圖所示

出現Welcome to nginx ,代表nginx安裝成功了。

4、配置rtmp

用Xcode開啟nginx.conf, 找到/usr/local/etc/nginx/nginx.conf 檔案,拖入到Dock中的Xcode,就可以開啟.

或者開啟Finder Shift + command + G前往,用記事本工具開啟nginx.conf.

複製程式碼
http {
    ……
}
#在http節點下面(也就是檔案的尾部)加上rtmp配置:
rtmp {
    server {
        listen 
1935; application zbcs { live on; record off; } } }
複製程式碼

說明:

  1. rtmp是協議名稱
  2. server 說明內部中是伺服器相關配置
  3. listen 監聽的埠號, rtmp協議的預設埠號是1935
  4. application 訪問的應用路徑是 zbcs
  5. live on; 開啟實時
  6. record off; 不記錄資料

5. 儲存檔案後,重新載入nginx的配置檔案(這一步很重要

nginx -s reload

6. 安裝ffmepg工具

brew install ffmpeg

安裝這個需要等一段時間, 這時你可以準備一個視訊檔案作為來推流,然後安裝一個支援rtmp協議的視訊播放器.Mac下可以用 VLC(點選下載)

7、通過ffmepg命令進行推流

ffmpeg -re -i 你的視訊檔案的絕對路徑(如/Users/lideshan/Downloads/Demo.mp4)  -vcodec copy -f flv rtmp://localhost:1935/zbcs/room
// 如:ffmpeg -re -i /Users/jiangys/Documents/Document/demo.mp4  -vcodec copy -f flv rtmp://localhost:1935/zbcs/room

這裡zbcs是上面的配置檔案中,配置的應用的路徑名稱;後面的room可以隨便寫。

推流介面:

8. 驗證視訊

然後電腦上開啟vlc這個播放器軟體 點選File---->Open Network 在彈出來的框中選擇Network然後輸入URL:

rtmp://localhost:1935/zbcs/room

雙擊播放

播放介面

報錯處理

1.ffmepg命令推流的時候,提示連線失敗。[tcp @ 0x7ff162504b60] Connection to tcp://localhost:1935 failed (Connection refused), trying next address

出現這個錯,是因為配置了nginx.conf後,需要重啟nginx。輸入命令重啟後就沒有問題了

nginx -s reload

解決方式:由於安裝後nginx伺服器,有時需要等上幾分鐘才生效。如果還不生效,測試下是否能成功啟動nginx服務,命令

nginx

具體請參考“步驟安裝”第三點。

另:當前只支援rtmp拉流,如果想要支援HLS ,請參考下一篇文章:

相關推薦

iOS簡單直播實現建立本地rtmp伺服器Mac搭建直播伺服器Nginx+rtmp

簡介 nginx是非常優秀的開源伺服器,用它來做hls或者rtmp流媒體伺服器是非常不錯的選擇,本人在網上整理了安裝流程,分享給大家並且作備忘。 步驟安裝 Homebrew簡稱brew,是Mac OSX上的軟體包管理工具,能在Mac中方便的安裝軟體或者解除安裝軟體

簡單直播實現建立本地rtmp伺服器Mac搭建直播伺服器Nginx+rtmp

簡介 nginx是非常優秀的開源伺服器,用它來做hls或者rtmp流媒體伺服器是非常不錯的選擇,本人在網上整理了安裝流程,分享給大家並且作備忘。 步驟安裝 1、安裝Homebrow Homebrew簡稱brew,是Mac OSX上的軟體包管理工具,能在Mac中方便的安裝軟體

iOS簡單直播實現推流

 推流用的是一個第三方的IFLiveKit框架。這個框架基於rtmp協議的,c語言和oc語言分開的非常清楚,對oc語言非常友好,使用起來相對簡單。   IFLiveKit內部集成了GPUIImage。內部實現了圖片渲染等美豔效果。減少了開發時候美豔效果的除錯。   需

【NoSql】Redis實踐篇-簡單demo實現

     Redis是一個key-value儲存系統。Redis的出現,很大程度補償了memcached這類key/value儲存的不足,在部分場合可以對關係資料庫起到很好的補充作用     Redis

資料結構篇圖的遍歷深度優先遍歷

深度優先遍歷,也稱作深度優先搜尋,縮寫為DFS 深度優先遍歷從某個頂點出發,訪問此頂點,然後從v的未被訪問的鄰接點觸發深度優先便利圖,直至所有和v有路徑想通的頂點都被訪問到。 這樣我們一定就訪問到所有結點了嗎,沒有,可能還有的分支我們沒有訪問到,所以需要回溯(一般情況下都設定一個數組,來

《圖解HTTP》讀書筆記網路基礎TCP/IP

好書什麼時候開始讀都不晚。作為一個測試人員,是一定要掌握一些網路的基礎知識的。希望能夠邊讀書邊在這裡記錄筆記,便於加深理解以及日後查閱。 一、TCP/IP協議族 計算機與網路裝置要互相通訊,雙方必須基於相同的方法。比如,探測訊號目標、由誰先發起通訊、使用哪種語言進行通訊、怎樣結束通訊等規則需要事先確定。我

.NET windows服務創建windows服務

ati 如何 安裝程序 log 寫入 註意 pat 名稱 請求 引用地址:https://docs.microsoft.com/zh-cn/dotnet/framework/windows-services/how-to-create-windows-services

深入淺出React+ReduxReact 元件的資料

前言 “差勁的程式設計師操心程式碼,優秀的程式設計師操心資料結構和它們之間的關係 。 ” 一一L

Mac搭建直播伺服器Nginx+rtmp

簡介 nginx是非常優秀的開源伺服器,用它來做hls或者rtmp流媒體伺服器是非常不錯的選擇,本人在網上整理了安裝流程,分享給大家並且作備忘。 步驟安裝 Homebrew簡稱brew,是Mac OSX上的軟體包管理工具,能在Mac中方便的安裝軟體或者解除安裝軟體,可以說Homebrew就是mac下

ios tableView那些事建立一個簡單的tableView

工作也有半年多了!幾乎每個專案中的會用到tableview這個神奇而好用的控制元件,在學習和工作中都會看別人的部落格!對我有很大的幫助,就如同站在巨人的肩膀上的感覺吧 哈哈!於是決定重新開始寫部

android硬編碼h264資料,並使用rtp推送資料流,實現一個簡單直播-MediaCodec

  寫在前面:我並非專業做流媒體的coder,對流媒體行業無比崇拜,只是做了幾年安卓車載ROM,對安卓AV開發算是略懂。本篇部落格是我對MediaCodec編解碼和rtp推流的一次嘗試,希望能給有需要的朋友一些細微的幫助,不喜勿噴,如果有不對的地方希望大神指正共

ASP.NET Core Web API下事件驅動型架構的實現一個簡單實現

很長一段時間以來,我都在思考如何在ASP.NET Core的框架下,實現一套完整的事件驅動型架構

Javascript基礎簡單匯總元素獲取

問題 元素節點 all push 傳說 length [] nbsp 文檔 在頁面腳本中,如果要對頁面元素進行操作,那麽我們就要獲取到這個元素 那麽在獲取元素之前首先得要了解什麽是DOM(document object model) 在DOM,元素是以節點的形式表示的,每

多種排序算法的思路和簡單代碼的實現

insert i++ 前後端 分享 size quicksort 執行 判斷 clas 就自己簡單的理解了一些排序算法(JAVA)思路和代碼分享給大家:歡迎大家進行交流。 直接插入排序,折半插入排序,冒泡排序,快速排序 1 public class Sort { 2

Android項目實戰十六QQ空間實現—— 展示說說中的評論內容並有相應點擊事件

con toast short demo append 集合 obj parent 自帶 原文:Android項目實戰(十六):QQ空間實現(一)—— 展示說說中的評論內容並有相應點擊事件大家都玩QQ空間客戶端,對於每一個說說,我們都可以評論,那麽,對於某一條評論:

KVM虛擬化的四種簡單網絡模型介紹及實現

_for only 應該 code eth tun x86_64 信息 dock KVM中的四種簡單網絡模型,分別如下:1、隔離模型:虛擬機之間組建網絡,該模式無法與宿主機通信,無法與其他網絡通信,相當於虛擬機只是連接到一臺交換機上。2、路由模型:相當於虛擬機連接到一臺路由

【Android】從無到有手把手步步教你使用最簡單的 Fragment

轉載請註明出處,原文連結:https://blog.csdn.net/u013642500/article/details/80515227 【本文適用讀者】         知道 Fragment 是什麼,不知

資料結構實現動態陣列C++版

資料結構實現(一):動態陣列(C++版) 1. 概念及基本框架 2. 基本操作程式實現 2.1 增加操作 2.2 刪除操作 2.3 修改操作 2.4 查詢操作 2.5 其他操作 3. 演算法複雜度分析

iOS研發助手DoraemonKit技術實現

一、前言 一個比較成熟的App,經歷了多個版本的迭代之後,為了方便調式和測試,往往會積累一些工具來應付這些場景。最近我們組就開源了一款適用於iOS App線下開發、測試、驗收階段,內建在App中的工具集合。使用DoraemonKit,你無需連線電腦,就可以對於App的資訊進行快速的檢視。一鍵接入、使用方便,

JAVA高階基礎8---Set的典型實現HashSet

HHashSet 注:更多詳細方法請自行在 API 上查詢 HashSet 是由hash表(hashMap)支援,不保證元素的迭代順恆久不變,允許存在null值,元素不允許重複,同時,不是執行緒安全的 HashSet是基於HashMap實現的。   &n