最近接到了视频直播方面的开发任务。第一次接触到视频领域并且周边也没有熟悉这块领域的大牛,只好先找些开源的方案来使用。
比较了两个网上讨论比较多并且支持Android/iOS的项目
- Vitamio
- IJKPlayer
首先说下Vitamio目前可以拿到的版本是4.20,商业使用需要付费。
目前手头上的iPhone6s iOS为9.0.2,在播放RTMP直播的情况下反复切到后台或者直接锁屏有很大的几率崩溃。另外Vitamio错误提示不完善,我们QA最喜欢用飞行模式测试大法:你断网了要暂停,网络恢复了要继续播放啊(策划需求)。但是在断网等情况下根本就没回调,即便用了AFNetWorking的网络监测暂停恢复Vitamio也有几率崩溃,根本没法过QA……
IJKPlayer是国内B站的bbcallen大大写的开源视频播放项目。除了B站,美拍和斗鱼的App都有在使用的样子,应该说经得起行业领域的考验了,对我采用IJKPlayer多了一份信心。
后面事实证明,IJKPlayer确实很省心。
将IJKPlayer集成到项目中其实还会遇到不少问题,我将遇到的问题记录下来,希望能帮助到各位,少走些弯路。
我的构建环境
- OS:Mac OSX 10.11.2
- iOS:Xcode 7.2
- HomeBrew
- Git
安装构建必要的环境
如果因为墙的关系或者速度太慢可以使用proxychains,网上教程很多,就不涉及了。
# install homebrew, git, yasm
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install git
brew install yasm
构建
下载ffmpeg和编译ffmpeg会花费比较长的时间,可以去泡一杯咖啡:)
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios
cd ijkplayer-ios
git checkout -B latest k0.4.4.1
./init-ios.sh
cd ios
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all
运行
用Xcode打开ios/IJKMediaDemo/IJKMediaDemo.xcodeproj,验证是否构建正确并可以学习如何使用IJKPlayer。
IJKDemoSampleViewController.m //刚开始上手可以先从sampleList加些播放源来试试手
IJKMoviePlayerViewController.m //这里学习IJKplayer的使用方法
集成
这是比较重要的一步,估计也是最容易卡住的一步。
# import ios/IJKMediaPlayer for MediaPlayer.framework-like interface (recommended)
# open ios/IJKMediaDemo/IJKMediaDemo.xcodeproj with Xcode
因为本人没Get到上面的点,只好在issue搜索,发现一条关于制作.a文件的提示结果就纠结在制作.a文件上卡了1天(大坑),这个离正确答案很近但它不是正确答案。
集成步骤
1.将ijkplayer整个目录复制到项目中,需要保持ijkplayer内的目录结构,可以删除Android和一些无关的文件,ijkplayer中的目录结构如下:
2.将IJKMediaPlayer.xcodeproj拽入项目中,并添加如下类库:
3.移植DEMO项目的代码示例,写死一个播放源,并运行。
完美!
Updated on 2016-05-13
为苦于各种奇怪原因而无法玩耍的小伙伴们提供了包装了ijkplayer的pod,仅供测试体验。
1.基于ijkplayer 5737ccc提交制作成的framework,需要注意的是需要iOS8+。
2.如果使用ijkplayer过程中遇到BUG什么的,可以移步去ijkplayer作者的GitHub上提issue或者PR。
哦对了,地址在这里https://coding.net/u/shirokuma/p/IJKMediaLibrary/git,因framework超过100MB无法传到GitHub上,就放到Coding上了。祝各位玩的愉快!