iOS开发ijkplayer拉流框架的集成

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

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

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

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

3.png

目录结构如下:

项目结构.png

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

4.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

arvm7.png

第二部分:集成ijkplayer

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

1.打开IJKMediaPlayer,生成Framework
6.png

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


7.png

我们把scheme调为release模式


8.png
2.打包Framework

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


9.png

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


simulator.png

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

②生成一真机版本
步骤同①,只是这里我们选择真机build
Generic.png
3.查看framework
12.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$ 
14.png

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


14-1.png

14-2.png

14-3.png

至此,jkplayer框架集成完成。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,843评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,538评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,187评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,264评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,289评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,231评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,116评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,945评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,367评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,581评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,754评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,458评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,068评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,692评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,842评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,797评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,654评论 2 354

推荐阅读更多精彩内容