iOS:集成ijkplayer視頻直播


介紹:

ijkplayer 是一款做視頻直播的框架, 基於ffmpeg, 支持 Android 和 iOS, 網上也有很多集成說明, 但是個人覺得還是不夠詳細, 在這里詳細的講一下在 iOS 中如何集成ijkplayer, 即便以前從沒有接觸過, 按着下面做也可以集成成功!

原地址 : http://www.open-open.com/lib/view/open1463123602429.html

 

分析:

  ijkplayer框架對外暴露了11個頭文件(.h文件),如圖所示:

  

  但它的源碼文件構成由如下幾部分組成

  jkMediaPlayer.png

  

  IJKAVMoviePlayerController.png

  

  IJKMPMoviePlayerController.png

  

  IJKFFMoviePlayerController.png

  

對ijkplayer框架暴露頭文件的簡要介紹:

  • IJKMediaPlayback

    • IJKMediaPlayback 協議中定義了一系列視頻播放相關操作的方法,當然還有使用property定義的一系列屬性(你需要知道在協議中是不能定義屬性的,因為屬性屬於類的,而是定義了與之相關的setter/getter方法,注意是方法。)你甚至會發現還定義了一系列的通知,包含播放是否已經准備好,視頻加載狀態改變,視頻播放完成等。它們將來會用於你去監聽視頻的不同狀態,根據不同的狀態,你需要做出不同的響應。

    • 為什么說@protocol IJKMediaPlayback <NSObject>很重要呢?當你稍微了解ijkplayer框架后,你會發現框架中最重要的用於視頻播放的IJKFFMoviePlayerController、IJKAVMoviePlayerControlle、IJKMPMoviePlayerController都是遵守該協議的。當你仔細的查看了它們的接口文件后,你發現只有在IJKFFMoviePlayerController類里或多或少的對外暴露了幾個協議中的方法接口,其它的並沒有?我們知道既然遵守了某協議,那么該協議中定義為@required的方法都必須實現,缺省是@required。你不用多想,IJKMediaPlayback協議中的方法都肯定被它們實現了,當你查看了它們對應的實現文件后,你會發現確實如此。

  • 視頻播放器
    據我的了解,IJKFFMoviePlayerController、IJKAVMoviePlayerControlle、IJKMPMoviePlayerController都可以用於視頻的點播與直播,IJKFFOptions可用於IJKFFMoviePlayerController播放器的選項設置。

集成:

一. 下載ijkplayer

ijkplayer下載地址

下載完成后解壓, 解壓后文件夾內部目錄如下圖:

 

 

二. 編譯 ijkplayer

說是編譯 ijkplayer, 其實是編譯 ffmpeg, 在這里我們已經下載好了ijkplayer, 所以 github 上README.md中的Build iOS那一步中有一些步驟是不需要的.

下面開始一步一步編譯:

1.打開終端, cd 到jkplayer-master文件夾中, 也就是下載完解壓后的文件夾, 如下圖:

 

2.執行命令行./init-ios.sh, 這一步是去下載 ffmpeg 的, 時間會久一點, 耐心等一下.如下圖:

3.在第2步中下載完成后, 執行cd ios, 也就是進入到 ios目錄中, 如下圖:

4.進入 ios 文件夾后, 在終端依次執行./compile-ffmpeg.sh clean和./compile-ffmpeg.sh all命令, 編譯 ffmpeg, 也就是README.md中這兩步, 如下圖:

編譯時間較久, 耐心等待一下.

三. 打包IJKMediaFramework.framework框架

集成 ijkplayer 有兩種方法: 一種方法是按照IJKMediaDemo工程中那樣, 直接導入工程IJKMediaPlayer.xcodeproj, 在這里不做介紹, 如下圖:

第二種集成方法是把 ijkplayer 打包成framework導入工程中使用. 下面開始介紹如何打包IJKMediaFramework.framework, 按下面步驟開始一步一步做:

首先打開工程IJKMediaPlayer.xcodeproj, 位置如下圖:

打開后是這樣的, 如下圖:

2.工程打開后設置工程的 scheme, 具體步驟如下圖:

3.設置好 scheme 后, 分別選擇真機和模擬器進行編譯, 編譯完成后, 進入 Finder, 如下圖:

進入 Finder 后, 可以看到有真機和模擬器兩個版本的編譯結果, 如下圖:

下面開始合並真機和模擬器版本的 framework, 注意不要合並錯了, 合並的是這個文件, 如下圖:

打開終端, 進行合並, 命令行具體格式為:

lipo -create "真機版本路徑" "模擬器版本路徑" -output "合並后的文件路徑"

合並后如下圖:

下面很重要, 需要用合並后的IJKMediaFramework把原來的IJKMediaFramework替換掉, 如下圖, 希望你能看懂:

上圖中的1、2兩步完成后, 綠色框住的那個IJKMediaFramework.framework文件就是我們需要的框架了, 可以復制出來, 稍后我們需要導入工程使用.

 

四. iOS工程中集成ijkplayer

新建工程, 導入合並后的IJKMediaFramework.framework以及相關依賴框架以及相關依賴框架,如下圖:

導入框架后, 在ViewController.m進行測試, 首先導入IJKMediaFramework.h頭文件, 編譯看有沒有錯, 如果沒有錯說明集成成功.

接着開始在ViewController.m文件中使用IJKMediaFramework框架進行測試使用, 寫一個簡單的直播視頻進行測試, 在這里看一下運行后的結果, 后面會放上 Demo 供下載.

至此, ijkplayer 集成完畢!

Demo地址下載地址


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM