zoukankan      html  css  js  c++  java
  • ios使用ffmpeg错误收集

    1. 编译ffmpeg.
      1. 下载源码后可以自己手动编译 ,反正是通过各种命令 配置configure 
      2. 通过一个很牛逼的脚本:git@github.com:kewlbear/FFmpeg-iOS-build-script.git     下载之后,检查ffmpeg的版本号,替换成最新的 然后运行脚本就行了
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        23
        24
        25
        26
        27
        28
        29
        30
        31
        32
        33
        34
        35
        36
        37
        38
        39
        40
        41
        42
        43
        44
        45
        46
        47
        48
        49
        50
        51
        52
        53
        54
        55
        56
        57
        58
        59
        60
        61
        62
        63
        64
        65
        66
        67
        68
        69
        70
        71
        72
        73
        74
        75
        76
        77
        78
        79
        80
        81
        82
        83
        84
        85
        86
        87
        88
        89
        90
        91
        92
        93
        94
        95
        96
        97
        98
        99
        100
        101
        102
        103
        104
        105
        106
        107
        108
        109
        110
        111
        112
        113
        114
        115
        116
        117
        118
        119
        120
        121
        122
        123
        124
        125
        126
        127
        128
        129
        130
        131
        132
        133
        134
        135
        136
        137
        138
        139
        140
        141
        142
        143
        144
        145
        146
        147
        148
        149
        150
        151
        152
        153
        154
        155
        #!/bin/sh
         
        # directories
        SOURCE="ffmpeg-2.6.1"
        FAT="FFmpeg-iOS"
         
        SCRATCH="scratch"
        # must be an absolute path
        THIN=`pwd`/"thin"
         
        # absolute path to x264 library
        #X264=`pwd`/fat-x264
         
        #FDK_AAC=`pwd`/fdk-aac/fdk-aac-ios
         
        CONFIGURE_FLAGS="--enable-cross-compile --disable-debug --disable-programs
                         --disable-doc --enable-pic"
         
        if "$X264" ]
        then
            CONFIGURE_FLAGS="$CONFIGURE_FLAGS --enable-gpl --enable-libx264"
        fi
         
        if "$FDK_AAC" ]
        then
            CONFIGURE_FLAGS="$CONFIGURE_FLAGS --enable-libfdk-aac"
        fi
         
        # avresample
        #CONFIGURE_FLAGS="$CONFIGURE_FLAGS --enable-avresample"
         
        ARCHS="arm64 armv7s armv7 x86_64 i386"
         
        COMPILE="y"
        LIPO="y"
         
        DEPLOYMENT_TARGET="6.0"
         
        if "$*" ]
        then
            if "$*" "lipo" ]
            then
                # skip compile
                COMPILE=
            else
                ARCHS="$*"
                if [ $# -eq 1 ]
                then
                    # skip lipo
                    LIPO=
                fi
            fi
        fi
         
        if "$COMPILE" ]
        then
            if [ ! `which yasm` ]
            then
                echo 'Yasm not found'
                if [ ! `which brew` ]
                then
                    echo 'Homebrew not found. Trying to install...'
                    ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)" 
                        || exit 1
                fi
                echo 'Trying to install Yasm...'
                brew install yasm || exit 1
            fi
            if [ ! `which gas-preprocessor.pl` ]
            then
                echo 'gas-preprocessor.pl not found. Trying to install...'
                (curl -L https://github.com/libav/gas-preprocessor/raw/master/gas-preprocessor.pl
                    -o /usr/local/bin/gas-preprocessor.pl
                    && chmod +x /usr/local/bin/gas-preprocessor.pl)
                    || exit 1
            fi
         
            if [ ! -r $SOURCE ]
            then
                echo 'FFmpeg source not found. Trying to download...'
                curl http://www.ffmpeg.org/releases/$SOURCE.tar.bz2 | tar xj
                    || exit 1
            fi
         
            CWD=`pwd`
            for ARCH in $ARCHS
            do
                echo "building $ARCH..."
                mkdir -p "$SCRATCH/$ARCH"
                cd "$SCRATCH/$ARCH"
         
                CFLAGS="-arch $ARCH"
                if "$ARCH" "i386" -o "$ARCH" "x86_64" ]
                then
                    PLATFORM="iPhoneSimulator"
                    CFLAGS="$CFLAGS -mios-simulator-version-min=$DEPLOYMENT_TARGET"
                else
                    PLATFORM="iPhoneOS"
                    CFLAGS="$CFLAGS -mios-version-min=$DEPLOYMENT_TARGET"
                    if "$ARCH" "arm64" ]
                    then
                        EXPORT="GASPP_FIX_XCODE5=1"
                    fi
                fi
         
                XCRUN_SDK=`echo $PLATFORM | tr '[:upper:]' '[:lower:]'`
                CC="xcrun -sdk $XCRUN_SDK clang"
                CXXFLAGS="$CFLAGS"
                LDFLAGS="$CFLAGS"
                if "$X264" ]
                then
                    CFLAGS="$CFLAGS -I$X264/include"
                    LDFLAGS="$LDFLAGS -L$X264/lib"
                fi
                if "$FDK_AAC" ]
                then
                    CFLAGS="$CFLAGS -I$FDK_AAC/include"
                    LDFLAGS="$LDFLAGS -L$FDK_AAC/lib"
                fi
         
                TMPDIR=${TMPDIR/%/} $CWD/$SOURCE/configure
                    --target-os=darwin
                    --arch=$ARCH
                    --cc="$CC" 
                    $CONFIGURE_FLAGS
                    --extra-cflags="$CFLAGS" 
                    --extra-cxxflags="$CXXFLAGS" 
                    --extra-ldflags="$LDFLAGS" 
                    --prefix="$THIN/$ARCH" 
                || exit 1
         
                make -j3 install $EXPORT || exit 1
                cd $CWD
            done
        fi
         
        if "$LIPO" ]
        then
            echo "building fat binaries..."
            mkdir -p $FAT/lib
            set - $ARCHS
            CWD=`pwd`
            cd $THIN/$1/lib
            for LIB in *.a
            do
                cd $CWD
                echo lipo -create `find $THIN -name $LIB` -output $FAT/lib/$LIB 1>&2
                lipo -create `find $THIN -name $LIB` -output $FAT/lib/$LIB || exit 1
            done
         
            cd $CWD
            cp -rf $THIN/$1/include $FAT
        fi
         
        echo Done
    2. 导入项目,有静态包经验的就就不用看了,这个对于我这个半路出家的和尚还是处理了老半天才解决.
      .a文件直接导入 .h文件要导入文件夹结构   配置header search 环境变量  使用的时候导入文件 结构:#import "文件夹/文件.h"
    3. 编译.
      1. 首次编译.
        复制代码
        Undefined symbols for architecture armv7:
          "_deflateInit2_", referenced from:
              _encode_frame in libavcodec.a(pngenc.o)
          "_crc32", referenced from:
              _encode_frame in libavcodec.a(pngenc.o)
          "_deflateReset", referenced from:
              _encode_frame in libavcodec.a(lclenc.o)
              _encode_frame in libavcodec.a(zmbvenc.o)
          "_compress", referenced from:
              _encode_strip in libavcodec.a(tiffenc.o)
          "_deflateBound", referenced from:
              _flashsv_decode_frame in libavcodec.a(flashsv.o)
              _encode_frame in libavcodec.a(pngenc.o)
              _encode_frame in libavcodec.a(lclenc.o)
          "_inflateSync", referenced from:
              _flashsv_decode_frame in libavcodec.a(flashsv.o)
          "_inflateReset", referenced from:
              _flashsv_decode_frame in libavcodec.a(flashsv.o)
              _zlib_decomp in libavcodec.a(lcldec.o)
              _decode_frame in libavcodec.a(tscc.o)
              _zerocodec_decode_frame in libavcodec.a(zerocodec.o)
              _decode_frame in libavcodec.a(zmbv.o)
          "_iconv_open", referenced from:
              _avcodec_open2 in libavcodec.a(utils.o)
              _avcodec_decode_subtitle2 in libavcodec.a(utils.o)
          "_BZ2_bzDecompress", referenced from:
              _matroska_decode_buffer in libavformat.a(matroskadec.o)
          "_inflate", referenced from:
              _http_read_stream in libavformat.a(http.o)
              _matroska_decode_buffer in libavformat.a(matroskadec.o)
              _rtmp_open in libavformat.a(rtmpproto.o)
              _zlib_refill in libavformat.a(swfdec.o)
              _decode_frame_common in libavcodec.a(pngdec.o)
              _decode_text_chunk in libavcodec.a(pngdec.o)
              _flashsv_decode_frame in libavcodec.a(flashsv.o)
              ...
          "_inflateInit_", referenced from:
              _matroska_decode_buffer in libavformat.a(matroskadec.o)
              _rtmp_open in libavformat.a(rtmpproto.o)
              _swf_read_header in libavformat.a(swfdec.o)
              _decode_frame_apng in libavcodec.a(pngdec.o)
              _decode_frame_png in libavcodec.a(pngdec.o)
              _decode_text_chunk in libavcodec.a(pngdec.o)
              _flashsv_decode_init in libavcodec.a(flashsv.o)
              ...
          "_iconv", referenced from:
              _avcodec_decode_subtitle2 in libavcodec.a(utils.o)
          "_BZ2_bzDecompressEnd", referenced from:
              _matroska_decode_buffer in libavformat.a(matroskadec.o)
          "_inflateInit2_", referenced from:
              _http_read_header in libavformat.a(http.o)
          "_deflateEnd", referenced from:
              _flashsv_decode_frame in libavcodec.a(flashsv.o)
              _flashsv2_encode_frame in libavcodec.a(flashsv2enc.o)
              _flashsv_encode_init in libavcodec.a(flashsvenc.o)
              _flashsv_encode_end in libavcodec.a(flashsvenc.o)
              _encode_frame in libavcodec.a(pngenc.o)
              _encode_end in libavcodec.a(lclenc.o)
              _encode_init in libavcodec.a(zmbvenc.o)
              ...
          "_BZ2_bzDecompressInit", referenced from:
              _matroska_decode_buffer in libavformat.a(matroskadec.o)
          "_deflateInit_", referenced from:
              _flashsv_decode_frame in libavcodec.a(flashsv.o)
              _flashsv2_encode_frame in libavcodec.a(flashsv2enc.o)
              _encode_init in libavcodec.a(lclenc.o)
              _encode_init in libavcodec.a(zmbvenc.o)
          "_zlibCompileFlags", referenced from:
              _http_read_header in libavformat.a(http.o)
          "_compress2", referenced from:
              _flashsv2_encode_frame in libavcodec.a(flashsv2enc.o)
              _flashsv_encode_frame in libavcodec.a(flashsvenc.o)
          "_deflate", referenced from:
              _flashsv_decode_frame in libavcodec.a(flashsv.o)
              _flashsv2_encode_frame in libavcodec.a(flashsv2enc.o)
              _encode_frame in libavcodec.a(pngenc.o)
              _encode_frame in libavcodec.a(lclenc.o)
              _encode_frame in libavcodec.a(zmbvenc.o)
          "_inflateEnd", referenced from:
              _http_close in libavformat.a(http.o)
              _http_read_header in libavformat.a(http.o)
              _matroska_decode_buffer in libavformat.a(matroskadec.o)
              _rtmp_open in libavformat.a(rtmpproto.o)
              _swf_read_close in libavformat.a(swfdec.o)
              _decode_frame_apng in libavcodec.a(pngdec.o)
              _decode_frame_png in libavcodec.a(pngdec.o)
              ...
          "_uncompress", referenced from:
              _id3v2_read_internal in libavformat.a(id3v2.o)
              _mov_read_cmov in libavformat.a(mov.o)
              _swf_read_packet in libavformat.a(swfdec.o)
              _decode_frame in libavcodec.a(cscd.o)
              _decode_frame in libavcodec.a(dxa.o)
              _decode_block in libavcodec.a(exr.o)
              _g2m_decode_frame in libavcodec.a(g2meet.o)
              ...
          "_iconv_close", referenced from:
              _avcodec_open2 in libavcodec.a(utils.o)
              _avcodec_decode_subtitle2 in libavcodec.a(utils.o)
        ld: symbol(s) not found for architecture armv7
        clang: error: linker command failed with exit code 1 (use -v to see invocation)
        复制代码

        导入 libz.1.2.5.dylib ,再次编译

        复制代码
        Undefined symbols for architecture armv7:
          "_BZ2_bzDecompressInit", referenced from:
              _matroska_decode_buffer in libavformat.a(matroskadec.o)
          "_iconv", referenced from:
              _avcodec_decode_subtitle2 in libavcodec.a(utils.o)
          "_BZ2_bzDecompress", referenced from:
              _matroska_decode_buffer in libavformat.a(matroskadec.o)
          "_BZ2_bzDecompressEnd", referenced from:
              _matroska_decode_buffer in libavformat.a(matroskadec.o)
          "_iconv_open", referenced from:
              _avcodec_open2 in libavcodec.a(utils.o)
              _avcodec_decode_subtitle2 in libavcodec.a(utils.o)
          "_iconv_close", referenced from:
              _avcodec_open2 in libavcodec.a(utils.o)
              _avcodec_decode_subtitle2 in libavcodec.a(utils.o)
        ld: symbol(s) not found for architecture armv7
        clang: error: linker command failed with exit code 1 (use -v to see invocation)
        复制代码

        导入 libbz2.1.0.dylib ,再次编译

        复制代码
        Undefined symbols for architecture armv7:
          "_iconv", referenced from:
              _avcodec_decode_subtitle2 in libavcodec.a(utils.o)
          "_iconv_open", referenced from:
              _avcodec_open2 in libavcodec.a(utils.o)
              _avcodec_decode_subtitle2 in libavcodec.a(utils.o)
          "_iconv_close", referenced from:
              _avcodec_open2 in libavcodec.a(utils.o)
              _avcodec_decode_subtitle2 in libavcodec.a(utils.o)
        ld: symbol(s) not found for architecture armv7
        clang: error: linker command failed with exit code 1 (use -v to see invocation)
        复制代码

        导入  libiconv.2.4.0.dylib  编译通过

  • 相关阅读:
    Android获取实时连接热点的设备IP地址
    CentOS7打开关闭防火墙与端口
    Nginx的反向代理和负载均衡
    Linux系统(centos7)中Nginx安装、配置和开机自启
    navicat for oracle 创建表ID字段的自动递增
    Java初学者的学习路线建议
    分享一些JAVA常用的学习网站
    ThinkPHP框架
    PHP中的session
    PHP中的Cookie
  • 原文地址:https://www.cnblogs.com/kelejiabing/p/4398430.html
Copyright © 2011-2022 走看看