关于ios中编译ffmpeg0.9.2库

2024-04-14 06:38:57

很多朋友在问如何在ios中编译ffmpeg库,虽说网上的教程很多,但是大部分都说按其操作,最后编译总是不成功,正好我最近的项目要用到ffmpeg,所以就再次编译了,同时在这里记下,方便需要参考的朋友。

先说一下本次编译的环境:

mac os x 10.7.4

xcode4.2.1

ios5.0

ffmpeg0.9.2(最新的为0.10.3,一般不喜欢用最新的,原因不说了,所以这里选择次新的,^_^,有兴趣的朋友可以自己去测试最新的版本)

下面直接上步骤:

1:https://github.com/yuvi/gas-preprocessor下载gas-preprocessor.pl文件并将其放置到/usr/sbin路径下,然后对其赋予权限,如下所示:

  1. cd /usr/sbin
  2. chmod 777 gas-preprocessor.pl

2:到ffmpeg的官网http://ffmpeg.org/download.html下载所需要版本代码,这里选择ffmpeg0.9.2,解压之后会得到一个ffmpeg-0.9.2的文件夹。

3:从终端进入到加压出来的ffmpeg-0.9.2文件夹,并执行make clean命令,清除上次生成的库文件。

4:编译配置(分为模拟器和真机两个版本)

4.1:模拟器版本编译配置,在终端执行如下命令:

  1. ./configure --disable-doc --disable-ffmpeg --disable-ffplay --disable-ffserver --disable-avfilter --disable-debug --disable-encoders --enable-cross-compile --disable-decoders --disable-armv5te--enable-decoder=h264--enable-pic--cc=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc--as='gas-preprocessor/gas-preprocessor.pl /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc'--extra-ldflags=-L/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/usr/lib/system--sysroot=/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk--target-os=darwin--arch=i386--cpu=i386--extra-cflags='-arch i386'--extra-ldflags='-arch i386'--disable-asm

4.2:真机版本编译配置,在终端执行如下命令:

  1. ./configure --disable-doc --disable-ffmpeg --disable-ffplay --disable-ffserver --disable-avfilter --disable-debug --disable-decoders --enable-cross-compile --disable-encoders --disable-armv5te--enable-decoder=h264--enable-pic--cc=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc--as='gas-preprocessor/gas-preprocessor.pl /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc'--extra-ldflags='-arch armv7 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk'--sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk--target-os=darwin--arch=arm--cpu=cortex-a8--extra-cflags='-arch armv7'--disable-asm

注意:需要将其中的sdk路径更换为自己环境所对应的sdk路径,注意命令中的空格。

配置成功之后将出现如下画面,如果没有成功,则仔细检查命令是否正确:

  1. Enabled filters:
  2. abuffer         earwax          pad
  3. abuffersink     fade            pan
  4. aconvert        fieldorder      pixdesctest
  5. aevalsrc        fifo            rgbtestsrc
  6. aformat         format          scale
  7. amovie          gradfun         select
  8. anull           hflip           setdar
  9. anullsink       life            setpts
  10. anullsrc        lut         setsar
  11. aresample       lutrgb          settb
  12. ashowinfo       lutyuv          showinfo
  13. buffer          mandelbrot      slicify
  14. buffersink      movie           split
  15. cellauto        negate          testsrc
  16. color           noformat        transpose
  17. copy            null            unsharp
  18. crop            nullsink        vflip
  19. deshake         nullsrc         volume
  20. drawbox         overlay
  21. Enabled bsfs:
  22. aac_adtstoasc       mjpeg2jpeg      noise
  23. chomp           mjpega_dump_header  remove_extradata
  24. dump_extradata      mov2textsub     text2movsub
  25. h264_mp4toannexb    mp3_header_compress
  26. imx_dump_header     mp3_header_decompress
  27. Enabled indevs:
  28. Enabled outdevs:
  29. License: LGPL version 2.1 or later
  30. Creating config.mak and config.h...
  31. WARNING: pkg-config not found, library detection may fail.
  32. WARNING: Compiler does not indicate floating-point ABI, guessing soft.
  33. Yarin-YangmatoiMac:ffmpeg-0.9.2 yarin$

5:编译,最简单了,在终端执行make命令即可,如果出现以下画面,则表示编译成功:

  1. libavutil/opt.c: In function ‘av_opt_ptr’:
  2. libavutil/opt.c:811: warning: initialization discards qualifiers from pointer target type
  3. CC  libavutil/parseutils.o
  4. CC  libavutil/pixdesc.o
  5. CC  libavutil/random_seed.o
  6. CC  libavutil/rational.o
  7. CC  libavutil/rc4.o
  8. CC  libavutil/samplefmt.o
  9. CC  libavutil/sha.o
  10. CC  libavutil/tree.o
  11. CC  libavutil/utils.o
  12. AR  libavutil/libavutil.a
  13. CC  ffprobe.o
  14. ffprobe.c: In function ‘probe_file’:
  15. ffprobe.c:1163: warning: ‘av_close_input_file’ is deprecated (declared at libavformat/avformat.h:1652)
  16. CC  cmdutils.o
  17. LD  ffprobe_g
  18. CP  ffprobe
  19. STRIP   ffprobe
  20. Yarin-YangmatoiMac:ffmpeg-0.9.2 yarin$

上面的代码本人亲测,能编译通过,如果不能编译成功的请仔细检查每一步是否操作正确,同时在文末我提供了一个我编译的真机版本的控制台输出信息,大家可以核对。

