iOS开发ijkplayer拉流框架的集成

现在项目中用的拉流框架是ijkplayer.的,集成ijkplayer成功后,就算完成直播功能一半的工程了,只要有拉流url,就能播放直播啦。之前对这个有些了解,现在整理并总结一下相关用法(本文侧重实战,理论部分不做讲解)。

第一部分: 运行bilibiliDemo
1.首先我们去GitHub上下载ijkplayer.目录结构如下
1672235-1d8fb5f585b6145e.png
1.png
2.找到我们的iOS平台,并打开工程,build一下,发现工程报错。
1672235-b8a33436be9aad94.png
2.png

该错误需要下载ffmpeg,因为播放器都是基于ffmpeg的封装.
解决方案:
cd ijkplayer-master

AllisonMacPro:ijkplayer-master Allison$ ./init-ios.sh

== pull gas-preprocessor base ==
......
== pull ffmpeg base ==
......
== pull ffmpeg fork armv7 ==
......
== pull ffmpeg fork arm64 ==
......
== pull ffmpeg fork i386 ==
......
== pull ffmpeg fork x86_64 ==
Cloning into 'ios/ffmpeg-x86_64'...
Compressing objects: 100% (116565/116565), done.
Writing objects: 100% (523036/523036), done.
Total 523036 (delta 405280), reused 523036 (delta 405280)
Switched to a new branch 'ijkplayer'
/Users/allison/Desktop/ijkplayer-master

下载完ffmpeg后,我们再在终端执行下面两个命令:
cd ios
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all

此时我们再iOS目录下,编译ffmpeg,这个编译过程会有点漫长,因为要编译很多的版本,比如真机的,模拟器的等等。
./compile-ffmpeg.sh clean

AllisonMacPro:ios Allison$ ./compile-ffmpeg.sh clean
====================
[*] check xcode version
====================
FF_ALL_ARCHS = armv7 arm64 i386 x86_64
==================
clean ffmpeg-armv7
==================
/Users/allison/Desktop/ijkplayer-master/ios
clean ffmpeg-arm64
==================
/Users/allison/Desktop/ijkplayer-master/ios
clean ffmpeg-i386
==================
/Users/allison/Desktop/ijkplayer-master/ios
clean ffmpeg-x86_64
==================
/Users/allison/Desktop/ijkplayer-master/ios
clean build cache
=================
clean success

./compile-ffmpeg.sh all

build_source: /Users/allison/Desktop/ijkplayer-master/ios/ffmpeg-armv7
build_prefix: /Users/allison/Desktop/ijkplayer-master/ios/build/ffmpeg-armv7/output

--------------------
[*] configurate ffmpeg
--------------------

--------------------
[*] check OpenSSL
----------------------

--------------------
[*] configure
----------------------
config:  
......

1672235-b65ce09d853f5596.gif
3-1.gif
3.编译完成后,运行demo,对比编译前后的差别

注: demo中的直播地址可能不可用,我这里随便在网上找了个直播的地址(https://blog.csdn.net/chinabinlang/article/details/45092297)在项目中想demo中地址随便替换一个即可看到下面的效果。

1672235-1fccd19fe490f3e7.png
3.png

目录结构如下:

1672235-9e2fad31b4176b73.png
项目结构.png

运行起来的效果如下图所示:

1672235-9354e895f807044a.jpg
4.jpg

1672235-e6a51a055a08d7bb.jpg
5.jpg

Tips:
如果提示如下错误:

./libavutil/arm/asm.S:50:9: error: unknown directive
        .arch 

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


如果这里删除了armv7,那么项目中Build Settings--Valid Architectures 对应的也要删除armv7

1672235-a787c7ba18db9d9f.png
arvm7.png

第二部分:集成ijkplayer

ijkplayer已经运行起来了,但是如何把demo集成到我们自己的项目中呢?一般集成有两种方式:第一种:联合编译工程, 第二种:把ijkplayer集成.framework,把framework集成到项目中。这里我选择第二种。

1.打开IJKMediaPlayer,生成Framework
1672235-fb1eca19dbe1737e.png
6.png

可以看到,这是一个framework的框架。


1672235-a1bd706242f0a5ae.png
7.png

我们把scheme调为release模式


1672235-7909e82d57ca1d4e.png
8.png
2.打包Framework

在product这里,我们可以看到是红色的,说明当前不存在这个文件。


1672235-da359fe1d1a84569.png
9.png

这里我们需要生产一个模拟器版本,一个真机版本。
①生成一个模拟器版本
步骤:
(1)我们随便选择一个模拟器


1672235-6fed535ac1238157.png
simulator.png

(2)command+B ,build一下工程,buid成功之后,我们可以看到products下面的framework变成黑色的图标了。
1672235-a8bb2c10efb4908b.png
11.png

②生成一真机版本
步骤同①,只是这里我们选择真机build
1672235-7821a525edf337af.png
Generic.png
3.查看framework
1672235-c3dbffb87b558e6b.png
12.png

1672235-282d4040f3999365.png
13.png
4.并合framework

其实我们真正合并的并不是IJKMediaFrameworkWithSSL的bundle文件,而是里面的IJKMediaFrameworkWithSSL文件。
合并语句

lipo -create "真机版本路径" “模拟器本部路径” -output "合并后的路径/框架名字"

终端操作如下:

AllisonMacPro:~ Allison$ lipo -create "/Users/allison/Library/Developer/Xcode/DerivedData/IJKMediaPlayer-awlkvnvgkwsadpgacpctqvyymyxn/Build/Products/Release-iphoneos/IJKMediaFrameworkWithSSL.framework/IJKMediaFrameworkWithSSL" "/Users/allison/Library/Developer/Xcode/DerivedData/IJKMediaPlayer-awlkvnvgkwsadpgacpctqvyymyxn/Build/Products/Release-iphonesimulator/IJKMediaFrameworkWithSSL.framework/IJKMediaFrameworkWithSSL" -output "/Users/allison/Library/Developer/Xcode/DerivedData/IJKMediaPlayer-awlkvnvgkwsadpgacpctqvyymyxn/Build/Products/IJKMediaFramework"
AllisonMacPro:~ Allison$ 
1672235-55a4fee2d204f922.png
14.png

此时这个文件就是真机和模拟器合并后的framework。
验证:


1672235-24f3b34aaf993069.png
14-1.png

1672235-cab4d40688c1153a.png
14-2.png

1672235-25a27feae1f97abe.png
14-3.png

至此,jkplayer框架集成完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值