前言
前些日子公司要做視頻直播揍瑟,一直也是項(xiàng)目的原因沒來得及整理內(nèi)容。周末閑暇時(shí)間特來寫篇文章,對(duì)IJKPlayer播放器的集成做一下歸納闽烙,希望對(duì)要做iOS視頻直播方向的童鞋們有所幫助蝗敢。
1捷泞、環(huán)境搭建
總結(jié)來說就是HomeBrew or MacPorts、git寿谴、yasm的安裝(Homebrew是Mac OSX上的軟件包管理工具锁右,當(dāng)時(shí)macOS Sierra剛剛出來我就手賤更新了,導(dǎo)致HomeBrew安裝出現(xiàn)了問題讶泰,所以采用了MacPorts咏瑟,官方推薦HomeBrew)。
這里我只做一下版本檢查:
首先HomeBrew:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
待HomeBrew安裝完畢即git痪署、yasm:
brew install git
brew install yasm
2.下載ijkplayer編譯
1码泞、 首先新建要下載的文件夾ijkplayer并cd到該目錄下。
2狼犯、 緊接著將ijkplayer文件克隆到新建的文件夾內(nèi)余寥,在終端輸入:
//git克隆
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios
//進(jìn)入ijkplayer-ios
cd ijkplayer-ios
//切換分支
git checkout -B latest k0.7.5
如圖所示:
3领铐、下載ffmpeg并編譯
這一步比較糾結(jié)國外網(wǎng)絡(luò)訪問的問題,如果失敗就多試幾次宋舷。
//依然在ijkplayer-ios下載ffmpeg
./init-ios.sh
//進(jìn)入ios目錄
cd ios
這一步如果前面沒有問題绪撵,此時(shí)的terminal就像打了雞血一樣狂奔......
(注意中途會(huì)有n多個(gè)警告,但不要出錯(cuò)就沒問題)
//clean
./compile-ffmpeg.sh clean
//編譯
./compile-ffmpeg.sh all
成功走到這一步就離成功不遠(yuǎn)了祝蝠,按步驟走是不會(huì)出現(xiàn)問題的音诈,即便有大部分也是網(wǎng)絡(luò)的原因畢竟大天朝對(duì)國外的網(wǎng)絡(luò)都懂的。
3绎狭、demo的處理
1细溅、打開官方demo并運(yùn)行
2、只要前面的流程沒報(bào)錯(cuò)坟岔,這里編譯運(yùn)行都不會(huì)出現(xiàn)問題:
可以在Online Samples中選擇一個(gè)m3u8測試ijkplayer是否運(yùn)行正常如圖:
4谒兄、制作framework
1、打開ijkplayer如圖:
2社付、選擇edit scheme承疲,下圖:
3、將build configuration改為Release后點(diǎn)Close鸥咖,如圖:
4燕鸽、分別在模擬器和真機(jī)(Generic iOS Device也可以)上編譯:
5、打開framework所在的目錄:
6啼辣、看名字就知道一個(gè)是模擬器一個(gè)是真機(jī)啊研,此時(shí)cd到Products目錄:
//合并
lipo -create Release-iphoneos/IJKMediaFramework.framework/IJKMediaFramework Release-iphonesimulator/IJKMediaFramework.framework/IJKMediaFramework -output IJKMediaFramework
//將合并后的framework拷貝到iphoneos/IJKMediaFramework.framework中
cp IJKMediaFramework Release-iphoneos/IJKMediaFramework.framework/
7、此時(shí)framework就制作好了鸥拧,將制作好的iphoneos/IJKMediaFramework.framework復(fù)制到要集成的項(xiàng)目中Add Files...
8党远、在所在的項(xiàng)目中添加動(dòng)態(tài)庫
9、測試集成富弦,將本段代碼復(fù)制到ViewController.m中沟娱,可直接使用:
#import "ViewController.h"
#import <IJKMediaFramework/IJKFFMoviePlayerController.h>
@interface ViewController ()
@property(nonatomic,strong)IJKFFMoviePlayerController * player;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
IJKFFOptions *options = [IJKFFOptions optionsByDefault]; //使用默認(rèn)配置
NSURL * url = [NSURL URLWithString:@"rtmp://live.hkstv.hk.lxdns.com/live/hks"];
self.player = [[IJKFFMoviePlayerController alloc] initWithContentURL:url withOptions:options]; //初始化播放器,播放在線視頻或直播(RTMP)
self.player.view.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
self.player.view.frame = self.view.bounds;
self.player.scalingMode = IJKMPMovieScalingModeAspectFit; //縮放模式
self.player.shouldAutoplay = YES; //開啟自動(dòng)播放
self.view.autoresizesSubviews = YES;
[self.view addSubview:self.player.view];
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self.player prepareToPlay];
}
-(void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
[self.player shutdown];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
OK完美收工:
3腕柜、github
地址在這https://github.com/henvyluk/IJKMediaPlayer,另附demo一份济似,望大神不吝賜教再會(huì)!