IJKPlayer播放器支持https流程

来源:互联网 发布:数据采集流程图 编辑:程序博客网 时间:2024/06/13 03:19


前言:

       笔者最近一段时间在搞视频直播相关的东西,虽然很早以前,也做过基于腾讯云、Anychat、容联云等几个第三方的实时视频直播,但是当时的播放器完全采用了第三方的东西,本次则是使用的ijkplayer播放器,ijkplayer播放器是哔哩哔哩开源出来的支持 直播/点播 的视频播放器,主要是基于FFmpeg,但是由于ijkplayer默认是不支持https的,笔者在ijkplayer的git问题社区也没有找到相关的iOS版ijkplayer支持https,无奈之下通过比对ijkplayer的脚本,和相关build流程,重新整理了一份ijkplayer支持https的流程,那么,废话不多说,开始~


1. 确保你的机器上已经安装了gityasm,如果没有请在终端执行以下命令:

sudo apt-get update

sudo apt-get install git

sudo apt-get install yasm


//由于笔者已经按照,可以执行version指令,查看当前的安装版本

git —-version 

yasm —-viersion


2.确认了git和yasm的安装后,开始编译的具体步骤

 //在本地桌面上创建一个IJKPlayer文件夹,并移动到该文件夹下

cd ./Desktop/IJKPlayer/ 

 //直接拉取源代码到本地

git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios

 //拉去分支后,会看到本地路径下出现一个ijkplayer-ios的文件夹,将当前路径移动到该目录下

cd ijkplayer-ios

//检查更新代码 这一步是切换到0.6.7版本,这是一个本地分支的切换,具体的你可以看自己而定

git checkout -B latest k0.6.7


 //初始化,会把ffmpeg的代码拉取到本地

./init-ios.sh

./init-ios-openssl.sh


 //移动当前目录到ios文件夹下

cd ios


 //预编译先,先vim一下module脚本

vim ../config/module.sh


 //添加预编译脚本内容为一下内容,然后点击 esc 退出 vim编译模式,执行 :wq 保存

export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-openssl"


 //先clean一下FFmpeg相关的数据,避免在执行all时出现新旧数据冲突

./compile-ffmpeg.sh clean

 //编译ffmpeg软解码库,这个过程会生成各种架构的ffmpeg,编译ffmpeg前要先compile OpenSSL,对openssl进行编译,如果未执行可能会报错:openssl not found

./compile-openssl.sh all

./compile-ffmpeg.sh all


到这里,关于ijkplayer的整个编译过程算是告一段落了


3.打framework文件具体步骤


 //由于ijkplayer本身默认不支持https,因此在预编译FFmpeg和openssl时,工程的 ijkplayer-ios/ios/build/universal/lib 路径下会生成如下的.a静态包:




但是IJKMediaPlayer这个framework工程中,默认是不导入libcrypto.a和libssl.a文件的,而这两个文件恰恰是ijkplayer编译支持https的关键

打开 IJKMediaPlayer工程

进入 Build Phases -> Link Binary With Libraries

点击 “+”  -> Add Other

添加 ijkPlayer-ios/ios/build/universal/lib 路径下的 libcrypto.a  libssl.a文件到 IJKMediaPlayer这个framework工程中




把模式从 debug调整为 release模式

编译IJKMediaPlayer工程(真机和模拟器均要编译)


cd IJKMediaPlayer工程中的 products文件夹下,


 //合并真机和模拟器:

lipo -create Release-iphoneos/IJKMediaFramework.framework/IJKMediaFramework Release-iphonesimulator/IJKMediaFramework.framework/IJKMediaFramework -output IJKMediaFramework


 //此时products目录下会多出一个合并文件,注意:上一个操作中的合并指令中,合并的对象是IJKMediaFramework.framework文件中的IJKMediaFramework文件


 //将上一步中的合并文件替换掉iphoneos/IJKMediaFramework.framework中

cp IJKMediaFramework Release-iphoneos/IJKMediaFramework.framework/



4.导入framework文件到demo工程中



 本地新建一个demo工程,命名为:IJKPlayerDemo,笔者使用的是Xcode7.3创建的,此处有一个小问题,Xcode8.0以上要支持要手动去设置相关的网络配置,这里不多说明。




然后导入ijkplayer需要的依赖库,具体如图:




这些库包括:

 

  IJKMediaFramework.framework

         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


最后,由于ijkplayer涉及到c++相关的东西,因此需要配置c++兼容,可以去builds setting中设置路径,也可以跟壁纸一样偷懒,设置AppDelegate文件的后缀为: .mm,这是告诉工程:我的OC文件允许/兼容c++相关方法。


到这一步就完全结束啦~demo我本来打算放到cocoaChina上的,结果cocoaChina上传的最大文件只允许在5MB以内,因此,如果有需要的童鞋,可以给我留言~

便说一声,用ijkplayer的framework文件所打包的ipa包大概增加了2MB的体积,相对而言,这个大小还是能接受的~





 //由于ijkplayer本身默认不支持https,因此在预编译FFmpeg和openssl时,工程的 ijkplayer-ios/ios/build/universal/lib 路径下会生成如下的.a静态包:


2 0
原创粉丝点击