编译最新ffmpeg2.0.1到iOS设备

原创 2013年09月17日 21:27:49

www.mingjianhua.com 

转载请注明出处。

iPhone调用ffmpeg2.0.2解码h264视频的示例代码

上一篇文章讲了用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/下就是我们需要的静态库了。

iPhone调用ffmpeg2.0.2解码h264视频的示例代码


www.mingjianhua.com


相关文章推荐

iOS 获取手机型号(iPhone 8 、iPhone 8 Plus、iPhone X)

//获得设备型号 + (NSString *)getCurrentDeviceModel:(UIViewController *)controller {     int mib[2];     si...

最新获取iOS设备型号大全(包括iphone7,iphone7 Plus)

获取iOS设备型号,找了一圈发现一般写的都不够全,自己完善了一下。 调用记得加上头文件: #import -(NSString*)deviceString {     struct utsna...

用NDKr9编译最新ffmpeg2.0.1(ffmpeg2.0.2)到android平台

用NDKr9编译最新ffmpeg2.0.1(ffmpeg2.0.2)到android平台 转载请注明出处 http://www.mingjianhua.com 本文参照 h...

如何将游戏从Unity导到iOS设备上

  • 2015年07月23日 17:07
  • 1.61MB
  • 下载

ICND课件-3-操作与配置Cisco IOS设备

  • 2014年06月12日 23:31
  • 587KB
  • 下载

Three20研究院之解决真机IOS6在Xcode4.5下无法编译与IOS设备自动旋转问题(九)

之前一直都是在Xcode4.4下使用Three20开发框架,今天升级到4.5了发现在IOS6下无法将程序编译到真机上,还有就是Three20在IOS6下旋转的代码全部失灵了,非常奇怪。今天抽了一点时间...

如何获取iOS设备的UDID号

  • 2012年12月17日 18:26
  • 412KB
  • 下载

获取ios设备号

  • 2017年01月04日 16:50
  • 21KB
  • 下载

【Cocos2d-X(2.x) 游戏开发系列之二】cocos2dx最新2.0.1版本跨平台整合NDK+Xcode,Xcode编写&编译代码,Android导入打包运行即可!

本站文章均为 李华明Himi 原创,转载务必在明显处注明:转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/cocos2dx-v2-0/962.html  ...

iOS设备完美越狱后IPA补丁与安装

  • 2013年04月21日 21:01
  • 1.56MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:编译最新ffmpeg2.0.1到iOS设备
举报原因:
原因补充:

(最多只允许输入30个字)