1. 程式人生 > 其它 >如何快速的開發一個完整的iOS直播app(推流篇)

如何快速的開發一個完整的iOS直播app(推流篇)

開發一款直播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的併發能力確實在同類型的網頁伺服器中表現較好。

  1. 從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
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。