折腾了一下午总算把这个搞定了,之前在模拟器上运行iFrameExtractor怎么样都可以,但是在真机上总报错。到处查文章,找到的资料大多的ios4.x系列的,ffmpeg的版本也不太一样,因此折腾出来后把详细过程记录在这里,一来方便自己下次什么还需要再玩一遍,二来供有需要的人查找,不用绕我当初走的一些弯路。
首先下载以下工程代码:iFrameExtractor(https://github.com/lajos/iFrameExtractor), gas-preprocessor(https://github.com/yuvi/gas-preprocessor), ffmpeg(http://ffmpeg.org/download.html)。
把iFrameExtractor工程目录下的那个ffmpeg删掉,里面的ffmpeg版本实在太老。将自己下载的ffmpeg代码解压拷贝到iFrameExtractor目录下。 把gas-preprocessor.pl放到工程目录,或者干脆直接丢到/usr/bin下也成。 使用ffmpeg下面的configure来进行编译设置。
编译成真机调试还是模拟器调试的关键在于CC的类型,是用于编译macos程序的gcc还是供iPhone platform程序使用的gcc,以及config参数中arch是指定成x86还是armv7。 Xcode4.3中iPhone platform编译的gcc路径如下:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/llvm-gcc IOS5.1的SDK目录为:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk
用于真机调试的configure运行参数如下:
export DEVRoot=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer
export SDKRoot=$DEVRoot/SDKs/iPhoneOS5.1.sdk
export CC=$DEVRoot/usr/bin/llvm-gcc
./configure \
--cc=${CC} \
--as="gas-preprocessor.pl ${CC}" \
--sysroot=${SDKRoot} \
--enable-cross-compile \
--target-os=darwin \
--arch=arm \
--cpu=cortex-a8 \
--extra-cflags="-arch armv7" \
--extra-ldflags="-arch armv7 -isysroot ${SDKRoot}" \
--enable-pic \
--disable-doc \
--disable-ffplay \
--disable-ffserver \
--disable-gpl \
--disable-shared \
--enable-static \
--disable-mmx \
--disable-debug \
--enable-decoder=h264 \
--disable-asm
脚本中使用了“--disable-asm”来禁用了汇编生成。这条会严重影响视频播放的效率。以iFrameExtractor为例,在iPhone4S上运行还成,在iPod touch上就显得有些慢动作了。但是不这么干,configure和make过程中会出错。使用IOS4.3 SDK编译的话,则不会出现此问题。stackoverflow上有人曾经提过,可以通过禁用不需要的解码器及修改源代码来避免,可惜我还没试成功过。大家有什么好办法,请千万留言。 整个脚本,可以在此下载。
设置编译成功后,将dist目录下的五个.a文件拖到Xcode中iFrameExtractor项目中去,替换掉原来那5个,再链上libbz2.1.0.dylib就可以在Xcode中进行真机调试了。
configure过程如果出现错误,可以查看生成的config.log,根据具体的错误信息来调整configure的参数。
祝大家好运吧,折腾这东西可真累且无聊。
同事因为需要在旧iOS设备上进行调试,这是他折腾出来的armv6的版本,适用于iPhone及iPhone3G系统:
#!/bin/sh
export FFMPEG_DIR=ffmpeg
export DEVRoot=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer
export SDKRoot=$DEVRoot/SDKs/iPhoneOS5.1.sdk
export CC=$DEVRoot/usr/bin/llvm-gcc
export LD=$DEVRoot/usr/bin/ld
cd $FFMPEG_DIR
mkdir -p lib
make clean
./configure \
--cc=${CC} \
--as="gas-preprocessor.pl ${CC}" \
--sysroot=${SDKRoot} \
--enable-cross-compile \
--target-os=darwin \
--arch=arm \
--cpu=arm1176jzf-s \
--extra-cflags="-arch armv6" \
--extra-ldflags="-arch armv6 -isysroot ${SDKRoot}" \
--disable-doc \
--disable-ffplay \
--disable-ffserver \
--disable-gpl \
--disable-shared \
--enable-static \
--disable-mmx \
--disable-debug \
--enable-decoder=h264 \
--disable-asm
echo "ready to make "
make
mv libavcodec/libavcodec.a lib/
mv libavdevice/libavdevice.a lib/
mv libavformat/libavformat.a lib/
mv libavutil/libavutil.a lib/
mv libswscale/libswscale.a lib/
转帖:
http://www.cnblogs.com/wupher/articles/2456421.html
分享到:
相关推荐
ffmpeg-0.10.2.tar.bz2ffmpeg-0.10.2.tar.bz2
ffmpeg库:ffmpeg-n5.1-latest-win64-gpl-shared-5.1
Windows版本ffmpeg,ffmpeg-n4.3.1-20-g8a2acdc6da-win64-lgpl-4.3
ffmpeg--移植Mac IOS的步骤文档
ffmpeg-4.3-win64-static.zip
最新windows系统下运行的ffmpeg
赠送jar包:ffmpeg-4.3.2-1.5.5.jar; 赠送原API文档:ffmpeg-4.3.2-1.5.5-javadoc.jar; 赠送源代码:ffmpeg-4.3.2-1.5.5-sources.jar; 赠送Maven依赖信息文件:ffmpeg-4.3.2-1.5.5.pom; 包含翻译后的API文档:...
赠送jar包:ffmpeg-5.0-1.5.7.jar; 赠送原API文档:ffmpeg-5.0-1.5.7-javadoc.jar; 赠送源代码:ffmpeg-5.0-1.5.7-sources.jar; 赠送Maven依赖信息文件:ffmpeg-5.0-1.5.7.pom; 包含翻译后的API文档:ffmpeg-5.0...
在网上找了很久,终于找到的,亲测在windows xp 下可以运行的ffmpeg, 版本为 4.3。
ffmpeg-4.2.2-win64Windows下编译好了的动态库, 可以在windows下直接使用的dll.
赠送jar包:ffmpeg-5.0-1.5.7.jar; 赠送原API文档:ffmpeg-5.0-1.5.7-javadoc.jar; 赠送源代码:ffmpeg-5.0-1.5.7-sources.jar; 赠送Maven依赖信息文件:ffmpeg-5.0-1.5.7.pom; 包含翻译后的API文档:ffmpeg-5.0...
ffmpeg-4.0.2-win32-dev.zip ffmpeg-4.0.2-win32-shared.zip ffmpeg-4.0.2-win32-static.zip ffmpeg-4.0.2-win64-dev.zip ffmpeg-4.0.2-win64-shared.zip ffmpeg-4.0.2-win64-static.zip
ffmpeg 5.0.1 基础版,适用于 windows操作系统
ffmpeg-master-latest-win64-gpl.zip
xcode6 0 1 ios8sdk 编译ffmpeg库 可以编译armv7 armv7s arm64 模拟器的找了好多资料没有编译通过 如果没有更新xcode和sdk 可以修改 sh文件里的SDK VERSION 修改自己的sdk版本 还有我是这三个平台我是一个一个编译的...
基于FFmpeg-5.1代码编译,for iOS 13。 支持架构arm64,x86-64。 兼容系统原生架构AVFoundation。
ffmpeg-n5.1.2-win64
基于FFmpeg-5.1代码编译,for iOS 13。 支持架构arm64,x86-64。 兼容系统原生架构AVFoundation。仅开放解码播放能力,大幅缩减体积。
FFmpeg sdk 3.2 ,音视频解码器,支持众多格式。内有文档。开发方便。
FFmpeg-Builds-autobuild-2021-01-23-12-48.tar.gz FFmpeg-Builds-autobuild-2021-01-23-12-48.zip ffmpeg-N-100746-gd8a585d4d5-win64-gpl-shared-vulkan.zip...ffmpeg-n4.3.1-29-g89daac5fe2-win64-lgpl-4.3.zip ffmp