Building FFmpeg for iPhone
2012-11-15 17:33
330 查看
备注: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一样,速度很好。但是在真机上,进过测试,很卡。需要用别的方法。
目前能想到的是使用sdl。http://immersedcode.org/2011/4/25/sdl-on-ios/参考这个帖子。目前xcode和sdk都达不到要求。没有进一步的进展。
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个文件,还有其他一些错误),才编译通过的。改起来应该不难。
事先申明,此文涉及所有代码、文档均为网上搜集整理,本人只做整合修改。目前我写的代码就归公司所有吧,不贴出来了。所有遇到问题,均从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一样,速度很好。但是在真机上,进过测试,很卡。需要用别的方法。
目前能想到的是使用sdl。http://immersedcode.org/2011/4/25/sdl-on-ios/参考这个帖子。目前xcode和sdk都达不到要求。没有进一步的进展。
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个文件,还有其他一些错误),才编译通过的。改起来应该不难。
相关文章推荐
- Building FFmpeg for iPhone
- Script of Building ffmpeg for iPhone 4.0 SDK
- Building FFmpeg for iPhone
- Building FFmpeg for iPhone
- [FFmpeg-devel] [HOWTO] Building FFmpeg for iPhone
- Building OpenCV for iPhone
- C++ Logging and building Boost for iPhone/iPad 3.2 and MacOSX
- 网络电话pjsip Getting Started: Building for Apple iPhone, iPad and iPod Touch
- [转]Iphone m3u8 segmenter from ffmpeg for video streaming
- building live555 library for iphoneos
- FFMPEG&nbsp;for&nbsp;Iphone
- Building c++ static library for iPhone
- Building OpenSSL for iOS (iPhone/iPad)
- FFmpeg building for iOS 8.3
- Professional iPhone and iPod touch Programming: Building Applications for Mobile Safari
- 网络电话pjsip Getting Started: Building for Apple iPhone, iPad and iPod Touch
- Xcode resource groups and folder references when building for iPhone
- 移植ffmpeg for iphone模拟器
- iphone+ios编译ffmpeg+for+ios(转载加修改)
- ffmpeg for iphone