it-swarm.com.de

Gstreamer-Beispiele im Android Studio

Ich habe versucht, Gstreamer in Android Studio zum Laufen zu bringen, indem ich deren Tutorials befolge, siehe zum Beispiel hier:

https://gstreamer.freedesktop.org/documentation/tutorials/Android/link-against-gstreamer.html

Aber im neuesten Android Studio gibt es kein jni/Android.mk. Wo füge ich den Code am Ende dieser Webseite ein?

Sollte es in die CMakeLists.txt gehen? Oder sollte da was anderes rein gehen?

Oder erstelle ich einfach eine Android.mk-Datei und wenn ja, wo (da es keinen jni-Ordner gibt, nur einen cpp-Ordner)? Und wie kann ich Android Studio mitteilen, wo sich meine Android.mk-Datei befindet?

Vielen Dank!

6
Josiki

Ich habe alle Tutorials von der Gstreamer-Site zum Laufen gebracht, aber es war sehr schwierig. Um anderen Menschen zu helfen, habe ich es dokumentiert. Hier ist das Tutorial für linux (ubuntu) , es könnte aber auch unter Windows funktionieren. Wenn Sie Fragen dazu haben, fragen Sie einfach:) ... Ich werde auch ein Projekt von gitlab verlinken, das in Android Studio ausgeführt werden kann :
(Tutorial 5) https://gitlab.com/eduardoprado/gstreamer-tutorial5.git
(Tutorial 2) https://gitlab.com/eduardoprado/gstreamer-tutorial2.git

Verwenden der Bibliothek in Android Studio

Der beste Weg, um GStreamer zu verstehen und in das Projekt zu integrieren, sind die Tutorials auf dieser Site: Entschuldigung, Sie müssen den Link selbst finden, ich habe keinen guten Ruf, um den direkten Link zu posten
Diese Tutorials sind jedoch alt und wurden für die Arbeit in Eclipse entwickelt. Um mit Android Studio arbeiten zu können, ist Folgendes erforderlich:

1. Importieren Sie die Tutorials mit der Import-Option von Android Studio.
2. Stellen Sie Android Studio so ein, dass NDK verwendet wird.
3. Legen Sie eine Variable in der Datei "Android.mk" fest.
4. Set Gradle kompiliert nur einige Architekturen.
5. Kopieren Sie die Gstreamer-Klasse in den richtigen Pfad.
6. Deaktivieren Sie "Instante Run" in Android Studio. (Änderung am 27.10.2017 vorgenommen)
7. Fix "Linker Gold Argument" (Änderung nur für WINDOWS-Benutzer am 28.11.2017)

Jede dieser Anweisungen wird in den folgenden Abschnitten erläutert:

1. Importieren Sie die Tutorials mit der Importoption von Android Studio.

Android Studio bietet die Möglichkeit, Projekte von anderen IDEs zu importieren. Führen Sie die folgenden Schritte aus, um das in Eclipse erstellte Gstreamer-Projekt zu importieren:
1. Lade alle Tutorials von git herunter:;
2. Gehen Sie in Android Studio zu Datei -> Neues Importprojekt.
3. Gehen Sie im neuen Browser für den Datei-Bildschirm zu "gst-docs", wählen Sie das gewünschte Projekt (in meinem Fall Tutorial 5) "Android-Tutorial-5" und klicken Sie auf "OK".

 Selecting Project

2. Richten Sie Android Studio für die Verwendung von NDK ein

Nachdem das Projekt importiert wurde, muss Android Studio darüber informiert werden, dass das Projekt das NDK-Framework verwendet. Auf diese Weise kann der Gradle alle Abhängigkeiten importieren und verarbeiten. Dazu müssen wir die Datei Android.mk (bereits im Tutorial-Ordner) verlinken:
1. Klicken Sie mit der rechten Maustaste auf "App" in der linken Navigationsregisterkarte
2. Klicken Sie auf "C++ Projekt mit Gradle verknüpfen"
3. Im neuen Fenster:

  • Ändere "Build System" von "CMake" zu "ndk-build"
  • Klicken Sie auf "..." und navigieren Sie zum Speicherort von Android.mk "/AndroidStudioProjects/Android-studio-5/app/src/jni/Android.mk"
  • Klicken Sie auf OK

Jetzt werden externe Build-Dateien auf der linken Registerkarte des Projekts angezeigt. Es werden auch einige Fehler angezeigt, die normal sind und in den nächsten Abschnitten behoben werden.

3. Setze eine Variable in der “Android.mk” Datei

Der letzte Abschnittsfehler tritt auf, weil "Android.mk" den Pfad zu dem Speicherort, an dem GStreamer extrahiert wurde, nicht finden kann. Setzen wir also die Variable GSTREAMER_ROOT_Android auf den Pfad, in den GStreamer extrahiert wurde. Um das zu erreichen:
1. Durchsuchen Sie die linke Registerkarte und erweitern Sie "External Build FIles";
2. Doppelklicken Sie auf Android.mk, um die Datei zu öffnen.
3. Geben Sie in Zeile 10 unter "include $ (BUILD_SHARED_LIBRARY)" Folgendes ein:
- "GSTREAMER_ROOT_Android: = Pfad "
-NEINAnführungszeichen
- path ist der Pfad (offensichtlich), unter dem GStreamer extrahiert wurde.
Danach wird Gradle synchronisiert und ein Fehler "*** Target Arch ABI nicht unterstützt: Mips. Stop" wird angezeigt.

 Setting GSTREAMER_ROOT_Android

