iOS中ijkpalyer集成

2018-12-13  本文已影响0人  qhzq1987

一、准备工作

1、Homebrew,简称“brew”,OSX上必备软件包管理工具(可百度参考安装方式,git和yasm安装方法相同,~_~),查看当前版本,在“终端”中输入令“brew -v”;

2、Git,代码管理工具,查看版本命令为:“git --version”;

3、Yasm,输出二进制的汇编器,查看版本命令为:“yasm --version”

以下是当前编译者版本信息:

二、下载IJKPlayer

本地新建文件夹(路径、名称随你高兴),将git上的项目clone到本地:

*进入该目录中:cd **路径

*克隆项目:git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios

*进入ijkplayer-ios:cd ijkplayer-ios

*切换分支:git checkout -B latest k0.8.8,注:这个版本号可以查看git上的文件

如果能看到:Switched to a new branch 'latest',恭喜你,可以进入一下步!

三、配置修改

1、关于armv7 armv7s arm64的配置,这里我保留了arm64、i386、x86_64三种类型。

*在ijkplayer-ios->init-ios.h中查找“FF_ALL_ARCHS_IOS8_SDK”,保留:arm64、i386、x86_64;

*在ijkplayer-ios->ios->compile-ffmpeg.sh,同上。

2、支持格式配置,在ijkplayer-ios->config目录下默认有3种类型:

module-default.sh 更多的编解码器/格式

module-lite-hevc.sh 较少的编解码器/格式(包括hevc)

module-lite.sh 较少的编解码器/格式(默认情况)

我这里也是走寻常路,修改文件“module-lite.sh”,该文件默认是不是支持rtsp,如果要支持该类型,则要进行添加配置(百度);

四、下载ffmpeg文件

*进入ijkplayer-ios目录:./init-ios.sh

等待时间若干...

五、开始编译ffmpeg库

注:网上有些文章中要修改:“packet_queue_get_or_buffering”方法(路径是:ijkmedia/ijkplayer/ff_ffplay.c),其实我两种方式都试过了,改或是不改都不影响播放结果!

*进入 config 目录:cd config

*删除当前的 module.sh 文件:rm module.sh

*可根据需要替换文件,我这里选择了“module-lite.sh”,注:这里除了默认3个文件外,也可以自定义其他格式类型

ln -s module-lite.sh module.sh

*进入ios目录:./compile-ffmpeg.sh clean,输出如下信息(保留的3种配置信息):

*继续进行编辑:./compile-ffmpeg.sh all,这里可能会遇到一个错误:

xcrun -sdk iphoneos clang is unable to create an executable file.

C compiler test failed.

中间略

…solve the problem.

解决方法:sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer/,输入电脑登录密码即可。

之后一阵“闪花屏”结束后表示ffmpeg库编译成功!

注:如果为https视频流,则必须添加https支持,最后生成静态文件 libcrypto.a 和 libssl.a。

*进入ijkplayer-ios目录:./init-ios-openssl.sh

cd ios

并且在“module.sh ”文件中添加如下配置,启用openssl组件

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

然后依次执行如下命令:

./compile-ffmpeg.sh clean

./compile-openssl.sh all

./compile-ffmpeg.sh all

六、打包 framework

*打开xcode工程

/ijkplayer-ios/ios/IJKMediaPlayer,修改Deployment Target为9.0,再修改Build Configuration为Release,然后执行command+B编译即可!

因为之前的配置文件( compile-ffmpeg.sh )中删除了 armv7,工程编译报错,根据报错打开文件avconfig.h和config.h,直接注释掉!

*分别生成模拟器和真机状态下的framework,然后进行合并(我这里是为了方便,把两个目录复制出来)

先 cd 到 Products 目录下,然后执行:

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

之后会多出个文件“IJKMediaFramework”,如图:

之后替换掉文件“IJKMediaFramework”,而“IJKMediaFramework.framework”就是我们需要的通用的framework文件了。

六、结束语

以上方法是简要生成ijk的方法,初试者可能会遇到各种问题,请给自己多点耐心!

本文如有错误,请指正,谢谢!

七、视频流地址

1、http://flv2.bn.netease.com/videolib3/1604/28/fVobI0704/SD/fVobI0704-mobile.mp4

2、rtmp://202.69.69.180:443/webcast/bshdlive-pc

3、http://dlhls.cdn.zhanqi.tv/zqlive/49427_jmACJ.m3u8

4、rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov

5、rtmp://mobliestream.c3tv.com:554/live/goodtv.sdp

上一篇下一篇

猜你喜欢

热点阅读