ios使用ffmpeg错误收集
- 编译ffmpeg.
- 下载源码后可以自己手动编译 ,反正是通过各种命令 配置configure
- 通过一个很牛逼的脚本:git@github.com:kewlbear/FFmpeg-iOS-build-script.git 下载之后,检查ffmpeg的版本号,替换成最新的 然后运行脚本就行了
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155#!/bin/sh# directoriesSOURCE="ffmpeg-2.6.1"FAT="FFmpeg-iOS"SCRATCH="scratch"# must be an absolute pathTHIN=`pwd`/"thin"# absolute path to x264 library#X264=`pwd`/fat-x264#FDK_AAC=`pwd`/fdk-aac/fdk-aac-iosCONFIGURE_FLAGS="--enable-cross-compile --disable-debug --disable-programs \--disable-doc --enable-pic"if["$X264"]thenCONFIGURE_FLAGS="$CONFIGURE_FLAGS --enable-gpl --enable-libx264"fiif["$FDK_AAC"]thenCONFIGURE_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["$*"]thenif["$*"="lipo"]then# skip compileCOMPILE=elseARCHS="$*"if[ $# -eq 1 ]then# skip lipoLIPO=fififiif["$COMPILE"]thenif[ ! `which yasm` ]thenecho'Yasm not found'if[ ! `which brew` ]thenecho'Homebrew not found. Trying to install...'||exit1fiecho'Trying to install Yasm...'brew install yasm ||exit1fiif[ ! `which gas-preprocessor.pl` ]thenecho'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) \||exit1fiif[ ! -r $SOURCE ]thenecho'FFmpeg source not found. Trying to download...'curl http://www.ffmpeg.org/releases/$SOURCE.tar.bz2 | tar xj \||exit1fiCWD=`pwd`forARCH in $ARCHSdoecho"building $ARCH..."mkdir -p"$SCRATCH/$ARCH"cd"$SCRATCH/$ARCH"CFLAGS="-arch $ARCH"if["$ARCH"="i386"-o"$ARCH"="x86_64"]thenPLATFORM="iPhoneSimulator"CFLAGS="$CFLAGS -mios-simulator-version-min=$DEPLOYMENT_TARGET"elsePLATFORM="iPhoneOS"CFLAGS="$CFLAGS -mios-version-min=$DEPLOYMENT_TARGET"if["$ARCH"="arm64"]thenEXPORT="GASPP_FIX_XCODE5=1"fifiXCRUN_SDK=`echo $PLATFORM | tr'[:upper:]''[:lower:]'`CC="xcrun -sdk $XCRUN_SDK clang"CXXFLAGS="$CFLAGS"LDFLAGS="$CFLAGS"if["$X264"]thenCFLAGS="$CFLAGS -I$X264/include"LDFLAGS="$LDFLAGS -L$X264/lib"fiif["$FDK_AAC"]thenCFLAGS="$CFLAGS -I$FDK_AAC/include"LDFLAGS="$LDFLAGS -L$FDK_AAC/lib"fiTMPDIR=${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"\||exit1make -j3 install $EXPORT ||exit1cd $CWDdonefiif["$LIPO"]thenecho"building fat binaries..."mkdir -p $FAT/libset - $ARCHSCWD=`pwd`cd $THIN/$1/libforLIB in *.adocd $CWDecho lipo -create `find $THIN -name $LIB` -output $FAT/lib/$LIB 1>&2lipo -create `find $THIN -name $LIB` -output $FAT/lib/$LIB ||exit1donecd $CWDcp -rf $THIN/$1/include $FATfiecho Done
- 导入项目,有静态包经验的就就不用看了,这个对于我这个半路出家的和尚还是处理了老半天才解决.
.a文件直接导入 .h文件要导入文件夹结构 配置header search 环境变量 使用的时候导入文件 结构:#import "文件夹/文件.h" - 编译.
- 首次编译.
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 编译通过
- 首次编译.

浙公网安备 33010602011771号