ffmpeg编译android,FFmpeg为Android编译(配置,制作)

我想为Android版本编译ffmpeg.

但是,每次尝试时,我都无法编译ffmpeg的源代码.

我认为我的配置选项可能无效.

我使用此脚本进行配置.

#!/bin/sh

NDK_PATH=$HOME/android-ndk-r8

PREBUILT=$NDK_PATH/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86

LDFLAGS="-Wl,-T,$PREBUILT/armelf_linux_eabi.x -Wl,-rpath-link=$NDK_PATH/platforms/android-8/arch-arm/usr/lib \

-L$NDK_PATH/platforms/android-8/arch-arm/usr/lib -nostdlib $PREBUILT/lib/gcc/arm-linux-androideabi/4.4.3/crtbegin.o \

$PREBUILT/lib/gcc/arm-linux-androideabi/4.4.3/crtend.o -lc -lm -ldl"

COMMON_CONFIG="\

./configure --target-os=linux \

--arch=arm \

--enable-cross-compile \

--cc=$PREBUILT/bin/arm-linux-androideabi-gcc \

--as=$PREBUILT/bin/arm-linux-androideabi-gcc \

--cross-prefix=$PREBUILT/bin/arm-linux-androideabi- \

--sysinclude=$NDK_PATH/platforms/android-8/arch-arm/usr/include \

--nm=$PREBUILT/bin/arm-linux-androideabi-nm \

--extra-ldflags=\"$LDFLAGS\" \

--extra-cflags=-I$NDK_PATH/platforms/android-8/arch-arm/usr/include \

eval "$COMMON_CONFIG"

if [ $? -ne 0 ]; then

exit 1

fi

我必须给编译器一个新的头文件路径(通过–extra-cflags),因为当我键入“ make”时,编译器不知道头文件在哪里(例如math.h,ctime.h)

使用此脚本进行配置并键入“ make”后,出现了这些错误.

CC libavdevice/alldevices.o

In file included from /Users/gyeongmingim/android-ndk-r8/platforms/android-8/arch-arm/usr/include/stdlib.h:42,

from ./libavutil/common.h:35,

from ./libavutil/avutil.h:126,

from libavdevice/avdevice.h:22,

from libavdevice/alldevices.c:22:

/Users/gyeongmingim/android-ndk-r8/platforms/android-8/arch-arm/usr/include/strings.h:49: warning: redundant redeclaration of 'index'

/Users/gyeongmingim/android-ndk-r8/platforms/android-8/arch-arm/usr/include/string.h:47: note: previous declaration of 'index' was here

/Users/gyeongmingim/android-ndk-r8/platforms/android-8/arch-arm/usr/include/strings.h:50: warning: redundant redeclaration of 'strcasecmp'

/Users/gyeongmingim/android-ndk-r8/platforms/android-8/arch-arm/usr/include/string.h:57: note: previous declaration of 'strcasecmp' was here

/Users/gyeongmingim/android-ndk-r8/platforms/android-8/arch-arm/usr/include/strings.h:51: warning: redundant redeclaration of 'strncasecmp'

/Users/gyeongmingim/android-ndk-r8/platforms/android-8/arch-arm/usr/include/string.h:58: note: previous declaration of 'strncasecmp' was here

In file included from ./libavutil/internal.h:178,

from ./libavutil/common.h:342,

from ./libavutil/avutil.h:126,

from libavdevice/avdevice.h:22,

from libavdevice/alldevices.c:22:

./libavutil/libm.h:62: error: static declaration of 'lrint' follows non-static declaration

./libavutil/libm.h:69: error: static declaration of 'lrintf' follows non-static declaration

./libavutil/libm.h:76: error: static declaration of 'round' follows non-static declaration

./libavutil/libm.h:90: error: static declaration of 'trunc' follows non-static declaration

make: *** [libavdevice/alldevices.o] Error 1

怎么了

我的配置信息有误吗?还是任何丢失的标志?

操作系统:Mac Lion

Android-NDK版本:Android-NDK-R8

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Android平台上编译FFmpeg,需要先安装NDK(Native Development Kit)和Android SDK(Software Development Kit)。然后,可以按照以下步骤进行编译: 1. 下载FFmpeg源代码,并解压缩。 2. 打开终端或命令行窗口,进入FFmpeg源代码目录。 3. 设置NDK路径和SYSROOT路径: ``` export NDK=/path/to/ndk export SYSROOT=$NDK/platforms/android-<platform-version>/arch-<arch>/ ``` 其中,`<platform-version>`和`<arch>`需要根据实际情况进行替换,例如: ``` export SYSROOT=$NDK/platforms/android-21/arch-arm/ ``` 4. 设置交叉编译器路径: ``` export CROSS_PREFIX=$NDK/toolchains/llvm/prebuilt/darwin-x86_64/bin/aarch64-linux-android- ``` 其中,`darwin-x86_64`需要根据实际情况进行替换,例如: ``` export CROSS_PREFIX=$NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/arm-linux-androideabi- ``` 5. 配置FFmpeg: ``` ./configure \ --prefix=$PREFIX \ --enable-shared \ --disable-static \ --disable-doc \ --disable-ffmpeg \ --disable-ffplay \ --disable-ffprobe \ --disable-postproc \ --disable-avdevice \ --disable-swscale \ --disable-avfilter \ --disable-network \ --disable-iconv \ --disable-bsfs \ --disable-demuxers \ --disable-muxers \ --disable-indevs \ --disable-outdevs \ --arch=<arch> \ --target-os=android \ --cross-prefix=$CROSS_PREFIX \ --sysroot=$SYSROOT \ --extra-cflags="-Os -fpic -marm" \ --extra-ldflags="-shared" ``` 其中,`<arch>`需要根据实际情况进行替换,例如: ``` --arch=arm ``` 6. 编译FFmpeg: ``` make -j4 make install ``` 其中,`-j4`表示使用4个线程进行编译编译完成后,可以在`$PREFIX/lib`目录下找到编译好的FFmpeg库文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值