FFMPEG ANDROID 1.0 NDK R8B [英] FFMPEG 1.0 ANDROID NDK R8B

查看:199
本文介绍了FFMPEG ANDROID 1.0 NDK R8B的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图借助Android NDK R8B编译的ffmpeg的最后一个版本,但我总是有错误,我不知道如何解决这些问题。我阅读本教程 http://www.roman10.net/how -to-内建的ffmpeg换安卓/ 但我的环境的脚本不工作,我使用这样的: -Ubuntu 12.04 LTS。 - 英特尔酷睿i7。 -Android NDK R8B -last版本ffmeg(1.0)

基本上我想要连接从一个格式code膜其他。

这是我使用的脚本:

  NDK = .. / Android的NDK-R8B
平台= $ NDK /平台/ Android为8 /弓臂/
preBUILT = $ NDK /工具链/ ARM-Linux的androideabi-4.4.3 / prebuilt / Linux的86
功能build_r8b
{
庆典配置\
 - 禁用共享\
--enable-静态\
--enable-GPL \
--enable-版本3 \
--enable-非自由\
--disable-DOC \
 - 禁用的ffmpeg \
 - 禁用ffplay \
 - 禁用ffprobe \
 - 禁用ffserver的\
 - 禁用avdevice \
 - 禁用avfilter \
 - 禁用postproc \
--enable-小\
--cross- preFIX = $preBUILT /箱/ ARM-Linux的androideabi- \
--enable-交叉编译\
--target-OS = Linux的\
--extra-CFLAGS = -  I $平台/ usr / include目录\
--extra-LDFLAGS = -  1 $平台/ usr / lib目录-nostdlib\
--arch =手臂\
 - 禁用symver命令\
 - 禁用调试\
 - 禁用剥离\
$ ADDITIONAL_CONFIGURE_FLAG
SED -iS / HAVE_LRINT 0 / HAVE_LRINT 1 / G'的config.h
SED -iS / HAVE_LRINTF 0 / HAVE_LRINTF 1 / G'的config.h
SED -iS / HAVE_ROUND 0 / HAVE_ROUND 1 / G'的config.h
SED -iS / HAVE_ROUNDF 0 / HAVE_ROUNDF 1 / G'的config.h
SED -iS / HAVE_TRUNC 0 / HAVE_TRUNC 1 / G'的config.h
SED -iS / HAVE_TRUNCF 0 / HAVE_TRUNCF 1 / G'的config.h
使清洁
让-j4安装
$preBUILT /箱/ ARM-Linux的androideabi-ARðlibav codeC / libav codec.a inverse.o
$preBUILT /箱/ ARM-Linux的androideabi-LD -rpath链接= $平台/ usr / lib目录-L $平台/ usr / lib目录-soname libffmpeg.so -shared -nostdlib -z,noexecstack -Bsymbolic  - -whole归档--no-不确定-o $preFIX / libffmpeg.so libav codeC / libav codec.a了libavformat / libavformat.a libavutil / libavutil.a libswscale / libswscale.a -lc -lm -lz -ldl -llog --warn一次--dynamic链接器= /系统/斌/连接器$preBUILT / lib中/ GCC / ARM-Linux的androideabi / 4.4.3 / libgcc.a的
}
#arm v7vfpv3
CPU =的ARMv7-A
OPTIMIZE_CFLAGS = -  mfloat-ABI = softfp -mfpu =的VFPv3-D16 -marm -march = $ CPU
preFIX =。/安卓/ $ CPU
ADDITIONAL_CONFIGURE_FLAG =
#build_one
build_r8b
 

这是终端结果

  jllarraz @ Ubuntu的:〜/ Descargas / ffmpeg的$庆典build_android.sh
/android-ndk-r8b/toolchains/arm-linux-androideabi-4.4.3/$p$pbuilt/linux-x86/bin/arm-linux-androideabi-gcc无法创建一个可执行文件。
C编译器测试失败。

如果你想配置犯了一个错误,请确保您使用的是最新的
从版本的Git。如果最新版本失败,将问题报告给
ffmpeg-user@ffmpeg.org邮件列表或者irc.freenode.net上的IRC #ffmpeg。
包括由配置所产生的日志文件config.log的,因为这将有助于
解决这个问题。
使:execvp:./version.sh:Permiso denegado
使:execvp:./version.sh:Permiso denegado
HOSTCC DOC / print_options.o
CC cmdutils.o
CC libavdevice / alldevices.o
CC libavdevice / avdevice.o
在文件中包括来自DOC / print_options.c:104:0:
./libav$c$cc/options_table.h:恩拉función'show_ codec_opts':
./libav$c$cc/options_table.h:85:1:说Aviso:sub_idES obsoleto(declarado EN ./libav$c$cc/av$c$cc.h:1505)-Wde precated-声明]
./libav$c$cc/options_table.h:149:1:说Aviso:luma_elim_thresholdES obsoleto(declarado EN ./libav$c$cc/av$c$cc.h:1740)-Wde precated-声明]
./libav$c$cc/options_table.h:150:1:说Aviso:chroma_elim_thresholdES obsoleto(declarado EN ./libav$c$cc/av$c$cc.h:1747)-Wde precated-声明]
./libav$c$cc/options_table.h:284:1:说Aviso:color_table_idES obsoleto(declarado EN ./libav$c$cc/av$c$cc.h:1986)-Wde precated-声明]
./libav$c$cc/options_table.h:307:1:说Aviso:inter_thresholdES obsoleto(declarado EN ./libav$c$cc/av$c$cc.h:2049)-Wde precated-声明]
./libav$c$cc/options_table.h:312:1:说Aviso:quantizer_noise_shapingES obsoleto(declarado EN ./libav$c$cc/av$c$cc.h:2056)-Wde precated-声明]
cmdutils.c:52:21:致命错误:version.h:没有existe EL archivoØ报上级目录
compilaciónterminada。
使:*** [cmdutils.o]错误1
使:***硒埃斯佩拉一阙terminen otras tareas ....
build_android.sh:拉利内阿59:../android-ndk-r8b/tool​​chains/arm-linux-androideabi- 4.4.3 / prebuilt / Linux的-86 /斌/ ARM-Linux的androideabi-AR:Permiso denegado
build_android.sh:拉利内阿60: ../android-ndk-r8b/toolchains/arm-linux-androideabi-4.4.3/$p$pbuilt/linux-x86/bin/arm-linux-androideabi-ld: Permiso denegado
 

解决方案

我觉得编译它的一种方式工作很多小时后:

