Wie kann ich ffplay für Android auf Ubuntu plattformübergreifend kompilieren?

Wie kann ich ffplay für Android auf Ubuntu plattformübergreifend kompilieren?

Ich versuche, eine ffplay-Binärdatei zu erhalten, um sie in meiner Android-App zu verwenden. Aber wenn ich mein Konfigurationsskript ausführe, heißt es, dass sdl2 nicht gefunden wurde, obwohl ich es auch plattformübergreifend kompiliert und seine Header und Bibliotheksflags auf --extra-cflags und --extraldflags gesetzt habe. Wenn ich --enable-sdl2 entferne, erscheint ffplay einfach nicht in der Liste der zu erstellenden Programme. Ich habe es geschafft, es auf dem Zweig release/3.2 zu kompilieren, aber es gibt einen Fehler bezüglich eines undefinierten Verweises auf „main“ in ffplay- oder libavutil.so-Dateien aus (abhängig von gemeinsam genutzten und/oder statischen Flags). Dann habe ich die Variablen sdl2_cflags und sdl2_extralibs in der Konfigurationsdatei auf dem Zweig master bearbeitet, damit sie auf meine Bibliothek verweisen, aber es wird trotzdem nicht kompiliert.
Was mache ich falsch?

Meine Konfigurationsdatei wurde folgendermaßen geändert:

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

Und hier ist mein Skript:

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

Aktualisierung:Ich habe es geschafft, eine ausführbare Datei zu erstellen, indem ich diese Zeilen in die Konfigurationsdatei eingefügt habe, aber weder ffmpeg noch ffplay, die auf diese Weise erstellt wurden, funktionieren. Ihre Prozesse werden mit Code 132 beendet, der meines Wissens mit einer beschädigten Binärdatei zusammenhängt. Ich weiß immer noch nicht, wie ich sie zum Laufen bekomme.

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

verwandte Informationen