博客> ijkplayer集成AVS+及编译文档
ijkplayer集成AVS+及编译文档
2017-11-19 18:23 评论:0 阅读:149 青春追逐
静态库 .a和.framework

指尖tv测试,ffmpeg源码编译可以播放,ijkplayer里的源码编译,无法播放,原因是解码器使能未打开 **ijkplayer集成AVS+***** ijkplayer集成AVS+ 1⃣️修改脚本 1.compile-ffmpeg.sh 屏蔽git clean 禁止和远程仓库ffmpeg比较  2.do-compile-ffmpeg.sh 链接avs+解码库  3、ijkplayer-master/config/module-tile.sh 关闭所有解码器使能,打开所需编码格式的解码器使能 export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-decoders" 关闭所有编码器使能 export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-encoders" 关闭libavdevice export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-avdevice" 打开h264硬解码 export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-videotoolbox" export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-audiotoolbox" export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-videotoolbox" 关闭复用使能 export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-muxers" 关闭解复用使能,打开所需格式解复用使能 export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-demuxers" 重新生成module.sh,连接配置文件  2⃣️、执行脚本、集成avs+解码库 1、终端进入ijkplayer-master目录,执行./init-ios.sh,脚本会自动下载ffmpeg的主干代码到extra目录下,并在ios目录下生成arm64,armv7,ffmpeg-i386,x86_64不同架构下的ffmpeg分支; • 1.找到tools目录的pull-repo-base.sh脚本并执行,这个脚本用于下载站托管的github上的FFmpeg分支源码和FFmpeg依赖包。 • 2.找到tools目录的pull-repo-ref.sh脚本并执行,这个脚本用于获取B站托管的github上的FFmpeg分支,根据不同的目标平台放置不同工作目录 2、在arm64,armv7,ffmpeg-i386,x86_64不同架构下按照avs+集成文档修改ffmpeg; 3、进入ios目录,执行命令compile-ffmpeg.sh clean 清除编译文件 compile-ffmpeg.sh all 编译源码 生成不同架构静态库及合成静态库 将libbavs.a拷贝到universal/lib,并导入工程 要重新编译源码需删除各个分支架构下的config.h,重新执行compile-ffmpeg.sh

4,打开IJKMediaDemo,若出现如下图错误,则找不到avs+解码库,需手动导入libbavs.a库  5、打开IJKMediaDemo,若出现如下图错误,则缺少avs+解码库,需手动将libbavs.a库添加到工程中  **ijkplayer集成AVS+*****

**导出ijkmediaframework.framework静态库***

3⃣️、导出ijkmediaframework.framework静态库 1、xcode打开IJKMediaPlayer,分别选择真机、虚拟机release模式编译生成对应静态库 在工程选中Products“show in finder”可以进入IJKMediaFramework.framework所在目录

IJKMediaFramework.framework所在目录  2、合并静态库 进入 Finder 后, 可以看到有真机和模拟器两个版本的编译结果, 如下图:  下面开始合并真机和模拟器版本的 framework, 注意不要合并错了, 合并的是这个文件, 如下图:

 打开终端, 进行合并, 命令行具体格式为: lipo -create "真机版本路径" "模拟器版本路径" -output "合并后的文件路径" 合并后如下图:  下面很重要, 需要用合并后的IJKMediaFramework把原来的IJKMediaFramework替换掉, 如下图  上图中的1、2两步完成后, 绿色框住的那个IJKMediaFramework.framework文件就是我们需要的框架了, 可以复制出来, 稍后我们需要导入工程使用 4⃣️、iOS工程中集成ijkplayer 新建工程, 导入合并后的IJKMediaFramework.framework以及相关依赖框架以及相关依赖框架,如下图:  **导出ijkmediaframework.framework静态库***** 导入框架后, 在ViewController.m进行测试, 首先导入IJKMediaFramework.h头文件, 编译看有没有错, 如果没有错说明集成成功. AVS+ts流测试如下图:  工程中若出现如下图错误,需要添加在Build Phases/Link Binary With Libraries添加libc++.1.dylib 

****ffmpeg兼容bavs的实现方法****

1.本文背景 本文主要介绍如何在ffmpeg中使用支持P16的bavs解码库。 2.基本原理 由于ffmpeg中已有一个cavs,但其支持的档次和功能特性都不够完善。因此,新开发的bavs将加入ffmpeg中,并可以很好地支持P2/P16的帧或场方式的解码,它将覆盖cavs的功能。为了保护bavs解码库,将以加密的动态库形式提供该库。但一些有关ffmpeg语法上的修改,将在下文中进行详细介绍。 3.ffmpeg需做的相应改动 见《ffmpeg兼容bavs的实现方法》 ****ffmpeg兼容bavs的实现方法****

收藏
0
sina weixin mail 回到顶部