前言
在看這篇之前,如果您還不了解直播原理兢交,請(qǐng)查看這篇文章如何快速的開(kāi)發(fā)一個(gè)完整的iOS直播app(原理篇)
開(kāi)發(fā)一款直播app酣藻,肯定需要流媒體服務(wù)器藐鹤,本篇主要講解直播中流媒體服務(wù)器搭建
,并且講解了如何利用FFMPEG編碼和推流登疗,并且介紹了FFMPEG常見(jiàn)命令排截。
如果喜歡我的文章,可以關(guān)注我微博:袁崢Seemygo
效果
一谜叹、安裝Homebrew
Homebrew簡(jiǎn)稱brew匾寝,是Mac OSX上的軟件包管理工具,能在Mac中方便的安裝軟件或者卸載軟件荷腊。
1艳悔、打開(kāi)終端, 查看是否已經(jīng)安裝了Homebrew
, 直接終端輸入命令
* man命令:manual(手冊(cè))的縮寫,可以查看某一命令的幫助信息女仰,比如git,brew,順便可以查看有沒(méi)有按照這個(gè)命令.
man brew
2猜年、 執(zhí)行命令抡锈,安裝Homebrew
- 執(zhí)行命令后,需要按回車乔外,并且需要輸入電腦密碼床三。
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
二、利用安裝nginx
Nginx:Nginx
是一個(gè)非常出色的HTTP服務(wù)器杨幼,其特點(diǎn)是占有內(nèi)存少撇簿,并發(fā)能力強(qiáng),事實(shí)上nginx的并發(fā)能力確實(shí)在同類型的網(wǎng)頁(yè)服務(wù)器中表現(xiàn)較好差购。
- 從github
下載
Nginx到本地,增加home-brew對(duì)nginx的擴(kuò)展
brew tap homebrew/nginx
2.安裝Nginx服務(wù)器和rtmp模塊
brew install nginx-full --with-rtmp-module
3.查看是否安裝成功
在終端開(kāi)啟nginx服務(wù)器四瘫,輸入一下命令
nginx
-
nginx
:開(kāi)啟nginx服務(wù)器
在瀏覽器地址欄輸入:http://localhost:8080 (直接點(diǎn)擊)
如果出現(xiàn)下圖, 則表示安裝成功
三、配置rtmp
1.查看nginx配置文件安裝在哪
brew info nginx-full
2.用xcode打開(kāi)配置文件欲逃,滾動(dòng)到最后面(
最后一個(gè)}后面即可找蜜,不能在{}里面
),添加一下代碼稳析,進(jìn)行配置洗做,最后記得保存
rtmp {
server {
listen 1990;
application liveApp {
live on;
record off;
}
}
}
-
application
:流媒體上應(yīng)用名稱,可以隨意填 -
record off
:圖片有誤彰居,不記錄數(shù)據(jù)
3.重新加載nginx的配置文件
nginx -s reload
四诚纸、安裝ffmepg進(jìn)行推流
brew install ffmpeg
五、使用ffmepg推流測(cè)試
ffmpeg -re -i (視頻全路徑) -vcodec copy -f flv (rtmp路徑
ffmpeg -re -i /Users/yuanzheng/Desktop/02-如何學(xué)習(xí)項(xiàng)目.mp4 -vcodec copy -f flv rtmp://localhost:1990/liveApp/room
- 需要跟配置的一一對(duì)應(yīng)裕菠,端口咬清,應(yīng)用名稱,room可以隨便寫
- 延時(shí):發(fā)送流媒體的數(shù)據(jù)的時(shí)候需要延時(shí)奴潘。不然的話旧烧,F(xiàn)Fmpeg處理數(shù)據(jù)速度很快,瞬間就能把所有的數(shù)據(jù)發(fā)送出去画髓,
流媒體服務(wù)器是接受不了的
掘剪。因此需要按照視頻實(shí)際的幀率
發(fā)送數(shù)據(jù) - -re: 一定要加,代表按照幀率發(fā)送奈虾,否則ffmpeg會(huì)一股腦地按最高的效率發(fā)送數(shù)據(jù)
- -i : 輸入文件
- -vcodec copy: 強(qiáng)制使用codec編解碼方式夺谁,要加,否則ffmpeg會(huì)重新編碼輸入的H.264裸流
- -f 強(qiáng)制轉(zhuǎn)換為什么格式肉微,后接格式
- ffmpeg參數(shù)中文詳細(xì)解釋
六匾鸥、使用VLC播放rtmp推流
1.下載VLC
2.打開(kāi)VLC,輸入直播地址,cmd + N
七碉纳、用ffmpeg抓取桌面以及攝像頭推流進(jìn)行直播
1.首先查看ffmpeg是否支持對(duì)應(yīng)的設(shè)備勿负,在OSX下面,Video和Audio設(shè)備使用的是avfoundation劳曹,所以可以使用avfoundation來(lái)查看
ffmpeg -f avfoundation -list_devices true -i ""
2.抓取桌面和攝像頭進(jìn)行推流
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
轉(zhuǎn)換為avfoundation -
-framerate 30
: 設(shè)置幀率 30 -
-i "1:0"
: 設(shè)置輸出奴愉,視頻:Capture screen
音頻:Built-in Microphone
-
-f avfoundation -framerate 30 -video_size 640x480
: 設(shè)置幀率和視頻尺寸 -
-c:v libx264
設(shè)置視頻編碼琅摩,H.264編碼 優(yōu)點(diǎn)是同等清晰度,視頻文件更小 缺點(diǎn)就是轉(zhuǎn)換慢 -
-c:v flv
標(biāo)準(zhǔn)FLV編碼 這個(gè)好處是速度快 清晰度高的話 視頻文件會(huì)比較大 -
-preset slow
使用慢速模式 延遲長(zhǎng) 清晰度高 - ffmpeg的轉(zhuǎn)碼延時(shí)測(cè)試與設(shè)置優(yōu)化
-
-filter_complex 'overlay=main_w-overlay_w-10:main_h-overlay_h-10'
:給視頻打水印 -
-acodec libmp3lame
強(qiáng)制指定音頻處理模式 -
-ac 1
聲道選擇 -
-ar 44100
音頻赫茲