4. Setze Gradle, kompiliere nur einige Architekturen

Der letzte Abschnittsfehler tritt auf, weil Grade versucht, für verschiedene Architekturen zu erstellen, die zu erstellende Datei jedoch nicht in MIPS gefunden wird. Um dieses Problem zu lösen, geben wir die zu erstellenden Architekturen ohne MIPS an:
1. Erweitern Sie auf der linken Registerkarte des Browsers Gradle Scripts.
2. Doppelklick auf "build.gradle (Modul: app)"
3. In der Zeile unter "Modulname" geben Sie ein:
(um Tutorial 5 auszuführen)
- abiFilters 'x86', 'armeabi', 'armeabi-v7a', 'arm64-v8a'
(um Tutorial 2 auszuführen)
- abiFilters 'x86', 'armeabi-v7a', 'arm64-v8a'
(edit 21.11.2017: Vor kurzem hatte ich Probleme mit arm64-v8a ... Geräte mit 64 Bit zeigen kein Live-Streaming an, ich habe auch "arm64-v8a entfernen" behoben)
(am 29.03.2008 bearbeitet)

 enter image description here

5. Kopieren Sie die Gstreamer-Klasse in den richtigen Pfad.

Die letzte erforderliche Konfiguration betrifft einen Paketimport in der Main-Klasse.

 Class import error

Der oben gezeigte Fehler tritt auf, weil es keine GStreamer-Klasse gibt, um die Funktion ".init" abzurufen. Um dies zu lösen, müssen wir die Klasse GStreamer aus der Datei kopieren, aus der sie extrahiert wurde, und am angegebenen Pfad einfügen:

  1. Navigieren Sie mit dem Dateimanager Ihres Systems zu der Datei, in die Sie GStreamer extrahiert haben.
  2. Navigieren Sie in der extrahierten Datei zum Speicherort der GStreamer-Klasse. Es befindet sich unter /arm/share/gst-Android/ndk-build/GStreamer.Java. Kopieren Sie GStreamer.Java
  3. Kehren Sie zu Android Studio zurück und erstellen Sie den Importpfad, auf den die Main-Klasse zuzugreifen versucht, beginnend mit/app/Java auf der linken Registerkarte des Browsers. Im obigen Bild müssen wir den Pfad org.freedesktop.gstreamer erstellen und die Datei GStreamer.Java einfügen:
  4. Klicken Sie mit der rechten Maustaste auf Java-Ordner
  5. Neu-> Paket
  6. Geben Sie org.freedesktop.gstreamer ein
  7. Rechtsklick auf org.freedesktop.gstreamer und Einfügen 5. Der Importfehler ist nun behoben, aber die neue Klasse weist Fehler auf. Um sie zu lösen, müssen Sie lediglich das "@" und alles, was sich zwischen dem "@" befindet, aus der kopierten Klasse löschen.

6. Deaktiviere "Instante Run" in Android Studio. (Änderung am 27.10.2017 vorgenommen)
Diese Funktion von Android Studio kann Probleme verursachen, wenn Sie versuchen, das Projekt auszuführen. Es empfiehlt sich daher, sie zu deaktivieren.
Deaktivieren von "Instante Run":

1. Gehen Sie in Android Studio zu "Datei" -> "Einstellungen ..." (Strg + Alt + S)
2. "Build, Execution, Deployment" -> "Instant Run"
3. Deaktivieren Sie "Sofortige Ausführung für Hot-Swap-Code-/Ressourcenänderungen bei der Bereitstellung aktivieren (Standardeinstellung aktiviert)".
4. Klicken Sie auf "Übernehmen"

7. Fix "Linker Gold Argument" (nur für WINDOWS Benutzer)

Wenn Sie versuchen, auf Windows zuzugreifen, erhalten Sie folgende Fehlermeldung:
Error:error: invalid linker name in argument '-Fuse-ld=gold'
Etwas reparieren:
1. Zum Android NDK Linker (GStreamer) - ungültiger Linkername -Fuse-ld = gold
2. Folgen Sie den Anweisungen von Antoine Zambelli .

15

Nach ein paar Tagen mit Schwierigkeiten stellte ich fest, dass die Dokumentation zum gstreamer-Tutorial aktualisiert wurde, um das Gradle-Build-System zu verwenden. Ein vollständiges Arbeitsbeispiel finden Sie in https://cgit.freedesktop.org/gstreamer/gst-docs/ (siehe Festschreiben vom 14. Juni 2018, "Android-Tutorials: Gradle Build System hinzufügen").

1
avlacatus