你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發基礎 >> 如何快速的開發一個完整的iOS直播App(推流篇)

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

編輯:IOS開發基礎

前言

在看這篇之前,如果您還不了解直播原理,請查看這篇文章如何快速的開發一個完整的iOS直播app(原理篇)

開發一款直播app,肯定需要流媒體服務器,本篇主要講解直播中流媒體服務器搭建,並且講解了如何利用FFMPEG編碼和推流,並且介紹了FFMPEG常見命令。

如果喜歡我的文章,可以關注我微博:袁峥Seemygo,也可以來小碼哥,了解下我們的iOS培訓課程。後續還會更新更多內容,有任何問題,歡迎簡書留言袁峥Seemygo。。。

效果

304825-f2605c4429a2e126.png


一、安裝Homebrew

Homebrew簡稱brew,是Mac OSX上的軟件包管理工具,能在Mac中方便的安裝軟件或者卸載軟件。

1、打開終端, 查看是否已經安裝了Homebrew, 直接終端輸入命令

*    man命令:manual(手冊)的縮寫,可以查看某一命令的幫助信息,比如git,brew,順便可以查看有沒有按照這個命令.
man brew

304825-7c73f341c7fd1bb7.png

man brew.png

2、 執行命令,安裝Homebrew

  • 執行命令後,需要按回車,並且需要輸入電腦密碼。

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

304825-746067e53dc9f615.png


二、利用安裝nginx

Nginx:Nginx是一個非常出色的HTTP服務器,其特點是占有內存少,並發能力強,事實上nginx的並發能力確實在同類型的網頁服務器中表現較好。

  1. 從github下載Nginx到本地,增加home-brew對nginx的擴展

brew tap homebrew/nginx

304825-cff91b0e61b3c1b1.png


2.安裝Nginx服務器和rtmp模塊

brew install nginx-full --with-rtmp-module

304825-ef3975755ba8d03d.png


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

304825-6dfd9279fcf82211.png


三、配置rtmp

1.查看nginx配置文件安裝在哪

brew info nginx-full

2.用xcode打開配置文件,滾動到最後面(最後一個}後面即可,不能在{}裡面),添加一下代碼,進行配置,最後記得保存

rtmp {
    server {
        listen 1990;
        application liveApp {
            live on;
            record off;
        }
    }
}

304825-aed6d7b794c859a9.png


  • application:流媒體上應用名稱,可以隨意填

3.重新加載nginx的配置文件

nginx -s reload

四、安裝ffmepg進行推流

brew install ffmpeg

304825-ef552fbacb9d934b.png


五、使用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

304825-ad49eb0107ccba4f.png


304825-a9169b3a13f13d1f.png


304825-b993a0fcb7b2d04a.png


七、用ffmpeg抓取桌面以及攝像頭推流進行直播

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

ffmpeg -f avfoundation -list_devices true -i ""

304825-4273a393b25de5e8.png

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 音頻赫茲



文章轉自 袁峥Seemygo的簡書
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved