编译最新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


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

本文参照 http://www.roman10.net/how-to-build-ffmpeg-with-ndk-r9/ 在linux下的编译,在MAC下也差不多,只需做一点点小改动,在LINUX下也...
  • mjh1021
  • mjh1021
  • 2013年09月16日 11:24
  • 1201

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

用NDKr9编译最新ffmpeg2.0.1(ffmpeg2.0.2)到android平台 转载请注明出处 http://www.mingjianhua.com 本文参照 h...
  • program_pointer
  • program_pointer
  • 2013年10月21日 11:13
  • 422

2018前端值得关注的技术

1.前言 2017悄然过去,2018已经来到。人在进步,技术在发展。2018年前端有哪些领域,技术值得关注,哪些技术会兴起,哪些技术会没落。下面就我个人的判断进行一个预测判断,希望能对大家起到一...
  • lizhipeng123321
  • lizhipeng123321
  • 2018年01月10日 10:12
  • 77

ios中http 和https 协议的访问

最近做个项目,开始采用的是HTTP协议实现客户端和服务器端的交互,后来需要改成HTTPS协议。在修改的过程中发现了一些问题,解决方案如下:   HTTP:     NSString ...
  • xiaoxuan415315
  • xiaoxuan415315
  • 2014年03月05日 14:21
  • 1224

最新webrtc编译 2017

webRTC被越来越广泛的使用,但是很多人都对其源码的下载及编译感到非常的头疼,总结下我们团队在下载编译过程中遇到的问题。 最新的webRTC需要安装VS2015,最好安装旗舰版,社区版的话在编译过程...
  • wirelessdisplay
  • wirelessdisplay
  • 2017年03月18日 19:57
  • 2730

iOS设备型号

所有设备型号对应的官网地址: 官网地址: https://www.theiphonewiki.com/wiki/Models 如果你懒得整理了,直接复制我下边代码: + (NSS...
  • TIANBING878
  • TIANBING878
  • 2017年11月17日 14:17
  • 276

UIDeviceHardware 最新的Ios设备配置表

转载自:https://gist.github.com/weekwood/4265890 UIDeviceHardware.h Objective-C ...
  • chenyong05314
  • chenyong05314
  • 2013年10月08日 17:20
  • 2144

编译目前最新的lua5.3.2到Android平台

本文介绍编译目前最新的lua5.3.2到Android平台。lua下载地址http://www.lua.org。 编译过程需要ndk,ndk的安装不再复述,lua下载好以后进入src文件夹,可以看到...
  • fnzsjt
  • fnzsjt
  • 2016年01月22日 13:29
  • 1808

ios设备开机到当前时间差

// 系统开机时间(毫秒) + (int) getSystemUptimeByMillisecond { const int64_t kOneMillion = 1000 * 1000; ...
  • f10_s
  • f10_s
  • 2014年10月08日 10:35
  • 976

IOS APP在不同设备之间共享文件

http://stackoverflow.com/questions/12561471/how-to-share-files-between-2-local-ios-apps-without-url-...
  • wangeen
  • wangeen
  • 2014年07月28日 08:12
  • 1228
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:编译最新ffmpeg2.0.1到iOS设备
举报原因:
原因补充:

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