ijkplayer学习笔记(一)——下载、编译、合成库


ijkMediaPlayer

1、下载工程

点击https://github.com/bilibili/ijkplayer,查看README.md,参照Before Build准备好环境。

因为是学习的是iOS端的工程,所以最后按照Build iOS进行下载。

问题记录:进行到最后一步 ./compile-ffmpeg.sh all报错,

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

C compiler test failed.

搜了一下该问题的解决办法。使用:

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

刚好可以解决我的这个问题

参考:https://blog.csdn.net/BranchLin/article/details/83991694

2、项目结构

打开我们从github下载下来的工程文件ijkplayer-ios,目录如下:

tool- 初始化项目工程脚本

config- 编译ffmpeg使用的配置文件

extra- 存放编译ijkplayer所需的依赖源文件, 如ffmpeg、openssl等

ijkmedia- 核心代码

ijkplayer- 播放器数据下载及解码相关

ijksdl- 音视频数据渲染相关

ios- iOS平台上的上层接口封装以及平台相关方法

android- android平台上的上层接口封装以及平台相关方法

在功能的具体实现上,iOS和Android平台的差异主要表现在视频硬解码以及音视频渲染方面,两者实现的载体区别如下:

平台差异

参考:https://blog.csdn.net/xipiaoyouzi/article/details/74280170

3、运行demo:IJKMediaDemo

运行程序可能会报错:'libavformat/avformat.h' file not found

原因: libavformat 是 ffmpeg 框架中的库,而 ijkplayer 又是基于 ffmpeg 框架的,因此需要导入 ffmpeg。实际上按照READE.md进行到最后一步

./compile-ffmpeg.sh all

并没有真正成功,而是有如下报错:

clang:warning:optimization flag'-fomit-frame-pointer'is not supportedfortarget'armv7'[-Wignored-optimization-argument]

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

armv7架构无法成功。

解决方法1:

在项目中找到compile-ffmpeg.sh脚本文件,删除armv7, 修改如下:

FF_ALL_ARCHS_IOS8_SDK="arm64 i386 x86_64"

但这样在之后lipo合并的库中就没有armv7版本了,所以在xcode项目的Valid Architectures里就要去掉armv7,否则会报错。

然后再运行./compile-ffmpeg.sh all,成功。再次编译demo工程,成功。

解决方法2:

tools/do-compile-ffmpeg.sh文件里的armv7架构的情况,改为:

elif [ "$FF_ARCH" = "armv7" ]; then

    FF_BUILD_NAME="ffmpeg-armv7"

    FF_BUILD_NAME_OPENSSL=openssl-armv7

    FF_XCRUN_OSVERSION="-miphoneos-version-min=6.0"

    FF_XCODE_BITCODE="-fembed-bitcode"

    FFMPEG_CFG_FLAGS="$FFMPEG_CFG_FLAGS --enable-pic --disable-asm"

这样就能编译出包含armv7架构的库了。

但是我这里改为第二种方法后执行./compile-ffmpeg.sh all还是会报之前armv7的问题。不知道问题出在哪里。希望有遇到同样问题的同学给出方案~

参考:https://blog.csdn.net/qiuchangyong/article/details/100781700

4.合成静态库

4.1、打开ijkplayer-ios/ios/IJKMediaPlayer下的工程

4.2、如下图edit scheme

Edit Scheme

4.3、分别切换到模拟器和Any iOS Device 来build一下工程,在项目中找到Products文件夹找到IJKMediaFramework.framework,然后show in finder

4.4、使用lipo命令将编译出来的适用于模拟器和真机的静态库进行合并

lipo -create /Users/xxx/Library/Developer/Xcode/DerivedData/IJKMediaPlayer-xxxxxx/Build/Products/Release-iphoneos/IJKMediaFramework.framework/IJKMediaFramework /Users/xxx/Library/Developer/Xcode/DerivedData/IJKMediaPlayer-xxxxxxx/Build/Products/Release-iphonesimulator/IJKMediaFramework.framework/IJKMediaFramework -output /Users/xxx/Library/Developer/Xcode/DerivedData/IJKMediaPlayer-xxxxxx/Build/Products/Release-iphoneos/IJKMediaFramework 

注意 :create后面两个路径中间的空格,output后面的路径最后“IJKMediaFramework”并不需要提前创建。是合并后的文件名称,执行命令以后会自动输出。如图:

lipo合并

4.5、将合并后的文件IJKMediaFramework拖入到Release-iphoneos/IJKMediaFramework.framework中,最后就得到了合并后的framework,可以通过lipo -info查看生成的指令集

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

推荐阅读更多精彩内容