织梦CMS - 轻松建站从此开始!

罗索实验室

编译最新ffmpeg2.0.1到iOS设备

落鹤生 发布于 2013-10-09 22:54 点击:次 
上一篇文章讲了用NDKr9编译最新ffmpeg2.0.1到android平台,一般做了Android平台的编解码就免不了要做iOS,这次一起把iOS的ffmpeg编译也一起写一篇吧。
TAG:

上一篇文章讲了用NDKr9编译最新ffmpeg2.0.1到android平台,一般做了Android平台的编解码就免不了要做iOS,这次一起把iOS的ffmpeg编译也一起写一篇吧。

 

一、首先准备开发环境

1、XCode大家都有了吧,就不说了。

2、Command line tools,得装个。

3、gas-preprocessor,

安装方式是直接copy文件 gas-preprocessor.pl 到 /usr/bin ,记得修改权限可执行.

因为在编译ffmpeg的时候,gas-preprocessor版本必须和ffmpeg配合,所以如果你下载的ffmpeg源码是最新的,那么建议去 libav网站 下载最新的 gas-preprocessor.

如果之后在编译时候遇到类似这样的错误

unknown register alias 'TCOS_D0_HEAD'

那么可以尝试更换 gas-preprocessor版本来解决.

4、

然后 pkg-config, 可以直接通过MacPorts来安装

sudo port install pkgconfig

其实没有也行,装macports各种蛋疼。

 

2. 下载ffmpeg的源码

下载地址:http://ffmpeg.org/download.html

 

3. 编译armv7的支持

建一个build_armv7.sh文件,把下面内容拷进去。

#!/bin/sh

 

#armv7

./configure \

--disable-shared \

--enable-static \

--prefix=armv7 \

--enable-small \

--disable-ffmpeg \

--disable-ffplay \

--disable-ffprobe \

--disable-ffserver \

--disable-avdevice \

--disable-avformat \

--disable-swresample \

--disable-swscale \

--disable-postproc \

--disable-avfilter \

--disable-everything \

--disable-encoders \

--disable-decoders \

--enable-decoder=h264 \#要开什么编解码器自己看着办

--disable-muxers \

--disable-devices \

--disable-protocols \

--disable-network \

--disable-avdevice \

--enable-cross-compile \

--sysroot="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk" \

--target-os=darwin \

--cc="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc" \

--extra-cflags="-arch armv7 -mfpu=neon -miphoneos-version-min=5.1" \

--extra-ldflags="-arch armv7 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk -miphoneos-version-min=5.1" \

--arch=arm \

--cpu=cortex-a9 \

--enable-pic \

--enable-neon 

 

make clean 

make 

make install

 

然后在命令行里输入

./build_armv7.sh

然后就可以等结果了

 

完了后可以看到在ffmpeg路径下有个armv7路径下有了你要的include 和lib文件了。

 

3. 编译armv7s,i386的支持

跟上面差不多。就不多说了,就只贴configure文件了

#armv7s

./configure \

--prefix=armv7s \

--disable-ffmpeg \

--disable-ffplay \

--disable-ffprobe \

--disable-ffserver \

--disable-encoders \

--disable-muxers \

--disable-devices \

--disable-protocols \

--disable-network \

--disable-avdevice \

--enable-avresample \

--enable-cross-compile \

--sysroot="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk" \

--target-os=darwin \

--cc="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc" \

--extra-cflags="-arch armv7s -mfpu=neon -miphoneos-version-min=5.1" \

--extra-ldflags="-arch armv7s -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk -miphoneos-version-min=5.1" \

--arch=arm \

--cpu=cortex-a9 \

--enable-pic \

--enable-neon 

 

make clean 

make 

make install

 

#i386

./configure \

--prefix=i386 \

--disable-ffmpeg \

--disable-ffplay \

--disable-ffprobe \

--disable-ffserver \

--disable-encoders \

--disable-muxers \

--disable-devices \

--disable-protocols \

--disable-network \

--disable-avdevice \

--enable-avresample \

--enable-cross-compile \

--sysroot="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.1.sdk" \

--target-os=darwin \

--cc="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc" \

--extra-cflags="-arch i386" \

--extra-ldflags="-arch i386 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.1.sdk" \

--arch=i386 \

--cpu=i386 \

--enable-pic \

--disable-asm

 

make clean 

make 

make install

 

6. 最后,我们合并armv7、armv7s、i386

建立merge.sh文件并运行

 

#merge

cd armv7/lib

 

for file in *.a

do

cd ../..

xcrun -sdk iphoneos lipo -output universal/lib/$file  -create -arch armv7 armv7/lib/$file -arch armv7s armv7s/lib/$file -arch i386 i386/lib/$file

echo "Universal $file created."

cd -

done

cd ../..

完成后在universal/lib/下就是我们需要的静态库了。

(mjh1021)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www1.rosoo.net/a/201310/16755.html]
本文出处:CSDN博客 作者:mjh1021 原文
顶一下
(1)
100%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容