1. 程式人生 > >iOS:整合ijkplayer視訊直播

iOS:整合ijkplayer視訊直播

介紹:

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

分析:

  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, 其實是編譯 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 整合完畢!

相關推薦

iOS整合ijkplayer視訊直播

介紹: ijkplayer 是一款做視訊直播的框架, 基於ffmpeg, 支援 Android 和 iOS, 網上也有很多整合說明, 但是個人覺得還是不夠詳細, 在這裡詳細的講一下在 iOS 中如何整合ijkplayer, 即便以前從沒有接觸過, 按著下面做也可以整合成功! 分析:   ijkp

iOS開發 iOS整合ijkplayer視訊直播框架

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

iOS整合ijkplayer視訊直播框架

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

iOS開發 整合ijkplayer實現直播#拉流#播放

前言   ijkplayer框架是專門用來做 視訊直播 的開源框架,基於ffmpeg,同時支援 Android 和 iOS 平臺。   對於 App 中的直播功能,如果我們成功整合ijkplayer ,那麼就算完成一半的工程了。接下來,只要獲取到 拉流 URL,就能實現視訊直播功能了。   

整合ijkplayer視訊直播框架

最近公司要開展直播專案,因此接觸到了ijkplayer視訊直播框架。這是一個基於ffmpeg的開源的視訊直播框架,支援Android和iOS,也是目前運用得最廣泛的視訊直播開源框架。下面就簡單分享下怎

Ubuntu下搭建Nginx伺服器+整合RTMP視訊直播流處理(邊做邊做更新)

簡介: 要求:做一個網頁獲取攝像頭的視訊流,然後將視訊流經過流伺服器推送到後臺視訊處理伺服器,再由後臺視訊處理伺服器推送到流伺服器,最終推送到頁面。如圖: 經過查閱資料,目前有red5以及nginx+nginx-rtmp-module實現,選擇第二種方式來實現。 準備工作:

快速整合一個視訊直播功能

前言 前段時間的工作安排,需要做一個視訊監控的功能,其實就是採用 m3u8 做一個直播。 確定需求後進行了一堆調研,最後在B站的 ijkplayer 與 Google 的 ExoPlayer 中做出了選擇,對於為啥選擇了 ExoPlayer ,後面會做具體分析,目前先留點懸念,目

一個直播例子快速整合iOS基於RTMP的視訊推流

效果圖 iTools有點卡, 但是推到伺服器倒是很快的. 推流 前言 這篇blog是iOS視訊直播初窺:<喵播APP>的一個補充. 因為之前傳到github上的專案中沒有整合視訊的推流.有很多朋友簡信和微博上問我推流這部分怎麼實現的. 所以, 我重新集成了RTMP的推流, 合併到了

iOS開發 搭建視訊直播系統,基於LFLiveKit+ijkplayer+rtmp(iOS端)

