ios视频-ffmpeg的编译

本文详细介绍了在Mac系统上通过命令行工具安装ffmpeg库的方法,并提供了针对xcode4.3.2+iOS5.1环境的编译教程。包括下载资源、配置环境变量、执行编译命令等步骤,最终生成可用于iOS应用的ffmpeg库,并指导如何在项目中集成使用。同时,解决在使用过程中遇到的模拟器生成adhoc的ipa编译失败问题,通过调整代码实现成功编译。
摘要由CSDN通过智能技术生成

首先确保mac下的终端能执行make这样的命令,不行的话需要单独安装.
安装办法参考:安装命令行工具

( 菜单Xcode >> Open Developer Tool >>More Developer Tools)

接下来可以尝试编译一个本机使用的ffmpeg库来使用.
针对xcode4.3.2+ios5.1的环境,网上找到的办法

http://www.cnblogs.com/wupher/articles/2456421.html

http://blog.fuckbugs.me/%E5%B0%86-ffmpeg-%E7%A7%BB%E6%A4%8D%E5%88%B0-ios5-0/

http://blog.sina.com.cn/s/blog_4431c76101013ywx.html


实际操作中,

1. 到https://github.com/gabriel/ffmpeg-iphone-build下载ffmpeg-iphone-build
2.先将gas-preprocessor.pl拷贝到/usr/sbin/目录中。
3.到这里下载最新的ffmpeg:http://ffmpeg.org/download.html    或者命令行安装:git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg

下载一个事例工程:git clone git://github.com/lajos/iFrameExtractor.git 

这几个步骤都不会有问题的.


下面是到ffmpeg的目录下,在终端中执行这样的代码.最后是生成config.h的文件.

export DEVRoot=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer
export SDKRoot=$DEVRoot/SDKs/iPhoneOS5.1.sdk
export CC=$DEVRoot/usr/bin/llvm-gcc
 
./configure \
--cc=${CC} \
--as="gas-preprocessor.pl ${CC}" \
--sysroot=${SDKRoot} \
--enable-cross-compile \
--target-os=darwin \
--arch=arm \
--cpu=cortex-a8 \
--extra-cflags="-arch armv7" \
--extra-ldflags="-arch armv7 -isysroot ${SDKRoot}" \
--enable-pic \
--disable-doc \
--disable-ffplay \
--disable-ffserver \
--disable-gpl \
--disable-shared \
--enable-static \
--disable-mmx \
--disable-debug \
--enable-decoder=h264  \
--disable-asm


然后执行make的命令.make clean用来清理

make结束后,执行sudo make install,就会在/usr/local下生成相应的文件.


然后把lib下的.o文件可以直接复制到工程中,进行使用,头文件可以不用了.在工程的target中指定header search path为/usr/local/include就行了.

添加libbz2.1.0.dylib系统库文件


最后注意:上面的方式都是指定编译的o文件为device的,不是模拟器的.


选择模拟器生成adhoc的ipa,结果编译还是失败,出现的两个问题:

错误:

        
        
1
2
3
        
        
Undefined   symbols   for   architecture   i386 :
   "_av_open_input_file" ,   referenced   from :
       - [ VideoFrameExtractor   initWithVideo : ]   in   VideoFrameExtractor . o

应该把

        
        
1
        
        
av_open_input_file ( & pFormatCtx ,   [ moviePath   cStringUsingEncoding : NSASCIIStringEncoding ] , NULL ,   0 , NULL ) ! = 0   

修改为

        
        
1
        
        
  avformat_open_input ( & pFormatCtx ,   [ moviePath   cStringUsingEncoding : NSASCIIStringEncoding ] , NULL ,   NULL ) ! = 0
iFrameExtractor中的codec_type需要将CODEC_TYPE_VIDEO修改为AVMEDIA_TYPE_VIDEO











评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值