iFrameExtractor无法使用XCode 4.3.3&amp ;;为armv7构建库。 iOS 5.1

时间:2012-07-12 12:08:15

标签: ios ffmpeg

我已从此链接下载了使用XCode 4.3.3 for iOS 5.1构建的代码 - https://github.com/lajos/iFrameExtractor 我成功地使用build_universal脚本为FFmpeg构建库。但它总是为X86_64架构构建库。用lipo -info命令检查。

还尝试了链接中的构建脚本 - http://stexgroup.com/blog/ffmpeg-for-iphone-ios-xcode4.3-build-script。它还为X86_64架构构建库。

我根据这篇文章更改了脚本 - problem compiling ffmpeg for iFrameExtractor

但没有什么对我有用。

armv7 [iFrameExtractor]的构建脚本如下

./configure \
--disable-bzlib --disable-doc \
--disable-ffmpeg --disable-ffplay \
--disable-ffserver --disable-mmx \
--cc=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc \
--as='gas-preprocessor/gas-preprocessor.pl /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc' \
--enable-cross-compile --target-os=darwin \
--arch=arm --cpu=cortex-a8 --enable-pic \
--sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk \
--extra-ldflags="-arch armv7 -    L//Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/usr/lib" \
--extra-cflags="-arch armv7"

任何人都可以指导我可能出现的问题,考虑到同样的事情对其他人都有用吗?

3 个答案:

答案 0 :(得分:0)

使用以下脚本,我可以构建库。这些脚本是远程指针在此链接中共享的脚本的修改版本 - problem compiling ffmpeg for iFrameExtractor

的ARMv6

#!/bin/tcsh -f

if (! -d armv6) mkdir armv6
if (! -d lib) mkdir lib

rm armv6/*.a

make clean

./configure \
--disable-bzlib --disable-doc \
--disable-ffmpeg --disable-ffplay \
--disable-ffserver --disable-mmx \
--cc=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc \
--as='gas-preprocessor/gas-preprocessor.pl /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc' \
--enable-cross-compile --target-os=darwin \
--arch=arm --cpu=arm1176jzf-s \
--sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk \
--extra-ldflags="-arch armv6 -L//Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/usr/lib/system" \
--extra-cflags="-arch armv6"

make

mv libavcodec/libavcodec.a armv6/
mv libavdevice/libavdevice.a armv6/
mv libavformat/libavformat.a armv6/
mv libavutil/libavutil.a armv6/
mv libswscale/libswscale.a armv6/

rm lib/*.a

cp armv6/*.a lib/

ARMv7的

#!/bin/tcsh -f

if (! -d armv7) mkdir armv7
if (! -d lib) mkdir lib

rm armv7/*.a

make clean

./configure \
--disable-bzlib --disable-doc \
--disable-ffmpeg --disable-ffplay \
--disable-ffserver --disable-mmx \
--cc=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc \
--as='gas-preprocessor/gas-preprocessor.pl /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc' \
--enable-cross-compile --target-os=darwin \
--arch=arm --cpu=cortex-a8 --enable-pic \
--sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk \
--extra-ldflags="-arch armv7 -    L//Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/usr/lib/system" \
--extra-cflags="-arch armv7"

make

mv libavcodec/libavcodec.a armv7/
mv libavdevice/libavdevice.a armv7/
mv libavformat/libavformat.a armv7/
mv libavutil/libavutil.a armv7/
mv libswscale/libswscale.a armv7/

rm lib/*.a

cp armv7/*.a lib/

I386

#!/bin/tcsh -f

if (! -d i386) mkdir i386
if (! -d lib) mkdir lib

rm i386/*.a

make clean

./configure \
--disable-bzlib --disable-doc \
--disable-ffmpeg --disable-ffplay \
--disable-ffserver --disable-mmx \
--cc=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc \
--as='gas-preprocessor/gas-preprocessor.pl     /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc' \
--sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk \
--extra-ldflags="-arch i386 -L//Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/usr/lib/system" \
--extra-cflags="-arch i386 -fmessage-length=0 -pipe -Wno-trigraphs -fpascal-strings -O0 -fasm-blocks -Wreturn-type -Wunused-variable -D__IPHONE_OS_VERSION_MIN_REQUIRED=40000 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk -fvisibility=hidden -mmacosx-version-min=10.5 -gdwarf-2"

make

mv libavcodec/libavcodec.a i386/
mv libavdevice/libavdevice.a i386/
mv libavformat/libavformat.a i386/
mv libavutil/libavutil.a i386/
mv libswscale/libswscale.a i386/

rm lib/*.a

cp i386/*.a lib/

现在问题是所有脚本都为armv6架构构建了库。有人遇到过这样的问题吗?

答案 1 :(得分:0)

如果您愿意,可以尝试使用此框架

https://github.com/mooncatventures-group/ffmpegDecoder

我们的framextractor以iframeextrator为基础开始,然后分散使用 avfoundation

https://github.com/mooncatventures-group/FFPlayer-tests

也没有理由你可以用iffeextractor替换我们的ffmpeg框架来构建ffmpeg

{
#import <Foundation/Foundation.h>

#include <ffmpegdecoder/libavformat/avformat.h>
#include <ffmpegdecoder/libswscale/swscale.h>
}

该框架基于ffmpeg 8.3,我们发现它对于当前版本更加稳定,特别是对于ip camera feed。它们是一些mod,它们位于frame-test项目的ffmpeg.zip文件中。

答案 2 :(得分:0)

我已经发布了如何在所有版本的ios中集成ffmpeg。检查一下

FFMPEG integration on iphone/ ipad project

最后我们将获得ffmpeg通用库和#include文件。将其添加到您的项目中,并按照该链接中给出的步骤操作。 iframeextractor对我来说工作正常