前言
- IJKPlayer 由Bilibili開發並開源的框架原始碼GitHub地址
- IJKPlayer 是一個基於 ffplay 的輕量級 Android/iOS 視訊播放器。API 易於整合;編譯配置可裁剪,方便控制安裝包大小;支援 硬體加速解碼,更加省電。
- 我編譯後的地址,可以直接使用IJKMediaDemo
下載後編譯的準備工作
- 下載部分 (建議翻牆,下載ffmpeg後ijkplayer-ios資料夾大小超過一個G)
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios
cd ijkplayer-ios
./init-ios.sh //://下載ffmpeg和相關指令碼
cd ios // :選擇其中的ios資料夾再操作
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all
編譯期間,電腦發熱....複製程式碼
- Link Binary with Libraries
複製程式碼
執行Demo
- 我們在Online Samples隨意選擇一個測試ijkplayer是否執行正常。老版本電視維修畫面既視感,可能故意選取的畫面
製作framework
- 首先我們開啟IJKMediaPlayer.xcodeproj,點選IJKMediaFramework出現選擇框,選擇edit scheme,將build configuration改為Release後點Close
- 分別在模擬器和真機(Generic iOS Device也可以)上編譯(com+b)
- 通過lipo的命令將兩者合併輸出,在Products目錄下輸入
lipo -create /Users/DragonLi/Library/Developer/Xcode/DerivedData/IJKMediaPlayer-bpgcmxgrotghheguxjsvyrrebtyl/Build/Products/Release-iphonesimulator/IJKMediaFramework.framework/IJKMediaFramework /Users/DragonLi/Library/Developer/Xcode/DerivedData/IJKMediaPlayer-bpgcmxgrotghheguxjsvyrrebtyl/Build/Products/Release-iphoneos/IJKMediaFramework.framework/IJKMediaFramework -output /Users/DragonLi/Library/Developer/Xcode/DerivedData/IJKMediaPlayer-bpgcmxgrotghheguxjsvyrrebtyl/Build/Products/IJKMediaFramework複製程式碼
- lipo -info IJKMediaFramework檢視framework的支援
cocoapods整合方式介紹
ijkplayer基本使用方式,預設不新增依賴可以直接編譯的
IJKFFOptions *options = [IJKFFOptions optionsByDefault]; //使用預設配置
self.player = [[IJKFFMoviePlayerController alloc] initWithContentURL:self.url withOptions:options]; //初始化播放器,播放線上視訊或直播(RTMP)
// NSString *filePath = [[NSBundle mainBundle] pathForResource:@"init"ofType:@"mp4"];
// self.player = [[IJKFFMoviePlayerController alloc]initWithContentURLString:filePath withOptions:options]; //初始化播放器,播放本地視訊
self.player.view.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
self.player.view.frame = self.view.bounds;
self.player.scalingMode = IJKMPMovieScalingModeAspectFit; //縮放模式
self.player.shouldAutoplay = YES; //開啟自動播放
self.view.autoresizesSubviews = YES;
[self.view addSubview:self.player.view];
//準備
[self.player prepareToPlay];
//播放
[self.player play];
//暫停
[self.player pause];
//銷燬
[self.player shutdown];複製程式碼