• ffmpeg for ios 交叉编译 (支持i686 armv7 armv7s) 包含lame支持


    由于项目还需要mp3 音频编码,  所以先需要下载lame源码搭建交叉环境, 在lame目录下录入如下编译脚本  
    build.sh
     1 #! /bin/sh
     2 
     3 
     4 SDK_VERSION="6.0"
     5 
     6 rm -rf build
     7 mkdir build
     8 
     9 function build_lame()
    10 {
    11     make distclean
    12 
    13     ./configure \
    14         CFLAGS="-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/${SDK}.platform/Developer/SDKs/${SDK}${SDK_VERSION}.sdk" \
    15         CC="/Applications/Xcode.app/Contents/Developer/Platforms/${SDK}.platform/Developer/usr/bin/gcc -arch ${PLATFORM}" \
    16         --prefix=/Users/khan/Downloads/lame-3.99.5 \
    17         --host="arm-apple-darwin9" \
    18         --disable-shared \
    19         --enable-static \
    20         --disable-decoder \
    21         --disable-frontend
    22 
    23     make
    24     cp "libmp3lame/.libs/libmp3lame.a" "build/libmp3lame-${PLATFORM}.a"
    25 }
    26 
    27 PLATFORM="i686"
    28 SDK="iPhoneSimulator"
    29 build_lame
    30 
    31 #armv6和armv7 比较难共存
    32 #PLATFORM="armv6"
    33 #SDK="iPhoneOS"
    34 #build_lame
    35 
    36 PLATFORM="armv7"
    37 SDK="iPhoneOS"
    38 build_lame
    39 
    40 PLATFORM="armv7s"
    41 SDK="iPhoneOS"
    42 build_lame
    43 
    44 lipo -create build/* -output build/libmp3lame.a


    首先去https://github.com/yuvi/gas-preprocessor/
    下载gas-preprocessor.pl, 然后 复制到 /usr/sbin/目录下(当然, 你可以放在任何目录下, 只要保证--as='/${path}/gas-preprocessor.pl'路径正确)

    http://ffmpeg.org/download.html 下载ffmpeg源码, git或者直接下载

    终端执行以下指令
    #armv7s
    ./configure --disable-doc --disable-ffmpeg --disable-ffplay --disable-ffserver --enable-pic --enable-cross-compile --enable-decoder=h264 --enable-libmp3lame \
                --arch=arm --disable-asm \
                --target-os=darwin --cc=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc \
                --as='gas-preprocessor.pl /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc' \
                --sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk \
                --cpu=cortex-a8 \
                --extra-cflags='-arch armv7s -I/Users/khan/Downloads/lame-3.99.5/include ' \
                --extra-ldflags='-arch armv7s -L/Users/khan/Downloads/lame-3.99.5/build -lmp3lame  -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk' \
                --prefix=/Users/khan/Downloads/ffmpeg/arm7s.lib
    make
    make install

    make clean
    #armv7
    ./configure --disable-doc --disable-ffmpeg --disable-ffplay --disable-ffserver --enable-pic --enable-cross-compile --enable-decoder=h264 --enable-libmp3lame \
                --disable-asm  --arch=arm \
                --target-os=darwin --cc=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc \
                --as='gas-preprocessor.pl /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc' \
                --sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk \
                --cpu=cortex-a8 \
                --extra-cflags='-arch armv7 -I/Users/khan/Downloads/lame-3.99.5/include ' \
                --extra-ldflags='-arch armv7 -L/Users/khan/Downloads/lame-3.99.5/build -lmp3lame  -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk' \
                --prefix=/Users/khan/Downloads/ffmpeg/arm7.lib
    make
    make install

    make clean
    #i686
    ./configure --disable-doc --disable-ffmpeg --disable-ffplay --disable-ffserver --enable-pic --enable-cross-compile --enable-decoder=h264 --enable-libmp3lame \
                --disable-asm --arch=i686 --cpu=i686 --disable-armv5te \
                --target-os=darwin --cc=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc \
                --as='gas-preprocessor.pl /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc' \
                --sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.0.sdk \
                --extra-ldflags=-L/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.0.sdk/usr/lib/system \
                --extra-cflags='-arch i686 -I/Users/khan/Downloads/lame-3.99.5/include ' \
                --extra-ldflags='-arch i686 -L/Users/khan/Downloads/lame-3.99.5/build -lmp3lame ' \
                --prefix=/Users/khan/Downloads/ffmpeg/i686.lib

    make
    make install
    make clean

    --prefix=/Users/khan/Downloads/ffmpeg/i686.lib/里为编译后的目标文件
    然后将各个目录下的lib lipo一下 就可以同时在模拟器和各种该指令集的真机上运行了

    lipo -create i686.lib/lib/libavcodec.a arm7.lib/lib/libavcodec.a arm7s.lib/lib/libavcodec.a       -output build/libavcodec.a
    lipo -create i686.lib/lib/libavdevice.a arm7.lib/lib/libavdevice.a arm7s.lib/lib/libavdevice.a    -output build/libavdevice.a
    lipo -create i686.lib/lib/libavfilter.a arm7.lib/lib/libavfilter.a arm7s.lib/lib/libavfilter.a           -output build/libavfilter.a
    lipo -create i686.lib/lib/libavformat.a arm7.lib/lib/libavformat.a arm7s.lib/lib/libavformat.a  -output build/libavformat.a
    lipo -create i686.lib/lib/libavutil.a arm7.lib/lib/libavutil.a arm7s.lib/lib/libavutil.a                 -output build/libavutil.a
    lipo -create i686.lib/lib/libswresample.a arm7.lib/lib/libswresample.a arm7s.lib/lib/libswresample.a   -output build/libswresample.a
    lipo -create i686.lib/lib/libswscale.a arm7.lib/lib/libswscale.a arm7s.lib/lib/libswscale.a         -output build/libswscale.a
  • 相关阅读:
    ASP.NET中常用的26个优化性能方法(转)
    代码整洁
    【在开发中常用的UI控件】
    【加法计算器--结果label不显示加值】
    【点击textfield的时候不出现键盘】
    【XCODE上的项目运行到模拟器上是一片空白】
    【xcode commit失败 please tell me who you are】
    【storyboard 上没有箭头的解决办法】
    【ios模拟器上没 home键,怎么返回的?】
    【这是一个JAVA开发者的博客~】
  • 原文地址:https://www.cnblogs.com/weinyzhou/p/4983402.html
Copyright © 2020-2023  润新知