在看這篇之前,如果您還不了解直播原理,請查看這篇文章如何快速的開發一個完整的iOS直播app(原理篇)
開發一款直播app,肯定需要流媒體服務器,本篇主要講解直播中流媒體服務器搭建,並且講解了如何利用FFMPEG編碼和推流,並且介紹了FFMPEG常見命令。
如果喜歡我的文章,可以關注我微博:袁峥Seemygo,也可以來小碼哥,了解下我們的iOS培訓課程。後續還會更新更多內容,有任何問題,歡迎簡書留言袁峥Seemygo。。。

Homebrew簡稱brew,是Mac OSX上的軟件包管理工具,能在Mac中方便的安裝軟件或者卸載軟件。
1、打開終端, 查看是否已經安裝了Homebrew, 直接終端輸入命令
* man命令:manual(手冊)的縮寫,可以查看某一命令的幫助信息,比如git,brew,順便可以查看有沒有按照這個命令.
man brew

2、 執行命令,安裝Homebrew
執行命令後,需要按回車,並且需要輸入電腦密碼。
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Nginx:Nginx是一個非常出色的HTTP服務器,其特點是占有內存少,並發能力強,事實上nginx的並發能力確實在同類型的網頁服務器中表現較好。
從github下載Nginx到本地,增加home-brew對nginx的擴展
brew tap homebrew/nginx

2.安裝Nginx服務器和rtmp模塊
brew install nginx-full --with-rtmp-module

3.查看是否安裝成功
在浏覽器地址欄輸入:http://localhost:8080 (直接點擊)
如果出現下圖, 則表示安裝成功

1.查看nginx配置文件安裝在哪
brew info nginx-full
2.用xcode打開配置文件,滾動到最後面(最後一個}後面即可,不能在{}裡面),添加一下代碼,進行配置,最後記得保存
rtmp {
server {
listen 1990;
application liveApp {
live on;
record off;
}
}
}
application:流媒體上應用名稱,可以隨意填
3.重新加載nginx的配置文件
nginx -s reload
brew install ffmpeg

ffmpeg -re -i (視頻全路徑) -vcodec copy -f flv (rtmp路徑 ffmpeg -re -i /Users/yuanzheng/Desktop/02-如何學習項目.mp4 -vcodec copy -f flv rtmp://localhost:1990/liveApp/room
需要跟配置的一一對應,端口,應用名稱,room可以隨便寫
延時:發送流媒體的數據的時候需要延時。不然的話,FFmpeg處理數據速度很快,瞬間就能把所有的數據發送出去,流媒體服務器是接受不了的。因此需要按照視頻實際的幀率發送數據
-re: 一定要加,代表按照幀率發送,否則ffmpeg會一股腦地按最高的效率發送數據
-i : 輸入文件
-vcodec copy: 強制使用codec編解碼方式,要加,否則ffmpeg會重新編碼輸入的H.264裸流
-f 強制轉換為什麼格式,後接格式
ffmpeg參數中文詳細解釋
1.下載VLC
2.打開VLC,輸入直播地址,cmd + N



1.首先查看ffmpeg是否支持對應的設備,在OSX下面,Video和Audio設備使用的是avfoundation,所以可以使用avfoundation來查看
ffmpeg -f avfoundation -list_devices true -i ""

2.抓取桌面和攝像頭進行推流
ffmpeg -f avfoundation -framerate 30 -i "1:0" -f avfoundation -framerate 30 -video_size 640x480 -i "0" -c:v libx264 -preset slow -filter_complex 'overlay=main_w-overlay_w-10:main_h-overlay_h-10' -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://localhost:1990/liveApp/room
-f avfoundation 轉換為avfoundation
-framerate 30 : 設置幀率 30
-i "1:0" : 設置輸出,視頻:Capture screen 音頻:Built-in Microphone
-f avfoundation -framerate 30 -video_size 640x480 : 設置幀率和視頻尺寸
-c:v libx264 設置視頻編碼,H.264編碼 優點是同等清晰度,視頻文件更小 缺點就是轉換慢
-c:v flv 標准FLV編碼 這個好處是速度快 清晰度高的話 視頻文件會比較大
-preset slow 使用慢速模式 延遲長 清晰度高
ffmpeg的轉碼延時測試與設置優化
-filter_complex 'overlay=main_w-overlay_w-10:main_h-overlay_h-10':給視頻打水印
-acodec libmp3lame 強制指定音頻處理模式
-ac 1 聲道選擇
-ar 44100 音頻赫茲