Building FFmpeg for iPhone

备注:FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件)。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多codec都是从头开发的。

 

 

 

 

 

 

事先申明,此文涉及所有代码、文档均为网上搜集整理,本人只做整合修改。目前我写的代码就归公司所有吧,不贴出来了。所有遇到问题,均从google上获得答案。可能需要翻*墙。

http://www.iphonedevsdk.com/forum/iphone-sdk-development/51697-rtsp-streaming-iphone-works-great.html该网页上下载iXen上传的rtspclient rtspsample代码。这两个代码都不能运行。稍作修改。把rtspclient中的RTSPClientSession.h RTSPClientSession.m添加到rtspsample中去。

参照http://www.cocoachina.com/bbs/read.php?tid-8466-page-1.html这里面制作静态库的方法,把live555的静态库加入进去。编译的时候会有一些小问题,稍加修改即可。这个时候,一个完整的rtsp客户端就ok了。

参考http://www.codza.com/extracting-frames-from-movies-on-iphone这个网页上的iFrameExtractor软件,在这个软件的压缩包中,有ffmpeg的文件夹。注意看ffmpeg中的readme,可以编译出模拟器版本、真机版本的静态库。添加一下就好了。连接ffmpeg库,会有很多问题,比如记得加入 library search path,加入libz.dylib。可以看这里http://www.logresource.com/Question/2872145/showall/http://stackoverflow.com/questions/2380397/error-while-compiling-the-xcode-project-iphone这里。

在模拟器上,贴图方式和iFrameExtractor一样,速度很好。但是在真机上,进过测试,很卡。需要用别的方法。

目前能想到的是使用sdlhttp://immersedcode.org/2011/4/25/sdl-on-ios/参考这个帖子。目前xcodesdk都达不到要求。没有进一步的进展。

iphone+ios编译ffmpeg+for+ios(转载加修改)

分类: iphone iphone+视频开发 2011-09-14 10:13 277人阅读 评论(4) 收藏 举报

1.mov格式解析

http://blog.csdn.net/sunshine1314/article/details/2547275

2。mov解析的开源工程:bento4和ffmpeg,其中bento4直接有xcode的工程文件,和比较详细的test代码

3。ffmpeg如何解析帧图像,可以看看extracting-frames-from-movies-on-iphone

http://www.codza.com/extracting-frames-from-movies-on-iphone

4。ffmpeg iphone编译

http://www.cnblogs.com/wwwkhd/archive/2011/08/09/2131780.html

5.图解autoscan、aclocal、autoheader、automake、autoconf、configure、make

http://jaguar13.iteye.com/blog/614427

6第十五章 make的常见错误信息

http://www.linuxsir.org/main/doc/gnumake/GNUmake_v3.80-zh_CN_html/make-15.html

 

 

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(我的是4.0版本)打开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通过.

 

7. 修改了ffmpeg版本到最新版(0.7),编译的时候需要把common.mak复制到新版本目录.

编译的时候遇到错误:

ERROR: .endm without .macro at /usr/local/bin/gas-preprocessor.pl line 83, <ASMFILE> line 55

用老版本的libavcodec/arm/asm.S和libavcoec/arm/dsputil_arm.S覆盖新版本(实际上我怀疑只覆盖asm.S即可),重新编译即可.

 
经过验证:需要同时覆盖2个文件。这一步我没按照原文的弄,我是按照错误提示,修改了ffmpeg中的代码(改了上面提到的2个文件,还有其他一些错误),才编译通过的。改起来应该不难。

转载于:https://www.cnblogs.com/codeApp/archive/2012/11/15/2771900.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值