在看這篇之前,如果您還不了解直播原理,請查看這篇文章如何快速的開發一個完整的iOS直播app(原理篇)
開發一款直播app,肯定需要流媒體服務器,本篇主要講解直播中流媒體服務器搭建
,並且講解了如何利用FFMPEG編碼和推流,並且介紹了FFMPEG常見命令。
如果喜歡我的文章,可以關注我微博:袁峥Seemygo,也可以來小碼哥,了解下我們的iOS培訓課程。後續還會更新更多內容,有任何問題,歡迎簡書留言
袁峥Seemygo。。。
Homebrew簡稱brew,是Mac OSX上的軟件包管理工具,能在Mac中方便的安裝軟件或者卸載軟件。
1、打開終端, 查看是否已經安裝了Homebrew
, 直接終端輸入命令
* man命令:manual(手冊)的縮寫,可以查看某一命令的幫助信息,比如git,brew,順便可以查看有沒有按照這個命令.
man brewman brew.png
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
音頻赫茲