首页 > 代码库 > xcode5下ffmpeg静态库配置

xcode5下ffmpeg静态库配置

1要安装xcode命令行工具

       1).xcode5安装命令行工具方法:

             在终端执行命令Using xcode-select --install 

       2).xcode5之前安装命令行工具方法:

2xcode5以前都是gcc编译的,在xcode5以后都是clang编译,在脚本中有所体现

3xcode5以前还要下载gas-preprocessor.pl脚本包,然后使用cp命令拷贝到usrbin下面,

     在xcode5以后不需要下载这个gas-preprocessor.pl脚本

4下载ffmpeg源码,然后放放置源码至/usr/bin/build/src/文件下

       在终端执行 cd /usr/bin/build/src/ffmpeg-2.2.3进入ffmpeg文件夹


5arm7脚本(生成arm7下.a文件)

1) sudo ./configure --disable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver --enable-cross-compile --sysroot="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk" --target-os=darwin --cc="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" --extra-cflags="-arch armv7" --extra-ldflags="-arch armv7" --extra-ldflags=-L/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/usr/lib/system --arch=arm --cpu=cortex-a8 --enable-pic  --disable-asm --disable-everything --enable-decoder=h264 --enable-decoder=rv40 --enable-decoder=aac

2) make clean

3) make 

4) make install 如果执行失败,执行 sudo make install

5) make clean

6) 执行所得.a文件剪切到桌面ffmpeg文件夹下arm7子文件夹下


6arm7s脚本(生成arm7s下.a文件)

1) sudo ./configure --disable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver --enable-cross-compile --sysroot="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk" --target-os=darwin --cc="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" --extra-cflags="-arch armv7s -mfpu=neon -miphoneos-version-min=7.1” --extra-ldflags="-arch armv7s -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk -miphoneos-version-min=7.1" --arch=arm --cpu=cortex-a9 --enable-pic  --disable-asm --disable-everything --enable-decoder=h264 --enable-decoder=rv40 --enable-decoder=aac

2) make clean

3) make 

4) make install 如果执行失败,执行 sudo make install

5) make clean

6) 执行所得.a文件剪切到桌面ffmpeg文件夹下arm7s子文件夹下


7i386的编译:(生成i386下.a文件)

1) sudo ./configure --disable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver --enable-avresample --enable-cross-compile --sysroot="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.1.sdk" --target-os=darwin --cc="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" --extra-cflags="-arch i386 -mfpu=neon -miphoneos-version-min=7.0" --extra-ldflags="-arch i386 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.1.sdk -miphoneos-version-min=7.0" --arch=i386 --cpu=i386 --enable-decoder=h264 --enable-decoder=rv40

2) make clean

3) make 

4) make install 如果执行失败,执行 sudo make install

5) make clean

6) 执行所得.a文件剪切到桌面ffmpeg文件夹下sim子文件夹下

注:不用配置这个--enable-pic  --disable-asm

--enable-pic  //build position-independent code

--disable-asm  //disable all assembler optimizations

脚本中的黄色字体显示编译器的路径,这个和xcode5以前是不一样的



8i386,arm7,arm7s文件夹下的相同名字文件合并到ios文件下一个文件

1)、三个libswscale.a文件合成一个文件libswscale.a

lipo -create /Users/chang/Desktop/ffmpeg/sim/libswscale.a /Users/chang/Desktop/ffmpeg/arm7/libswscale.a /Users/chang/Desktop/ffmpeg/arm7s/libswscale.a -output /Users/chang/Desktop/ffmpeg/ios/libswscale.a

2)、三个libswresample.a文件合成一个文件libswresample.a

lipo -create /Users/chang/Desktop/ffmpeg/sim/libswresample.a /Users/chang/Desktop/ffmpeg/arm7/libswresample.a /Users/chang/Desktop/ffmpeg/arm7s/libswresample.a -output /Users/chang/Desktop/ffmpeg/ios/libswresample.a

3)、三个libavutil.a文件合成一个文件libavutil.a

lipo -create /Users/chang/Desktop/ffmpeg/sim/libavutil.a /Users/chang/Desktop/ffmpeg/arm7/libavutil.a /Users/chang/Desktop/ffmpeg/arm7s/libavutil.a -output /Users/chang/Desktop/ffmpeg/ios/libavutil.a

4)、三个libavformat.a文件合成一个文件libavformat.a

lipo -create /Users/chang/Desktop/ffmpeg/sim/libavformat.a /Users/chang/Desktop/ffmpeg/arm7/libavformat.a /Users/chang/Desktop/ffmpeg/arm7s/libavformat.a -output /Users/chang/Desktop/ffmpeg/ios/libavformat.a

5)、三个libavfilter.a文件合成一个文件libavfilter.a

lipo -create /Users/chang/Desktop/ffmpeg/sim/libavfilter.a /Users/chang/Desktop/ffmpeg/arm7/libavfilter.a /Users/chang/Desktop/ffmpeg/arm7s/libavfilter.a -output /Users/chang/Desktop/ffmpeg/ios/libavfilter.a

6)、三个libavdevice.a文件合成一个文件libavdevice.a

lipo -create /Users/chang/Desktop/ffmpeg/sim/libavdevice.a /Users/chang/Desktop/ffmpeg/arm7/libavdevice.a /Users/chang/Desktop/ffmpeg/arm7s/libavdevice.a -output /Users/chang/Desktop/ffmpeg/ios/libavdevice.a

7)、三个libavcodec.a文件合成一个文件libavcodec.a

lipo -create /Users/chang/Desktop/ffmpeg/sim/libavcodec.a /Users/chang/Desktop/ffmpeg/arm7/libavcodec.a /Users/chang/Desktop/ffmpeg/arm7s/libavcodec.a -output /Users/chang/Desktop/ffmpeg/ios/libavcodec.a


注:i386,arm7文件夹下各有8.a文件,arm7s文件夹下却只有7个,不明原理。

测试中,我在桌面建了一个文件夹ffmpeg,下面有三个子文件夹sim(即i386编译所得.a文件,用于模拟器调试)、arm7(即arm7环境下编译所得文件)、arm7s(即arm7s环境下编译所得文件)。经过上面命令操作后,在ios文件夹下会得到合成后的.a文件,这样就可以在真机及模拟器下正常使用了。