ijkplayer是github上開源的一個(gè)直播框架,基于ffmpge,目前很多主流的直播平臺(tái)都是采用這個(gè)直播框架,我在工作的過程中哗魂,也碰到了集成的這個(gè)問題,下面總結(jié)一下漓雅。
一录别、下載源碼
- 下載地址:https://github.com/Bilibili/ijkplayer
- 下載后解壓
文件如下圖
這里有兩個(gè)文件夾 需要我們了解,一個(gè)是 config邻吞,另外一個(gè)是 ios
二组题、開始編譯
- 編譯ffmpeg
第一次編譯的話,需要去初始化一下環(huán)境(下載ffmpeg)
在當(dāng)前目錄下抱冷,執(zhí)行命令
./init-ios.sh
這個(gè)過程可能有點(diǎn)久(網(wǎng)絡(luò)好的朋友就當(dāng)我沒說)
初始化(下載)完成之后崔列,可以考慮我們需要使用ffmpeg的哪些功能,因?yàn)閒fmpeg編譯是可裁剪的旺遮,為了減少我們生成包的大小赵讯,盡量還是去配置一下編譯參數(shù)
打開上文中提到的config 文件夾饲鄙,里面有三個(gè)文件炊昆,我們只需要修改module-lite.sh 這個(gè)文件即可劫扒,對(duì)于不需要的模塊纽门,就disable掉窖剑!
修改完成后茸炒,打開命令行工具缀皱,通過命令進(jìn)入到ios文件夾
插播一下指令集的劃分
指令集 | 設(shè)備 |
---|---|
armv6 | iPhone, iPhone2, iPhone3G, 第一代准浴、第二代 iPod Touch |
armv7 | iPhone3GS, iPhone4, iPhone4S,iPad, iPad2, iPad3(The New iPad), iPad mini,iPod Touch 3G, iPod Touch4 |
armv7s | iPhone5, iPhone5C, iPad4(iPad with Retina Display) |
arm64 | iPhone5S, iPad Air, iPad mini2(iPad mini with Retina Display) |
i386 | 32位模擬器設(shè)備 |
x86_64 | 64位模擬器設(shè)備 |
OK 繼續(xù)
執(zhí)行命令
./compile-ffmpeg.sh clean //清除掉之前編譯生成的文件
./compile-ffmpeg.sh all //選擇編譯所有的指令集 rmv7 arm64 i386 x86_64
編譯的過程中西傀,如果出現(xiàn)了錯(cuò)誤斤寇,查看錯(cuò)誤原因,然后去/config/module-lite.sh 這個(gè)文件里重新配置一下拥褂,然后再編譯娘锁。
三、生成IJKMediaFramework.framework庫(kù)文件
打開ios/IJKMediaPlayer 項(xiàng)目文件饺鹃,然后修改編譯參數(shù)為Release
分別用真機(jī)和模擬器運(yùn)行項(xiàng)目莫秆,運(yùn)行成功后執(zhí)行下圖操作
在Findle中可以看到兩個(gè)版本的文件
下面就是要將兩個(gè)版本的framework合并成一個(gè)文件,這樣模擬器和真機(jī)都可以使用這個(gè)庫(kù)了
合并使用的命令如下
<pre>lipo -create ""真機(jī)版本路徑"" ""模擬器版本路徑"" -output ""合并后的文件路徑""
</pre>
把合并后的文件替換到真機(jī)的framework中悔详,如下圖
綠色的框里的這個(gè) 就是最終的framework文件了
四镊屎、測(cè)試framework
新建一個(gè)項(xiàng)目,將生成的這個(gè)framework文件拖進(jìn)項(xiàng)目
然后導(dǎo)入一下系統(tǒng)庫(kù)文件
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
測(cè)試播放代碼如下
id mePlayer=[[IJKFFMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:@""視頻流地址""] withOptions:nil];
UIView *playView=[self.mePlayer view];//播放器的view
playView.frame=CGRectMake(0,0,self.view.frame.size.width,200);
playView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[self.view insertSubview:playView atIndex:1];