1)授予权限搭配chmod 777 ./* -R包含的Andr​​oid NDK和ffmpeg的在我的案件的文件夹中(一定要使用'./的'而不是'/ 的!)
2)安装的东西,我需要在我的环境。
3)这是我的新 .SH 文件

 功能build_r8b_test
{
庆典配置--target-OS = Linux的\
 -  preFIX = $preFIX \
--enable-交叉编译\
--extra  - 库= -  lgcc\
--arch =手臂\
--cc = $preBUILT /箱/ ARM-Linux的androideabi-GCC \
--cross- preFIX = $preBUILT /箱/ ARM-Linux的androideabi- \
--nm = $preBUILT /箱/ ARM-Linux的androideabi纳米\
--sysroot = $ PLATFORM \
--extra-CFLAGS =-O3 -fpic -DANDROID -DHAVE_SYS_UIO_H = 1 -Dipv6mr_interface = ipv6mr_ifindex -fasm -Wno-psabi了-fno-short-枚举-fno严格走样-finline限= $ 300 OPTIMIZE_CFLAGS\
 - 禁用共享\
--enable-静态\
--extra-LDFLAGS = -  WL,-rpath链接= $平台/ usr / lib目录-L $平台/ usr / lib目录-nostdlib -lc -lm -ldl -llog\
 - 禁用一切\
--enable-分路器= MOV \
--enable-分路器= H264 \
 - 禁用ffplay \
--enable-协议=文件\
--enable-avformat \
--enable-AV codeC \
--enable-DE codeR = rawvideo \
--enable-DE codeR = MJPEG \
--enable-DE codeR = H263 \
--enable-DE codeR = MPEG4 \
--enable-DE codeR = H264 \
--enable-解析器= H264 \
--enable-CN codeR = MPEG4 \
--enable-CN codeR = MPEG \
 - 禁用网络\
--enable-ZLIB \
 - 禁用avfilter \
 - 禁用avdevice \
$ ADDITIONAL_CONFIGURE_FLAG
SED -iS / HAVE_LRINT 0 / HAVE_LRINT 1 / G'的config.h
SED -iS / HAVE_LRINTF 0 / HAVE_LRINTF 1 / G'的config.h
SED -iS / HAVE_ROUND 0 / HAVE_ROUND 1 / G'的config.h
SED -iS / HAVE_ROUNDF 0 / HAVE_ROUNDF 1 / G'的config.h
SED -iS / HAVE_TRUNC 0 / HAVE_TRUNC 1 / G'的config.h
SED -iS / HAVE_TRUNCF 0 / HAVE_TRUNCF 1 / G'的config.h
使清洁
让-j4安装
$preBUILT /箱/ ARM-Linux的androideabi-ARðlibav codeC / libav codec.a inverse.o
$preBUILT /箱/ ARM-Linux的androideabi-LD -rpath链接= $平台/ usr / lib目录-L $平台/ usr / lib目录-soname libffmpeg.so -shared -nostdlib -z,noexecstack -Bsymbolic  - -whole归档--no-不确定-o $preFIX / libffmpeg.so libav codeC / libav codec.a了libavformat / libavformat.a libavutil / libavutil.a libswscale / libswscale.a -lc -lm -lz -ldl -llog --warn一次--dynamic链接器= /系统/斌/连接器$preBUILT / lib中/ GCC / ARM-Linux的androideabi / 4.4.3 / libgcc.a的
}

#arm v7vfpv3
CPU =的ARMv7-A
OPTIMIZE_CFLAGS = -  mfloat-ABI = softfp -mfpu =的VFPv3-D16 -marm -march = $ CPU
preFIX =。/安卓/ $ CPU
ADDITIONAL_CONFIGURE_FLAG =
build_r8b_test
 

I have tried to compile the last version of ffmpeg with the android ndk r8b, but i always have errors and i dont know how to solve them. I am reading this tutorial http://www.roman10.net/how-to-build-ffmpeg-for-android/ but the script doesnt work with my environment, i am using this: -Ubuntu 12.04 LTS. -Intel Core i7. -Android ndk r8b -Last version ffmeg (1.0)

Basically i want to encode films from one format to other.

And that is the script that i am using:

NDK=../android-ndk-r8b
PLATFORM=$NDK/platforms/android-8/arch-arm/
PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86
function build_r8b
{
bash configure \
--disable-shared \
--enable-static \
--enable-gpl \
--enable-version3 \
--enable-nonfree \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-avdevice \
--disable-avfilter \
--disable-postproc \
--enable-small \
--cross-prefix=$PREBUILT/bin/arm-linux-androideabi- \
--enable-cross-compile \
--target-os=linux \
--extra-cflags="-I$PLATFORM/usr/include" \
--extra-ldflags="-L$PLATFORM/usr/lib -nostdlib" \
--arch=arm \
--disable-symver \
--disable-debug \
--disable-stripping \
$ADDITIONAL_CONFIGURE_FLAG
sed -i 's/HAVE_LRINT 0/HAVE_LRINT 1/g' config.h
sed -i 's/HAVE_LRINTF 0/HAVE_LRINTF 1/g' config.h
sed -i 's/HAVE_ROUND 0/HAVE_ROUND 1/g' config.h
sed -i 's/HAVE_ROUNDF 0/HAVE_ROUNDF 1/g' config.h
sed -i 's/HAVE_TRUNC 0/HAVE_TRUNC 1/g' config.h
sed -i 's/HAVE_TRUNCF 0/HAVE_TRUNCF 1/g' config.h
make clean
make  -j4 install
$PREBUILT/bin/arm-linux-androideabi-ar d libavcodec/libavcodec.a inverse.o
$PREBUILT/bin/arm-linux-androideabi-ld -rpath-link=$PLATFORM/usr/lib   -L$PLATFORM/usr/lib  -soname libffmpeg.so -shared -nostdlib  -z,noexecstack -Bsymbolic --whole-archive --no-undefined -o $PREFIX/libffmpeg.so libavcodec/libavcodec.a libavformat/libavformat.a libavutil/libavutil.a libswscale/libswscale.a -lc -lm -lz -ldl -llog  --warn-once  --dynamic-linker=/system/bin/linker $PREBUILT/lib/gcc/arm-linux-androideabi/4.4.3/libgcc.a
}
#arm v7vfpv3
CPU=armv7-a
OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfpv3-d16 -marm -march=$CPU "
PREFIX=./android/$CPU
ADDITIONAL_CONFIGURE_FLAG=
#build_one
build_r8b

And that is the terminal result

jllarraz@ubuntu:~/Descargas/ffmpeg$ bash build_android.sh
/android-ndk-r8b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc is unable to create an executable file.
C compiler test failed.

If you think configure made a mistake, make sure you are using the latest
version from Git.  If the latest version fails, report the problem to the
ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
Include the log file "config.log" produced by configure as this will help
solving the problem.
make: execvp: ./version.sh: Permiso denegado
make: execvp: ./version.sh: Permiso denegado
HOSTCC  doc/print_options.o
CC  cmdutils.o
CC  libavdevice/alldevices.o
CC  libavdevice/avdevice.o
In file included from doc/print_options.c:104:0:
./libavcodec/options_table.h: En la función ‘show_codec_opts’:
./libavcodec/options_table.h:85:1: aviso: ‘sub_id’ es obsoleto (declarado en  ./libavcodec/avcodec.h:1505) [-Wdeprecated-declarations]
./libavcodec/options_table.h:149:1: aviso: ‘luma_elim_threshold’ es obsoleto (declarado en ./libavcodec/avcodec.h:1740) [-Wdeprecated-declarations]
./libavcodec/options_table.h:150:1: aviso: ‘chroma_elim_threshold’ es obsoleto (declarado en ./libavcodec/avcodec.h:1747) [-Wdeprecated-declarations]
./libavcodec/options_table.h:284:1: aviso: ‘color_table_id’ es obsoleto (declarado en ./libavcodec/avcodec.h:1986) [-Wdeprecated-declarations]
./libavcodec/options_table.h:307:1: aviso: ‘inter_threshold’ es obsoleto (declarado en ./libavcodec/avcodec.h:2049) [-Wdeprecated-declarations]
./libavcodec/options_table.h:312:1: aviso: ‘quantizer_noise_shaping’ es obsoleto (declarado en ./libavcodec/avcodec.h:2056) [-Wdeprecated-declarations]
cmdutils.c:52:21: error fatal: version.h: No existe el archivo o el directorio
compilación terminada.
make: *** [cmdutils.o] Error 1
make: *** Se espera a que terminen otras tareas....
build_android.sh: línea 59: ../android-ndk-r8b/toolchains/arm-linux-androideabi- 4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-ar: Permiso denegado
build_android.sh: línea 60: ../android-ndk-r8b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-ld: Permiso denegado

解决方案

After many hour of work i have find one way to compile it:

1) give permissions "chmod 777 ./* -R" in the folder that contains android-ndk and ffmpeg in my case (Be sure to use './' and not '/'!)
2) install things that i need in my environment.
3) this is my new .sh file

function build_r8b_test
{
bash configure --target-os=linux \
--prefix=$PREFIX \
--enable-cross-compile \
--extra-libs="-lgcc" \
--arch=arm \
--cc=$PREBUILT/bin/arm-linux-androideabi-gcc \
--cross-prefix=$PREBUILT/bin/arm-linux-androideabi- \
--nm=$PREBUILT/bin/arm-linux-androideabi-nm \
--sysroot=$PLATFORM \
--extra-cflags=" -O3 -fpic -DANDROID -DHAVE_SYS_UIO_H=1 -Dipv6mr_interface=ipv6mr_ifindex -fasm -Wno-psabi -fno-short-enums -fno-strict-aliasing -finline-limit=300 $OPTIMIZE_CFLAGS " \
--disable-shared \
--enable-static \
--extra-ldflags="-Wl,-rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -nostdlib -lc -lm -ldl -llog" \
--disable-everything \
--enable-demuxer=mov \
--enable-demuxer=h264 \
--disable-ffplay \
--enable-protocol=file \
--enable-avformat \
--enable-avcodec \
--enable-decoder=rawvideo \
--enable-decoder=mjpeg \
--enable-decoder=h263 \
--enable-decoder=mpeg4 \
--enable-decoder=h264 \
--enable-parser=h264 \
--enable-encoder=mpeg4 \
--enable-encoder=mpeg \
--disable-network \
--enable-zlib \
--disable-avfilter \
--disable-avdevice \
$ADDITIONAL_CONFIGURE_FLAG
sed -i 's/HAVE_LRINT 0/HAVE_LRINT 1/g' config.h
sed -i 's/HAVE_LRINTF 0/HAVE_LRINTF 1/g' config.h
sed -i 's/HAVE_ROUND 0/HAVE_ROUND 1/g' config.h
sed -i 's/HAVE_ROUNDF 0/HAVE_ROUNDF 1/g' config.h
sed -i 's/HAVE_TRUNC 0/HAVE_TRUNC 1/g' config.h
sed -i 's/HAVE_TRUNCF 0/HAVE_TRUNCF 1/g' config.h
make clean
make  -j4 install
$PREBUILT/bin/arm-linux-androideabi-ar d libavcodec/libavcodec.a inverse.o
$PREBUILT/bin/arm-linux-androideabi-ld -rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib  -soname libffmpeg.so -shared -nostdlib  -z,noexecstack -Bsymbolic --whole-archive --no-undefined -o $PREFIX/libffmpeg.so libavcodec/libavcodec.a libavformat/libavformat.a libavutil/libavutil.a libswscale/libswscale.a -lc -lm -lz -ldl -llog  --warn-once  --dynamic-linker=/system/bin/linker $PREBUILT/lib/gcc/arm-linux-androideabi/4.4.3/libgcc.a
}

#arm v7vfpv3
CPU=armv7-a
OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfpv3-d16 -marm -march=$CPU "
PREFIX=./android/$CPU
ADDITIONAL_CONFIGURE_FLAG=
build_r8b_test

这篇关于FFMPEG ANDROID 1.0 NDK R8B的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