另外,很多朋友都在使用iFrameExtractor项目(git clone git://github.com/lajos/iFrameExtractor.git)作为测试,如果你选择的ffmpeg版本在0.8.5及其以上,那么需要将VideoFrameExtractor.m中72行的codec_type值改为AVMEDIA_TYPE_VIDEO,如下所示:

  1. // Find the first video stream
  2. videoStream=-1;
  3. for(inti=0; i<pFormatCtx->nb_streams; i++)
  4. if(pFormatCtx->streams[i]->codec->codec_type==AVMEDIA_TYPE_VIDEO)
  5. {
  6. videoStream=i;
  7. break;
  8. }

当然了,你也可以按照iFrameExtractor项目项目中的build_armv6\build_armv7\build_i386\build_universal制作成一个编译脚本,方便后期的编译,如有需要,我后期有时间了,将整理上传。

最后,本次的项目主要是想用ffmpeg进行编解码,使用opengl es进行图像视频渲染,openal进行音频播放,即这三个开源工程的整合,如果大家有很么好的建议,也欢迎交流 @杨丰盛。

附件:http://down.51cto.com/data/2360567

关于ios中编译ffmpeg0.9.2库相关推荐

  1. (原)ubuntu16中编译boost1.61.0库

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5797940.html 参考网址: http://www.boost.org/doc/libs/1_61 ...

  2. iOS中如何添加自定义的字体库

    今天在开发过程中,UI设计直接给我了一个字体库文件,让我在label的显示中直接使用自己库的文件,突然之间感觉懵逼状态,这个怎么弄,其实很简单,一句代码就可以搞定这个字体库的. 工程配置步骤: 1.在 ...

  3. iOS中SQLite持久化存储第三方库FMDB

    @interface HMShopTool : NSObject + (NSArray *)shops; + (void)addShop:(HMShop *)shop; @end @implement ...

  4. iOS中js与objective-c的交互(转)

    因为在iOS中没有WebKit.Framework这个库的,所以也就没有 windowScriptObject对象方法了.要是有这个的方法的话 就方便多了,(ps:MacOS中有貌似) 现在我们利用其 ...

  5. 从源码编译安装 TensorFlow C++ 库和 DeepMD-kit

    DeepMD 简介 DeePMD-kit 是一个用 Python/C++ 编写的软件包,旨在最大限度地减少构建基于深度学习的原子间势能和力场模型以及执行分子动力学 (MD) 所需的工作.这为解决分子模 ...

  6. ios中静态库的创建和使用、制作通用静态库(Cocoa Touch Static Library)

    创建静态库可能出于以下几个理由: 1.你想将工具类代码或者第三方插件快捷的分享给其他人而无需拷贝大量文件. 2.你想让一些通用代码处于自己的掌控之下,以便于修复和升级. 3.你想将库共享给其他人,但不 ...

  7. [项目总结]在ios中使用soundtouch库实现变声

    这篇文章是项目总结了. 做了段时间的项目,过程中也遇到了很多麻烦,但是好在终于都解决了,这里是这里是项目之后凭着记忆总结出来,大家有遇到同样的问题,希望能参考了,但是我记忆可能不太好了,要是实践中有什 ...

  8. linux编译poco静态库,iOS——为Xcode编译POCO C++静态库

    一.POCO C++ library简介 POCO C++ library是一个C++编写的跨平台库,主要实现网络连接.数据库管理以及服务器,适用于跨平台.嵌入式. 二.为Xcode编译POCO C+ ...

  9. FFmpeg在iOS开发中编译并使用

    FFmpeg简介 FFmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计算机程序.读作:爱服爱服爱母派格.全称:Fast Forward Mpeg.直译:快速转换图像.FFmpe ...

最新文章

  1. Linux下PDF操作与转换
  2. 计算机机房坏境设施演练,计算机机房环境设施应急演练方案
  3. 概率论之pandas
  4. java中什么是task_20171018java总结——Spring任务调度task:scheduled-tasks
  5. 程序员被HR女友甩:不加班,没上进,没前途
  6. java catch自定义异常_java异常类-java自定义异常-嗨客网
  7. 连接mysql的各种方式
  8. qt .pro文件配置
  9. APP开发用什么框架最好?这5大框架,开发者必备神器
  10. Facebook登陆服务器校验,权限请求以及数据获取
  11. 一定能用到的简单但实用的五种按钮样式(HTML+CSS步骤详解,含详细注释)
  12. hadoop 报错 java.io.IOException: There appears to be a gap in the edit log. We expected txid 1, but g
  13. mysql辅助索引非叶子节点_Mysql的聚集索引与辅助索引
  14. 怎么获得红米手机5 Plus的Root超级权限
  15. 聊一聊count的性能
  16. RatingBar基本使用
  17. java cos和native cos的区别
  18. 3dsMax记录---制作一套桌椅
  19. 自学考试英语二的考试要求
  20. 百度google收录的差异

热门文章

  1. Ubuntu 创建文件快捷方式 启动器
  2. 三种字符编码:ASCII、Unicode和UTF-8
  3. Android实现ListView异步加载图片
  4. MAC YII 安装步骤
  5. linux计时函数的使用
  6. AngularJS之Filter(二)
  7. 【转】如何在github上fork一个项目来贡献代码以及同步原作者的修改 -- 不错
  8. oc 自定义导航栏背景
  9. lib和dll文件的区别和联系
  10. overflow:hidden;zoom:1 理解转__