iOS 编译可调试的FFmpeg
来源:互联网 发布:淘宝做广告多少钱 编辑:程序博客网 时间:2024/05/22 14:43
iOS 编译可调试的FFmpeg
修改FFmpeg-iOS-build-script脚本让其编译出能调试的FFmpeg库。
https://github.com/kewlbear/FFmpeg-iOS-build-script;
//当脚本这样写编译会报错 ->
CONFIGURE_FLAGS="--enable-cross-compile --disable-symver --disable-stripping --enable-static --disable-shared --disable-optimizations --enable-debug --disable-programs \
--disable-doc --enable-pic"
//这样编译不会报错
//但是这样编译禁止了汇编代码 导致解码很慢浪费性能
//https://stackoverflow.com/questions/7874667/trying-to-compile-last-ffmpeg-iphone-error-invalid-operand-in-inline-asm
/*
I have tried --disable-asm configuration. It works but the decoder performance is bad.
I tried edit the config.h: #define HAVE_INLINE_ASM 0
this only disables inline assembly
*/
CONFIGURE_FLAGS="--enable-cross-compile --disable-symver --disable-stripping --enable-static --disable-shared --disable-optimizations --enable-debug --disable-asm --disable-programs \
--disable-doc --enable-pic"
//这样编译不会报错 也不会影响性能去掉的cpu都是很老的CPU 目前基本上已经没有了
//可用的编译脚本配置
CONFIGURE_FLAGS="--enable-cross-compile --disable-symver --disable-stripping --enable-static --disable-shared --disable-optimizations --enable-debug --disable-armv5te --disable-armv6 --disable-armv6t2 --disable-programs \
--disable-doc --enable-pic"
//还要修改 i386下的编译环境。
CONFIGURE_FLAGS="$CONFIGURE_FLAGS --disable-asm"
//可以用的脚本支持调试
build-ffmpeg.sh 修改后的源码
#!/bin/sh# directoriesSOURCE="ffmpeg-3.3"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-build-script-for-iOS/fdk-aac-iosCONFIGURE_FLAGS="--enable-cross-compile --disable-symver --disable-stripping --enable-static --disable-shared --disable-optimizations --enable-debug --disable-armv5te --disable-armv6 --disable-armv6t2 --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 armv7 x86_64 i386"ARCHS="armv7 arm64 x86_64 i386"COMPILE="y"LIPO="y"DEPLOYMENT_TARGET="8.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...' ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" \|| exit 1fiecho 'Trying to install Yasm...'brew install yasm || exit 1fiif [ ! `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) \|| exit 1fiif [ ! -r $SOURCE ]thenecho 'FFmpeg source not found. Trying to download...'curl http://www.ffmpeg.org/releases/$SOURCE.tar.bz2 | tar xj \|| exit 1fiCWD=`pwd`for ARCH in $ARCHSdoecho "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" CONFIGURE_FLAGS="$CONFIGURE_FLAGS --disable-asm"else PLATFORM="iPhoneOS" CFLAGS="$CFLAGS -mios-version-min=$DEPLOYMENT_TARGET -fembed-bitcode" if [ "$ARCH" = "arm64" ] then EXPORT="GASPP_FIX_XCODE5=1" fifiXCRUN_SDK=`echo $PLATFORM | tr '[:upper:]' '[:lower:]'`CC="xcrun -sdk $XCRUN_SDK clang"# force "configure" to use "gas-preprocessor.pl" (FFmpeg 3.3)if [ "$ARCH" = "arm64" ]then AS="gas-preprocessor.pl -arch aarch64 -- $CC"else AS="$CC"fiCXXFLAGS="$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" \ --as="$AS" \ $CONFIGURE_FLAGS \ --extra-cflags="$CFLAGS" \ --extra-ldflags="$LDFLAGS" \ --prefix="$THIN/$ARCH" \|| exit 1make -j3 install $EXPORT || exit 1cd $CWDdonefiif [ "$LIPO" ]thenecho "building fat binaries..."mkdir -p $FAT/libset - $ARCHSCWD=`pwd`cd $THIN/$1/libfor LIB in *.adocd $CWDecho lipo -create `find $THIN -name $LIB` -output $FAT/lib/$LIB 1>&2lipo -create `find $THIN -name $LIB` -output $FAT/lib/$LIB || exit 1donecd $CWDcp -rf $THIN/$1/include $FATfiecho Done
- iOS 编译可调试的FFmpeg
- 编译可调试的ffmpeg
- 编译可调试的ffmpeg
- 编译可调试的ffmpeg
- 编译可调试的ffmpeg 开关解释
- windows下编译可在visual studio中调试的FFmpeg
- ios视频-ffmpeg的编译
- 编译IOS下的FFMpeg
- 编译IOS下的FFMpeg
- ffmpeg的编译及kxmovie的调试
- 编译ffmpeg for iOS,并调试iFrameExtractor demo
- 编译ffmpeg for iOS,并调试iFrameExtractor demo
- 编译ffmpeg for iOS,并调试iFrameExtractor demo
- ffmpeg VS2013 编译调试
- 编译可调试的Linux内核
- iOS ffmpeg 之编译ffmpeg
- 编译针对iOS平台的ffmpeg
- iOS FFMpeg的编译和使用
- python--迭代器
- 2017年8月8日提高组T2 呀!回文串
- 键盘的常用事件
- NC按钮拦截器
- 【工具】Spring中获取properties参数&解决中文乱码
- iOS 编译可调试的FFmpeg
- System.Text.ASCIIEncoding.Default.GetByteCount
- 应变和变形的区别(strain deformation)
- IMU传感器输出值与实际物理量的换算关系
- Android自定义Dialog
- log目录
- 动态连接库和静态链接库
- x264 settings
- 喜欢的一首歌(小曲儿唱的别有一番趣味)