如何快速的開發一個完整的iOS直播app(推流篇)
阿新 • • 發佈:2022-05-10
開發一款直播app,肯定需要流媒體伺服器,本篇主要講解直播中流媒體伺服器搭建
,並且講解了如何利用FFMPEG編碼和推流,並且介紹了FFMPEG常見命令。
效果
一、安裝Homebrew
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:Nginx
是一個非常出色的HTTP伺服器,其特點是佔有記憶體少,併發能力強,事實上nginx的併發能力確實在同類型的網頁伺服器中表現較好。
- 從github
下載
Nginx到本地,增加home-brew對nginx的擴充套件
brew tap homebrew/nginx
2.安裝Nginx伺服器和rtmp模組
brew install nginx-full --with-rtmp-module
3.檢視是否安裝成功
在終端開啟nginx伺服器,輸入一下命令
nginx
-
nginx
:開啟nginx伺服器
在瀏覽器位址列輸入:http://localhost:8080 (直接點選)
如果出現下圖, 則表示安裝成功
三、配置rtmp
1.檢視nginx配置檔案安裝在哪
brew info nginx-full
2.用xcode開啟配置檔案,滾動到最後面(最後一個}後面即可,不能在{}裡面
),新增一下程式碼,進行配置,最後記得儲存
rtmp {
server {
listen 1990;
application liveApp {
live on;
record off;
}
}
}
-
application
:流媒體上應用名稱,可以隨意填 -
record off
:圖片有誤,不記錄資料
3.重新載入nginx的配置檔案
nginx -s reload
四、安裝ffmepg進行推流
brew install ffmpeg
五、使用ffmepg推流測試
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引數中文詳細解釋
六、使用VLC播放rtmp推流
1.下載VLC
2.開啟VLC,輸入直播地址,cmd + N
七、用ffmpeg抓取桌面以及攝像頭推流進行直播
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
音訊赫茲
作者:袁崢
連結:https://www.jianshu.com/p/53059be61546
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。