IJKPlayer視訊直播-編譯和使用

LFL_發表於2019-03-04

前言

  • 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
#         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複製程式碼

執行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整合方式介紹

  • 可以自己打包後製作podspec檔案,到國內第三方平臺,podspec可以參考我之前的一個第三方LFLSegmentControl

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];複製程式碼

相關文章