Android NDK & FFMPEG construire
Je suis en train de construire la bibliothèque FFMPEG pour mon application android en utilisant le NDK. J'ai téléchargé le code source de son site, et je pense que je le construire (c'est mon premier essaie de travailler avec NDK et ffmpeg). J'ai créé un build.sh
fichier que je suis en utilisant de l'exécuter en ligne de commande sous Mac OS X. Mais j'ai quelques questions...
Première des choses est que je sais que j'ai besoin Android.mk fichier afin que je puisse utiliser le bâti de la bibliothèque dans ma demande,mais je ne sais pas comment le faire pour des raisons que je vous ai dit ci-dessus. Après je lance mon build.sh
- je obtenir android
dossier avec un peu de dossiers et de certaines bibliothèques. Donc, ma première question est, comment puis-je construire le Android.mk fichier dont j'ai besoin...et peut-être si quelqu'un peut m'expliquer pourquoi j'en ai besoin.
Ma deuxième question est la suivante j'ai besoin de quelques bibliothèques de ffmpeg pour être en mesure de les utiliser à partir de mon application, mais après la construction, je ne peux pas les voir dans mon arborescence source. Je sais que je dois les activer dans mon build.sh
et je pense que j'ai fait,mais je ne peux pas les voir. De sorte que tout type d'informations à propos de mon fichier compressé sera utile pour moi de comprendre comment le configurer.
Voici à quoi ça ressemble :
#!/bin/bash
######################################################
# Usage:
# put this script in top of FFmpeg source tree
# ./build_android
# It generates binary for following architectures:
# ARMv6
# ARMv6+VFP
# ARMv7+VFPv3-d16 (Tegra2)
# ARMv7+Neon (Cortex-A8)
# Customizing:
# 1. Feel free to change ./configure parameters for more features
# 2. To adapt other ARM variants
# set $CPU and $OPTIMIZE_CFLAGS
# call build_one
######################################################
NDK=~/Desktop/android-ndk-r5b
PLATFORM=$NDK/platforms/android-8/arch-arm/
PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86
function build_one
{
./configure \
--target-os=darwin \
--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-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffserver \
--disable-ffprobe \
--extra-ldflags="-Wl,-rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -nostdlib -lc -lm -ldl -llog" \
--enable-zlib \
--enable-version3 \
--enable-nonfree \
--enable-libmp3lame \
--enable-libspeex \
--enable-libtheora \
--enable-libfaac \
--enable-libvorbis \
--enable-libaacplus \
--prefix=$DIST_DIR \
$ADDITIONAL_CONFIGURE_FLAG
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 v6
#CPU=armv6
#OPTIMIZE_CFLAGS="-marm -march=$CPU"
#PREFIX=./android/$CPU
#ADDITIONAL_CONFIGURE_FLAG=
#build_one
#arm v7vfpv3
CPU=armv7-a
OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfpv3-d16 -marm -march=$CPU "
PREFIX=./android/$CPU
ADDITIONAL_CONFIGURE_FLAG=
build_one
#arm v7vfp
#CPU=armv7-a
#OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU "
#PREFIX=./android/$CPU-vfp
#ADDITIONAL_CONFIGURE_FLAG=
#build_one
#arm v7n
#CPU=armv7-a
#OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=neon -marm -march=$CPU -mtune=cortex-a8"
#PREFIX=./android/$CPU
#ADDITIONAL_CONFIGURE_FLAG=--enable-neon
#build_one
#arm v6+vfp
#CPU=armv6
#OPTIMIZE_CFLAGS="-DCMP_HAVE_VFP -mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU"
#PREFIX=./android/${CPU}_vfp
#ADDITIONAL_CONFIGURE_FLAG=
#build_one
Merci pour toute sorte d'informations utiles et des suggestions et des exemples et etc.
OriginalL'auteur Android-Droid | 2012-06-05
Vous devez vous connecter pour publier un commentaire.
J'ai fait un tutoriel sur la façon de construire
ffmpeg
etx264
pourandroid
:zip avec la version de ffmpeg avec x264
Vous pouvez également télécharger le fichier zip contenant les fichiers que vous devez faire une demande sur
android
.Encore de travail de l'url.
Url ne fonctionne pas j'ai essayé
OriginalL'auteur Estevex
Si vous voulez plus d'instructions détaillées sur la façon de construire ffmpeg et comment l'utiliser pour construire des applications Android, reportez-vous au livre Android NDK livre de cuisine: http://www.packtpub.com/android-native-development-kit-cookbook/book
Le Bonus le Chapitre 1 est dédié à l'application multimédia de développement avec Android NDK et ffmpeg, et il est disponible gratuitement à http://www.packtpub.com/sites/default/files/downloads/Developing_Multimedia_Applications_with_NDK.pdf
OriginalL'auteur roman10
Tout d'abord, vous devez lire la documentation pour Android NDK et découvrez quelques exemples d'applications. Vous trouverez ces informations dans android_NDK_home/docs et android_NDK_home/échantillons (où android_NDK_home est le nom du dossier pour votre android NDK).
Vérifiez également ce lien sur stackoverflow:
À l'aide de FFmpeg avec Android-NDK
Pour une démarche par étape tutoriel, c'est un plutôt bon:
http://www.roman10.net/how-to-build-ffmpeg-for-android/
Aussi, vous aurez à installer/configurer certains éléments sur votre Eclipse pour activer le support pour le développement d'applications qui sont construites avec le NDK:
http://mhandroid.wordpress.com/2011/01/23/using-eclipse-for-android-cc-development/
http://wiki.eclipse.org/Sequoyah/ndk_checklist
Et un très bon projet qui utilise la bibliothèque ffmpeg:
https://github.com/havlenapetr/FFMpeg
Je suis désolé agonie, je n'ai aucune idée, utilisé seulement Mac. Mais je ne vois pas de raison pourquoi elle ne devrait pas fonctionner sur Ubuntu
comment l'utiliser pour compresser les vidéos github.com/havlenapetr/FFMpeg
sur Ubuntu il y a beaucoup d'erreurs /bin/bash: --S extglob: invalid option et build_librtmp.sh: ligne 29: erreur de syntaxe près de jeton inattendu
(' _build_librtmp.sh: line 29:
cp ${prefix}/lib/lib*-+([0-9]).donc ${dist_OriginalL'auteur bogdan
ffmpeg utilise autoconf que son système de construction. Au moment d'écrire ces lignes, personne n'a encore mis ensemble un Gradle construire paquet pour ffmpeg sur Android. Aussi loin que je peux dire, Gradle ne supportent pas encore autoconf, ce qui le rend assez difficile à faire
Cela dit, après avoir essayé plusieurs tutoriels qui ont été là-bas, ainsi que certains des paquetages pré-compilés, nous avons décidé d'étendre notre propre Android construire un script pour ffmpeg qui inclut le support pour OpenSSL et librtmp.
Vous pouvez le trouver ici: https://github.com/cine-io/android-ffmpeg-with-rtmp
Préalable: La Android NDK doit être installé
Instructions:
Lorsque le script est terminé, les bibliothèques partagées et
ffmpeg
exécutable sera mis dans lebuild/dist
répertoire. Vous pouvez les inclure dans votre projet comme tous les autres binaire natif.OriginalL'auteur jeffrey.wescott
De construire exécutable ffmpeg, j'utilise la suite Android.mk:
OriginalL'auteur Alex Cohn