注册 登录
主题 : 模拟器与真机下ffmpeg的编译方法(总结版)
级别: 新手上路
UID: 96491
精华: 0
发帖: 29
可可豆: 254 CB
威望: 254 点
在线时间: 86(时)
注册时间: 2011-10-07
最后登录: 2013-07-21
0 楼:  发表于: 2011-10-20 10:40    发自: Web Page

模拟器与真机下ffmpeg的编译方法(总结版)   

编译ffmepg模拟器版本:
1. 到https://github.com/gabriel/ffmpeg-iphone-build下载ffmpeg-iphone-build
2.先将gas-preprocessor.pl拷贝到/usr/sbin/目录中。
3.到ffmpeg官网上下载ffmpeg源码
4.在终端下定位到ffmpeg的目录运行
./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/iPhoneSimulator4.3.sdk/usr/lib/system --sysroot=/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk --target-os=darwin --arch=i386 --cpu=i386 --extra-cflags='-arch i386' --extra-ldflags='-arch i386'
5.输入make命令
6.将libavcodec.a,libavdevice.a,libavformat.a,libavutil.a,libswscale.a到对应的目录下拷贝出来
7.在项目中就可以使用了。可以参考开源示例iFrameExtractor (git clone git://github.com/lajos/iFrameExtractor.git)需要将该项目的ffmpeg文件夹库替换为你编译的ffmpeg源码文件夹,在ffmpeg目录下新建lib目录,将刚刚拷贝出来的静态库拷贝进去。打开项目,添加libbz2.1.0.dylib系统库文件。点击编译运行就可以使用了。
8.注意如果使用的是ffmpeg0.8.5的库的话iFrameExtractor中的codec_type需要修改为AVMEDIA_TYPE_VIDEO。(下同)








编译arm7版本,网上搜到的版本,完全按照以下步骤做就行了。可以编译出arm7的库。
1. 下载:
git clone git://github.com/lajos/iFrameExtractor.git
2. 编辑:
build_armv6和build_armv7,修改./configure后面的参数,主要是SDK版本.我的是4.3,修改为:
./configure --disable-doc --disable-ffmpeg --disable-ffplay --disable-ffserver --enable-cross-compile --arch=arm --target-os=darwin --cc=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc --as='gas-preprocessor/gas-preprocessor.pl /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc' --sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk --cpu=arm1176jzf-s --extra-cflags='-arch armv6' --extra-ldflags='-arch armv6'

3. 编译:
出错,提示:
/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc is unable to create an executable file.
C compiler test failed.
查看config.err文件,最后提示:
ld: file not found: /usr/lib/system/libcache.dylib for architecture armv7
collect2: ld returned 1 exit status
4. 重新修改configure参数为:
./configure --disable-doc --disable-ffmpeg --disable-ffplay --disable-ffserver --enable-cross-compile --arch=arm --target-os=darwin --cc=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc --as='gas-preprocessor/gas-preprocessor.pl /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc' --sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk --cpu=cortex-a8 --extra-cflags='-arch armv7' --extra-ldflags='-arch armv7 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk' --enable-pic
5. 编译:
build_armv7
最后生成静态库,在lib目录和armv7目录.
6.用xcode打开iFrameExtractor.xcodeproj,现在编译会出错,需要修改几个地方:
左边选中工程,中间选中target,右面选中Build settings,在Architectures选项卡里面选择Architetures为Optimized(armv7),Base SDK为Latest iOS(iOS 4.3) Valid Architectures填写armv7.
编译目标选择iOS Device,当然,如果有连接电脑的设备,可以选择设备.
编译,提示:


Undefined symbols for architecture armv7:
  "_BZ2_bzDecompressInit", referenced from:
      _matroska_decode_buffer in libavformat.a(matroskadec.o)
  "_BZ2_bzDecompressEnd", referenced from:
      _matroska_decode_buffer in libavformat.a(matroskadec.o)
  "_BZ2_bzDecompress", referenced from:
      _matroska_decode_buffer in libavformat.a(matroskadec.o)

添加库libbz2.1.0.dylib,再次编译,OK通过

在ios5.0中编译ffmpeg。 到官网下载ffmpeg,然后在终端进入ffmpeg
./configure --disable-doc --disable-ffmpeg --disable-ffplay --disable-ffserver --enable-cross-compile --arch=arm --target-os=darwin --cc=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc --as='gas-preprocessor/gas-preprocessor.pl /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc' --sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk --cpu=cortex-a8 --extra-cflags='-arch armv7' --extra-ldflags='-arch armv7 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk' --enable-pic --enable-decoder=rawvideo --disable-asm

make进行编译。

然后将各个.a文件拷贝出来。


[ 此帖被sun_t89在2012-03-08 21:06重新编辑 ]

关键词: ffmpeg
级别: 侠客
UID: 5743
精华: 0
发帖: 20
可可豆: 1267 CB
威望: 1267 点
在线时间: 599(时)
注册时间: 2009-05-16
最后登录: 2015-02-06
1 楼:  发表于: 2011-10-20 10:58    发自: Web Page
8错,学习了
级别: 侠客
UID: 54504
精华: 0
发帖: 71
可可豆: 683 CB
威望: 683 点
在线时间: 284(时)
注册时间: 2011-03-03
最后登录: 2014-11-16
2 楼:  发表于: 2011-10-20 11:17    发自: Web Page
mark.......
级别: 精灵王

状态: 连续签到 - [2天]
UID: 35043
精华: 0
发帖: 1566
可可豆: 10290 CB
威望: 10290 点
在线时间: 3548(时)
注册时间: 2010-10-23
最后登录: 2017-06-15
3 楼:  发表于: 2011-10-20 11:40    发自: Web Page
强帖,必火!
级别: 侠客
UID: 24923
精华: 0
发帖: 62
可可豆: 440 CB
威望: 440 点
在线时间: 90(时)
注册时间: 2010-07-16
最后登录: 2017-03-29
4 楼:  发表于: 2011-10-20 13:19    发自: Web Page
mark 学习了。
自强不息
级别: 新手上路
UID: 24731
精华: 0
发帖: 36
可可豆: 373 CB
威望: 333 点
在线时间: 426(时)
注册时间: 2010-07-14
最后登录: 2017-11-08
5 楼:  发表于: 2011-10-20 14:04    发自: Web Page
强大  支持 顶!!!!!!!!
级别: 新手上路
UID: 46386
精华: 0
发帖: 3
可可豆: 30 CB
威望: 30 点
在线时间: 218(时)
注册时间: 2011-01-11
最后登录: 2015-01-20
6 楼:  发表于: 2011-10-20 14:24    发自: Web Page
声音如何才能出来?
级别: 新手上路
UID: 96491
精华: 0
发帖: 29
可可豆: 254 CB
威望: 254 点
在线时间: 86(时)
注册时间: 2011-10-07
最后登录: 2013-07-21
7 楼:  发表于: 2011-10-20 20:53    发自: Web Page
回 6楼(luzizi) 的帖子
至于怎么用的话自己慢慢摸索吧    我也在探索中……
级别: 侠客
UID: 54308
精华: 0
发帖: 112
可可豆: 1111 CB
威望: 1111 点
在线时间: 106(时)
注册时间: 2011-03-02
最后登录: 2017-01-16
8 楼:  发表于: 2011-10-20 22:17    发自: Web Page
谢谢,收藏了
级别: 骑士
UID: 7295
精华: 0
发帖: 63
可可豆: 2993 CB
威望: 2993 点
在线时间: 599(时)
注册时间: 2009-07-25
最后登录: 2017-11-16
9 楼:  发表于: 2011-10-20 23:11    发自: Web Page
回 楼主(sun_t89) 的帖子
mark~~~~~~~~~

CocoaChina社区转载内容已尽可能注明出处,如未能核实来源或转发内容图片有权利瑕疵的,请及时联系社区进行修改或删除【联系方式QQ : 3442093904 邮箱:support@cocoachina.com】文章内容为作者独立观点,不代表CocoaChina社区立场。版权归原作者所有,如申请授权请联系作者,因文章侵权CocoaChina社区不承担任何法律及连带责任。

描述
快速回复

关注本帖(如果有新回复会站内信通知您)

发帖、回帖都会得到可观的积分奖励。查看论坛积分规则

按"Ctrl+Enter"直接提交
    顶部