`

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

阅读更多
模拟器与真机下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文件拷贝出来。

分享到:
评论

相关推荐

    IJKMediaFramework的模拟器以及真机的合并包

    **合并模拟器与真机版** 在iOS开发中,通常需要分别编译针对模拟器和真机的二进制文件,因为它们的架构不同。模拟器使用i386或x86_64架构,而真机则有armv7、armv7s、arm64等多种架构。为了创建通用版的...

    ios8真机下编译ffmpeg库

    source ffmpeg org ffmpeg git回车就可以下载 然后把ffmpeg目录复制到 sh文件所在目录下即可">xcode6 0 1 ios8sdk 编译ffmpeg库 可以编译armv7 armv7s arm64 模拟器的找了好多资料没有编译通过 如果没有更新xcode和...

    ffmpeg 编译 armv7/armv7s/arm64/i386

    这个文件可能是编译后的FFmpeg库或者编译过程中产生的中间文件,用于验证编译结果是否正确,可以在真机上进行测试。 在iOS开发中,集成FFmpeg需要考虑App Store的审核政策,确保使用的编译选项和库符合苹果的规定...

    FFmpeg(Xcode4.6+IOS6.1编译)

    编译FFmpeg i386(模拟器)版本、armv7版本(iPhone 3GS以上)、armv7s(iPhone5)版本,最后把这三个版本合为一个公共lib库,模拟器和真机只需要一套库文件,使用的时候只需要用到2个文件夹,分别是 lib 和 include,...

    android成功编译ffmpeg0.6

    4. **库依赖**:FFmpeg编译时需要链接一些库,例如SDL、OpenSSL、libiconv等。确保这些库已安装并且配置脚本正确地指定了它们的位置。 5. **JNI接口**:为了在Java层与FFmpeg的C/C++代码交互,需要创建JNI接口。这...

    FFmpeg_2(Xcode4.6+IOS6.1编译)

    编译FFmpeg i386(模拟器)版本、armv7版本(iPhone 3GS以上)、armv7s(iPhone5)版本,最后把这三个版本合为一个公共lib库,模拟器和真机只需要一套库文件,使用的时候只需要用到2个文件夹,分别是 lib 和 include,...

    IJKMediaFramework 包含ffmpeg支持的所有音视频编码格式的编译版本,只支持真机,不支持模拟器

    IJKMediaFramework ijkplayer播放器 真机使用版本(arm64),不支持模拟器(x86_64); 可播放ffmpeg支持的所有格式的音视频,包括:mp2、mp3、mpegVideo、AC3、PCM、h265、mov、wav、avi、flv等等。

    真机和模拟器合并后的IJKMediaFramework

    9. **编译配置**:为了适配真机和模拟器,开发者通常需要进行不同架构的编译,通过`lipo`命令将不同架构的二进制文件合并为一个fat binary。 10. **API接口**:ijkPlayer提供了清晰的API接口,方便开发者集成到自己...

    iOS下打包的ffmpeg静态库.a,h264

    包含了armv7,armv7s,arm64,i386,x86_64五个.a的合并,当前情况下所有模拟器和真机都适用(真机测试为4s和6) 折腾了三天弄好的,希望可以帮到有需要解码h264的朋友。 PS:添加以后只需要libz.tbd,libbz2.tbd,libbz...

    FFmpeg-iOS-build-script-master.zip

    7. **测试与优化**:在真机或模拟器上测试你的应用,确保音视频功能正常。根据性能需求,可能还需要对FFmpeg进行进一步的优化,比如选择合适的编解码器、调整编译选项等。 总的来说,"FFmpeg-iOS-build-script-...

    android-project sdl ffmpeg play mpg video

    Android模拟器和真机测试都是必要的,可能还需要借助日志输出和调试工具进行问题定位。 总的来说,"android-project sdl ffmpeg play mpg video"是一个涉及到Android原生开发、多媒体处理、图形渲染等多个技术领域...

    ffmpeg静态库合并

    - 在真机设备上测试,因为模拟器可能不支持armv7和armv7s架构。 - 如果项目还需要支持其他架构(如arm64,i386,x86_64),需要重复上述步骤,合并对应的静态库。 完成这些步骤后,你将拥有一个整合了armv7和armv...

    FFMpeg iOS 64位 i386 x86_64 armv7 armv7s arm64

    标题和描述提到了“iOS ffmpeg 64位支持”,这意味着我们要讨论的是如何在iOS平台上,特别是在包括i386、x86_64(模拟器架构)以及armv7、armv7s和arm64(真机架构)在内的多种设备上,集成和运行FFmpeg库。...

    IOS_ffmpeg3.2.1(带X264库)

    这个压缩包提供的预编译库解决了这个问题,适用于模拟器和真机,这意味着开发者可以直接将这些库集成到自己的iOS项目中,而无需从源码编译,节省了开发时间和资源。 4. 集成步骤: - 将 "Libs" 文件夹中的静态库 ...

    FFmpeg集成及代码展示.zip

    另外,为了支持iOS,还需要安装iOS模拟器或真机设备的SDK。 2. **配置FFmpeg**:使用CMake创建一个配置文件,指定目标平台为iOS,选择需要编译的组件和编解码器。例如,`-DCMAKE_TOOLCHAIN_FILE`用于指定iOS的工具...

    ffmpeg+x264解码器支持x86_64、armv7、arm64、i386架构的静态库

    这种跨平台兼容性使得FFmpeg在各种操作系统和设备上都能运行,如iOS设备(iPhone真机和模拟器)、macOS以及利用Qt框架构建的应用程序。 对于iOS开发,FFmpeg 提供的静态库是特别有用的,因为它们可以与应用程序一起...

    ffmpeg解码库

    2. **编译设置**:在Xcode项目中,需要正确配置编译选项,确保库与项目的其他部分链接正确,并且只在模拟器环境下使用。 3. **许可问题**:FFmpeg遵循LGPL许可,这意味着在商业应用中使用时,需要遵守相应的开源...

    ios 哔哩哔哩播放器IJKMediaFramework.zip

    5. **模拟器和真机支持**:IJKMediaFramework经过编译优化,既能在iOS模拟器上运行,也可以在真实设备上正常工作。这大大简化了开发过程中的测试环节,开发者无需在不同环境中反复调试,提高了开发效率。 6. **编译...

Global site tag (gtag.js) - Google Analytics