本文主要使用的三個技術: 推流:LFLiveKit 播放:ijkplayer 伺服器:nginx+rtmp+ffmpeg   有了這三點技術就可以完成一個簡約的直播系統。效果圖如下(右邊的是用模擬器裝置執行播放的,中間的是用VLC播放器播放的,當前在用手機推流

iOSFFmpeg視訊播放和直播框架

視訊直播和播放轉碼器框架 介紹:   FFmpeg是一套可以用來記錄、轉換數字音訊、視訊,並能將其轉化為流的開源計算機程式。採用LGPL或GPL許可證。   它提供了錄製、轉換以及流化音視訊的完整解決方案。它包含了非常先進的音訊/視訊編解碼庫libavcodec,為了保證高可移植性和編解碼質量,l

iOSIOS視訊直播高仿騰訊旗下映客直播型別】

效果圖如下 NowGif.gif -> 4349FA93-F15B-4287-9162-3AA27B223A72.png FA783124-4B81-455F-A6E6-461ACA874478.png 處理了對IPad版本的適配 img_

到處都在說的一對一視訊直播原始碼帶你瞭解真人一對一按分鐘計費陪聊模式+cps

直播如此火爆的關鍵,就在於其特別強大的引流能力,因此,當直播人盡皆知,人人蔘與,直播的內容領域,也隨之擴充套件、細分。直播已不止是網紅主播和娛樂平臺的漲粉創收利器,對企業而言,它已是必須把握的巨大商機。 隨著直播平臺受到越來越多使用者的關注,直播的功能和形式也越來越多樣化,作為創業者來說,人人都想在這個網際

視訊直播技術最大限度保障流暢性和清晰度

直播和互動直播在2017年引起了人們的極大關注,應運而生的各種直播類APP多如牛毛。隨著互動直播的逐漸興起,互動成為直播APP的強需求。然而,實際網路中的丟包、延遲、抖動等問題仍然嚴重影響了直播的效果。 針對上述問題,本文介紹了網易雲信直播的網路QoS技術,旨在幫助讀者瞭解在極差網路環境下如何最

iOS開發 關於整合ijkplayer的framework中的那些坑,重新打framework出現的錯

整合教程: http://www.jianshu.com/p/1f06b27b3ac0 已經很詳細了,照這個步驟走就行了。 不過照找個步驟還是發現了一些坑,下面是我自己遇到的問題,菜鳥一個,大神勿噴。 坑一:  直接盜圖了,Show in Finder, 你可能打不開

視訊直播技術詳解直播的推流排程

作為直播傳輸的第一步,推流排程對於直播鏈路的影響非常大。本篇文章將針對這個話題,從傳輸的角度,講一講網易雲信直播是如何做好推流排程的。 直播推流是什麼 首先,直播推流,即主播將自己的本地客戶端採集編碼後的視訊資料“推”出去。推流會涉及到兩個問題:視訊推到哪裡去了以

視訊直播關鍵技術流暢、擁塞和延時追趕

這兩年網際網路領域的一個熱門關鍵詞就是視訊直播,從剛開始的遊戲直播和秀場娛樂開始,現在各個行業裡都植入了直播元素。網易雲信多年以來,一直深耕於音視訊領域,這篇文章將和大家聊一聊視訊直播的幾個關鍵技術。 相關閱讀推薦 清晰度 4K、1080p、720p,這些概念

視訊直播技術之iOS端推流

隨著網路基礎建設的發展和資費的下降,在這個內容消費升級的時代,文字、圖片無法滿足人們對視覺的需求,因此視訊直播應運而生。承載了實時性Real-Time和互動性的直播雲服務是直播覆蓋各行各業的新動力。網易雲信推出一系列文章,對視訊直播技術進行深入講解,本篇文章將向大家介紹iOS

安卓 視訊直播nginx搭建伺服器

利用nginx與nginx-rtmp-module搭建流媒體伺服器實現直播 1. 下載 nginx 1.7.11.3 Gryphon 下載連結: http://nginx-win.ecsds.eu/download/nginx 1.7.11.3 Gryphon.zip 下載完成後解壓;

安卓 視訊直播推流端程式碼

想要從底層一步步寫起比較麻煩,需要了解一點影象處理的知識,為了快速開發,我選擇通過第三方的SDK,這裡簡單說一下第三方SDK,其中有騰訊,阿里,百度雲,網易,金山雲,抖音,大牛都支援不過各有利弊。 (1)騰訊雲ILVB實名認證後需要人工稽核5個工作日,反正至今沒有看到SDK; (2)阿里

安卓 視訊直播流程分析

視訊直播的流程可以分為如下幾步: 1.採集 —>處理—>編碼和封裝 2.推流到伺服器—>伺服器流分發 3.播放器流播放 圖解: 一.採集 採集是整個視訊推流過程中的第一個環節,它從系統的採集裝置中獲取原始視訊資料,將其輸出到下一個環節。 視訊的