Estoy intentando obtener un binario de ffplay para usarlo en mi aplicación de Android. Pero cuando ejecuto mi script de configuración, dice que no se encontró sdl2, aunque también lo compilé de forma cruzada y puse sus encabezados y indicadores de biblioteca en --extra-cflags y --extraldflags. Si elimino --enable-sdl2 ffplay simplemente no aparecerá en la lista de programas que se crearán. Logré que se compilara en la rama versión/3.2, pero arroja un error con respecto a una referencia indefinida a 'principal' en los archivos ether ffplay o libavutil.so (dependiendo de los indicadores compartidos y/o estáticos). Luego edité las variables sdl2_cflags y sdl2_extralibs en el archivo de configuración en la rama maestra para que apunten a mi biblioteca, pero no se compilará de todos modos.
¿Qué estoy haciendo mal?
Mi archivo de configuración se ha cambiado de esta manera:
if enabled sdl2; then
sdl2_cflags="-I/home/kondenko/Android/ffmpeg/ffmpeg/sdl2/include -D_REENTRANT"
sdl2_extralibs="-L/home/kondenko/Android/ffmpeg/ffmpeg/sdl2/build/android/obj/local/armeabi-v7a -lSDL2"
enable sdl2
fi
Y aquí está mi guión:
make_or_die() {
make -j $(nproc) || exit
sudo make install || exit
}
ARCH=arm
API=17
CPU=armv7
WORKING_DIR=~/Android/ffmpeg/ffmpeg
NDK=~/Android/SDK/ndk
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi
SYSROOT=$TOOLCHAIN/sysroot
CROSS_PREFIX=$TOOLCHAIN/bin/arm-linux-androideabi-
FFMPEG_PREFIX=$(pwd)/android/$CPU
SDL=$(pwd)/sdl2
SDL_PREFIX=$SDL/build/android/obj/local/armeabi-v7a
export PATH=$PATH:$TOOLCHAIN/bin:$TOOLCHAIN/include
export CC="arm-linux-androideabi-clang"
export CXX="arm-linux-androideabi-clang++"
build_sdl2() {
hg clone https://hg.libsdl.org/SDL $SDL
cd $SDL
sudo ./build-scripts/androidbuildlibs.sh
cd $WORKING_DIR
echo "SDL build folder: $SDL_PREFIX"
}
build_ffmpeg() {
sudo make distclean
sudo ./configure \
--target-os=android \
--arch=$ARCH \
--prefix=$FFMPEG_PREFIX \
--cross-prefix=$CROSS_PREFIX \
--enable-static \
--disable-ffprobe \
--disable-ffmpeg \
--disable-doc \
--disable-symver \
&& make_or_die && header "Success! Your files are at $FFMPEG_PREFIX" \
|| (echo \\n && tail ffbuild/config.log && exit)
}
build_sdl2
build_ffmpeg
ACTUALIZACIÓN:Logré obtener un ejecutable al poner estas líneas en el archivo de configuración, pero ni ffmpeg ni ffplay creados de esta manera funcionan. Sus procesos salen con el código 132 que está relacionado con un binario corrupto que yo sepa. Todavía no sé cómo hacer que funcionen.
sdl2_cflags="-I/home/kondenko/Android/ffmpeg/ffmpeg/sdl2/include -D_REENTRANT"
sdl2_extralibs="/home/kondenko/Android/ffmpeg/ffmpeg/sdl2/build/android/lib/armeabi-v7a/libSDL2.so /home/kondenko/Android/ffmpeg/ffmpeg/sdl2/build/android/obj/local/armeabi-v7a/libSDL2.a /home/kondenko/Android/ffmpeg/ffmpeg/sdl2/build/android/obj/local/armeabi-v7a/libSDL2main.a -llog -landroid -ldl -lGLESv1_CM -lGLESv2 -shared"
enable sdl2