FFmpeg Unterstützung für libstagefright Hardware-Decodierung

9

alle: Ich bin neu in ffmpeg. Vor kurzem arbeite ich an Projekt, um ffmpeg an Android-Gerät zu portieren. Zu Beginn habe ich ffmpeg auf freigegebene Bibliotheken (.so-Dateien) auf eine ganz normale Art kompiliert, indem ich einige Anleitungen im Internet befolgte, um sie in meine Android-App zu laden. Es funktioniert perfekt.

Nun möchte ich, dass ffmpeg libstagefright benutzt, um die HW-Dekodierung zu erfüllen. Das Problem ist, ich kann die .so-Bibliotheken kompilieren, aber wenn ich meine App starte und diese .so-Bibliotheken lade, gibt es immer einen java.lang.UnsatisfiedLinkError: Bibliothek kann nicht geladen werden: relocate_library [1314]: 114 kann '_ZN7android11MediaBufferC1Ej' nicht finden

Ich blieb dort für ein paar Tage. Hat jemand schon einmal ähnliche Probleme gehabt? Es wäre großartig, wenn mir jemand einen Hinweis auf diesen Fehler geben könnte.

Meine Schritte: 1. Kompilieren Sie ffmpeg-2.1.4 souce code zu .so shared libs. Ich benutze das Skript build_libstagefright, um dies zu tun, und mache einige Änderungen basierend auf einigen Anleitungen aus dem Internet.

%Vor%
  1. Kopieren Sie die kompilierten Include- und Lib-Verzeichnisse in mein android-ndk-r7 / sources / ffmpeg-2.1.4 / android / arm-Verzeichnis. Die Android.mk-Datei in diesem Verzeichnis lautet.

    LOCAL_PATH: = $ (call my-dir)

    enthält $ (CLEAR_VARS) LOCAL_MODULE: = libavcodec LOCAL_SRC_FILES: = lib / libavcodec-55.so LOCAL_EXPORT_C_INCLUDES: = $ (LOCAL_PATH) / include Include $ (PREBUILT_SHARED_LIBRARY)

    enthält $ (CLEAR_VARS) LOCAL_MODULE: = libavformat LOCAL_SRC_FILES: = lib / libavformat-55.so LOCAL_EXPORT_C_INCLUDES: = $ (LOCAL_PATH) / include Include $ (PREBUILT_SHARED_LIBRARY)

    enthält $ (CLEAR_VARS) LOCAL_MODULE: = libswscale LOCAL_SRC_FILES: = lib / libswscale-2.so LOCAL_EXPORT_C_INCLUDES: = $ (LOCAL_PATH) / include Include $ (PREBUILT_SHARED_LIBRARY)

    enthält $ (CLEAR_VARS) LOCAL_MODULE: = libavutil LOCAL_SRC_FILES: = lib / libavutil-52.so LOCAL_EXPORT_C_INCLUDES: = $ (LOCAL_PATH) / include Include $ (PREBUILT_SHARED_LIBRARY)

    enthält $ (CLEAR_VARS) LOCAL_MODULE: = libavfilter LOCAL_SRC_FILES: = lib / libavfilter-3.so LOCAL_EXPORT_C_INCLUDES: = $ (LOCAL_PATH) / include Include $ (PREBUILT_SHARED_LIBRARY)

    enthält $ (CLEAR_VARS) LOCAL_MODULE: = libwsresample LOCAL_SRC_FILES: = lib / libswresample0.so LOCAL_EXPORT_C_INCLUDES: = $ (LOCAL_PATH) / include Include $ (PREBUILT_SHARED_LIBRARY)

  2. Unter dem jni-Verzeichnis meiner Android-App ist die Android.mk.

    %Vor%

    Und die Application.mk ist:

    %Vor%

Ich bin mir nicht sicher, was Sie sonst noch brauchen, wenn etwas fehlt, lassen Sie es mich bitte wissen, ich werde es hochladen. Danke euch sehr !!!

    
Ming Zhang 13.09.2014, 00:24
quelle

1 Antwort

1

FFmpeg hat die Unterstützung für libstagefright bei Ссылка (in n3.0 enthalten) entfernt. Commit-Nachricht:

%Vor%

vielleicht ist es nicht mehr möglich.

Sie haben möglicherweise bessere Chancen mit AMediaCodec und OpenMAX .

    
quelle