博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ios使用ffmpeg错误收集
阅读量:4978 次
发布时间:2019-06-12

本文共 9609 字,大约阅读时间需要 32 分钟。

  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 )" 
      \
                      
      || 
      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 armv7clang: 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 armv7clang: 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 armv7clang: error: linker command failed with exit code 1 (use -v to see invocation)

      导入  libiconv.2.4.0.dylib  编译通过

转载于:https://www.cnblogs.com/kelejiabing/p/4398430.html

你可能感兴趣的文章