iOS直播之ijkplayer的集成

环境准备

集成ijkplayer需要电脑中安装gityasm,然后好像还需要一个pkg-config(不确定),安装gityasmpkg-config可以使用homebrew

检查自己电脑是不是安装了homebrewgityasm可以打开终端依次输入:

brew -v
git --version
yasm --version
pkg-config --verison 

我的已经安装了

 

环境配置成功

安装成功可以忽略以下内容直接查看第一章节,如果没有安装成功请继续,首先打开终端

安装homebrew:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

如果想卸载homebrew

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"

homebrew的用法:

安装软件,如:brew install oclint
卸载软件,如:brew uninstall oclint
搜索软件,如:brew search oclint
更新软件,如:brew upgrade oclint
查看安装列表, 如:brew list
更新Homebrew,如:brew update

使用homebrew安装git

brew install git

使用homebrew安装yasm

brew install yasm

使用homebrew安装pkg-config

brew install pkg-config

一、使用git克隆仓库到本地

ijkplayer是bilibili的一个开源项目https://github.com/Bilibili/ijkplayer
在合适的位置新建文件夹(不想新建也可以的😂),我是在桌面上新建文件夹命名为showcase,然后进入对应文件夹

cd /Users/jizhigang/Desktop/showcase //这是我的路径啊看准喽

clone一个仓库有两种方式,使用https方式和SSH方式,我们选择https方式,使用SSH方式继续执行可能出错⚠️

 

使用https地址

//克隆仓库到指定位置并重命名为ijkplayer-ios
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios

有时候clone仓库时会出现问题

error: RPC failed; curl 18 transfer closed with outstanding read data remaining
    fatal: The remote end hung up unexpectedly
    fatal: early EOF
    fatal: index-pack failed

这个错误是因为项目太久,tag资源文件太大,我们clone时可以这样

//克隆仓库到指定位置并重命名为ijkplayer-ios,深度为1的代码,具体什么意思我不是特别清楚就不乱解释了啊,免得误导别人
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios --depth=1

 

仓库clone成功

然后进入文件夹ijkplayer-ios

cd ijkplayer-ios

新建分支latest并切换到新建的分支上

git checkout -B latest k0.8.8

我们平时开发最好不要在master分支上直接开发,所以这里我按照教程新建了分支latest。但是我们不需要提交代码,所以这里不新建分支也是可以的,新建与否都对后续各步骤没有影响。

可以使用命令查看当前分支

git branch

可以看到当前有了两个分支latestmaster,并且当前工作在latest分支上

 

分支创建并切换成功

配置编解码器格式支持

默认为最少支持, 如果足够你使用, 可以跳过这一步. 否则可以改为以下配置:

module-default.sh 更多的编解码器/格式
module-lite-hevc.sh 较少的编解码器/格式(包括hevc)
module-lite.sh 较少的编解码器/格式(默认情况)

# 进入 config 目录
cd config

# 删除当前的 module.sh 文件
rm module.sh

# 可根据需要替换为`module-default.sh`, `module-lite-hevc.sh`, `module-lite.sh`
# 创建软链接 module.sh 指向 module-lite-hevc.sh
ln -s module-lite-hevc.sh module.sh

cd ..
cd ios
sh compile-ffmpeg.sh clean

二、下载ffmpeg

./init-ios.sh //时间稍长一些

 

下载`ffmpeg`成功

添加 https 支持

最后会生成支持 https 的静态文件 libcrypto.a 和 libssl.a, 如果不需要可以跳过这一步

# 获取 openssl 并初始化
./init-ios-openssl.sh

cd ios

# 在模块文件中添加一行配置 以启用 openssl 组件
echo 'export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-openssl"' >> ../config/module.sh

./compile-ffmpeg.sh clean

然后进入ios文件夹中

cd ios

三、 编译ffmpeg

# 如果下一步提示错误`xcrun: error: SDK "iphoneos" cannot be located`, 请执行`sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer/`, 再重新执行下一步

# 编译openssl, 如果不需要https可以跳过这一步
./compile-openssl.sh all

./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all //编译

这里有可能遇到错误

xcrun -sdk iphoneos clang is unable to create an executable file.
C compiler test failed.

造成这个问题的原因有很多,这里我是因为xcode路径问题引起的,解决方法:

sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer

这里还遇到了另一个问题

AS  libavcodec/arm/aacpsdsp_neon.o
./libavutil/arm/asm.S:50:9: error: unknown directive
        .arch armv7-a
        ^
make: *** [libavcodec/arm/aacpsdsp_neon.o] Error 1
make: *** Waiting for unfinished jobs....

最新的 Xcode 已经弱化了对 32 位的支持, 解决方法:
compile-ffmpeg.sh 中删除 armv7 , 修改如:
FF_ALL_ARCHS_IOS8_SDK="arm64 i386 x86_64"
再重新执行出现错误的命令: ./compile-ffmpeg.sh all

 

去掉armv7支持

 

去掉armv7支持

 

去掉armv7支持

然后再次执行

./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all //编译

 

编译成功

打开ios/IJKMediaPlayer并运行。大功告成

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值