2016年可謂是直播元年, 大多數做直播的時候使用 FFMpeg. IJKMediaFramework也是基于FFMpeg封裝 使用起來比較簡單.
ijkplayer 就是一款做視頻直播的框架, 也是基于FFMpe, 支持 Android 和 iOS, 網上也有很多集成說明, 但是本人覺得還是不夠詳細, 在這里我把我在 iOS 中如何集成ijkplayer的流程記錄一下!
一. 下載ijkplayer
二. 編譯 ijkplayer
三. 打包IJKMediaFramework.framework框架
四. iOS工程中集成IJKPlayer
五. 使用 IJKMediaFramework第三方庫
一. 下載ijkplayer
ijkplayer 解壓后文件夾里面有android 和iOS 的.
二. 編譯 ijkplayer
說是編譯 ijkplayer, 其實是編譯 FFMpeg.
下面開始一步步編譯:
- 打開終端, cd 到jkplayer-master文件夾中, 也就是下載完解壓后的文件夾.
- 終端執行命令行./init-ios.sh, 這一步是去下載 FFMpeg 的, 時間稍微會久一點, 耐心等一會就好.
- 在第2步中下載完成后, 終端執行cd ios, 也就是說進入到 ios目錄下.
- 進入 ios 文件夾后, 在終端依次執行./compile-ffmpeg.sh clean和./compile-ffmpeg.sh all命令, 編譯 FFMpeg, 也就是README.md中這兩步.編譯時間也較久, 耐心等待一會就好.
三. 打包IJKMediaFramework.framework框架
集成 ijkplayer 有兩種方法:
第一種方法是按照IJKMediaDemo工程中那樣, 直接導入工程IJKMediaPlayer.xcodeproj, 在這里不做介紹, 如下圖:
第二種集成方法是把 ijkplayer 打包成framework導入工程中使用. 下面開始介紹如何打包IJKMediaFramework.framework,
步驟如下:
1.打開工程IJKMediaPlayer.xcodeproj, 位置如下圖:
2.工程打開后設置工程的 scheme, 具體步驟如下圖:
3.設置好 scheme 后, 分別選擇真機和模擬器進行編譯, 編譯完成后進入 Finder, 如下圖:
進入 Finder 后, 可以看到有真機和模擬器兩個版本的編譯結果, 如下圖:
下面開始合并真機和模擬器版本的 framework, 注意不要合并錯了, 合并的是這個文件, 如下圖:
使用終端進行合并, 命令行具體格式為:
lipo -create "真機版本路徑" "模擬器版本路徑" -output "合并后的文件路徑"
合并后如下圖:
重點來了! 需要用合并后的IJKMediaFramework把原來的IJKMediaFramework替換掉, 如下圖:
上圖中的1、2兩步完成后, 綠色框住的那個IJKMediaFramework.framework文件就是我們需要的框架了, 可以復制粘貼出來, 后期我們需要導入工程使用.
四. iOS工程中集成IJKPlayer
新建工程, 導入合并后的IJKMediaFramework.framework
在項目中使用的時候需要導入的依賴庫:
AudioToolbox.framework
AVFoundation.framework
CoreGraphics.framework
CoreMedia.framework
CoreVideo.framework
libbz2.tbd
libz.tbd
MediaPlayer.framework
MobileCoreServices.framework
OpenGLES.framework
QuartzCore.framework
UIKit.framework
VideoToolbox.framework
導入框架后, 在ViewController.m進行測試, 首先導入IJKMediaFramework.h頭文件, 編譯檢查是否有錯, 如果無錯則說明集成成功!
五.使用 IJKMediaFramework第三方庫
這里在ViewController.m文件中使用IJKMediaFramework框架進行測試使用
#import <IJKMediaFramework/IJKMediaFramework.h>
// 直播視頻
self.url = [NSURL URLWithString:@"http://live.hkstv.hk.lxdns.com/live/hks/playlist.m3u8"];
// self.url = [NSURL URLWithString:@"https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4"];
_player = [[IJKFFMoviePlayerController alloc] initWithContentURL:self.url withOptions:nil];
UIView *playerView = [self.player view];
UIView *displayView = [[UIView alloc] initWithFrame:self.view.bounds];
self.playerView = displayView;
self.playerView.backgroundColor = [UIColor blackColor];
[self.view addSubview:self.playerView];
playerView.frame = self.playerView.bounds;
playerView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[self.playerView insertSubview:playerView atIndex:1];
[_player setScalingMode:IJKMPMovieScalingModeAspectFill];
[self installMovieNotificationObservers];