Wykonałem wszystkie tutoriale z witryny Gstreamer, ale było to bardzo trudne. Aby pomóc innym ludziom, udokumentowałem to. Oto samouczek dla linux (ubuntu), ale może również działać na windows, jeśli masz jakiekolwiek pytania dotyczące tego, po prostu zapytaj:) ... Łączę również projekt z gitlab gotowy do uruchomienia w Android Studio:
(samouczek 5) https://gitlab.com/eduardoprado/gstreamer-tutorial5.git
(samouczek 2) https://gitlab.com/eduardoprado/gstreamer-tutorial2.git
Korzystanie z biblioteki na Androida Studio
najlepszym sposobem, aby zrozumieć i zintegrować GStreamer do projektu robi tutoriale w tym miejscu: Niestety, masz aby znaleźć link sam, nie mam reputacji, aby opublikować bezpośredni link
Jednak te ćwiczenia są stare i zostały wykonane do pracy w Eclipse, aby pracować z systemem Android Studio jest niezbędne do:
1. Zaimportuj ćwiczeń wykorzystujących opcję Importuj Android przez studio;
2. Ustaw Android Studio na używanie NDK;
3. Ustaw zmienną w pliku "Android.mk";
4. Ustaw Gradle kompilacji tylko niektóre architektury;
5. Skopiuj klasę Gstreamer do poprawnej ścieżki.
6. Wyłącz "Instante Run" w Android Studio. (Edit wykonany 10/27/2017)
7. Fix "łącznik złoto argument" (edycja wykonana tylko 11/28/2017 użytkownicy Windows)
Każda z tych instrukcji zostanie wyjaśnione w następujących sekcjach:
1. Importowanie tutoriale wykorzystujące opcję Importuj Android przez studio
Android Studio posiada opcję importu z innego projektu IDE. Aby zaimportować projekt Gstreamer do Eclipse, wykonaj następujące kroki:
1. Pobierz wszystkie samouczki z git:;
2. W Android Studio przejdź do Plik -> Nowy projekt importu;
3. W nowej przeglądarce ekranu pliku przejdź do "gst-docs", wybierz żądany projekt (w moim przypadku tutorial 5) "android-tutorial-5" i naciśnij "OK".
2. Ustaw Android Studio używać NDK
teraz, że projekt został przywieziony, konieczne jest poinformowanie Android Studio że projekt wykorzystuje ramy NDK. Dzięki temu Gradle będzie mógł importować i obsługiwać wszystkie zależności. Aby to zrobić, musimy połączyć plik Android.mk (już w folderze samouczka):
1. Kliknij prawym przyciskiem myszy "app" w lewej karcie nawigacji
2. Kliknij na "Link C++ Project with Gradle"
3. W nowym oknie:
- Change "Budowa systemu" od "" do "CMake NDK-build"
- Kliknij na "..." i przejdź do lokalizacji Android.mk za " /AndroidStudioProjects/android-studio-5/app/src/jni/Android.mk "
- Hit OK
Teraz zewnętrzne pliki konstrukcyjne pojawią się w lewej karcie projektu. Pojawią się również niektóre errosy, jest to normalne i zostanie poprawione w następnych rozdziałach.
3. Ustaw zmienną wewnątrz „Android.mk” pliku
Ostatni odcinek błąd zdarza się, ponieważ „Android.mk” nie będzie znaleźć drogę do miejsca, gdzie GStreamer ekstrahowano. Ustawmy zatem zmienną GSTREAMER_ROOT_ANDROID na ścieżkę, w której został wyodrębniony GStreamer. Aby to osiągnąć:
1. Przejrzyj lewą kartę i rozwiń pozycję "Zewnętrzne formularze kompilacji";
2. Kliknij dwukrotnie plik Android.mk, aby otworzyć plik;
3. Na linii 10, pod "obejmują $ (BUILD_SHARED_LIBRARY)" typ:
- "GSTREAMER_ROOT_ANDROID: = ścieżka"
- NO cudzysłów
- ścieżka jest ścieżką (oczywiście) gdzie GStreamer został wyodrębniony.
Po tym, jak Gradle zsynchronizuje się i wystąpi błąd "*** Docelowy łuk ABI nieobsługiwany: mips. Stop" zostanie wyświetlony.
4. Zestaw Gradle skompilować tylko niektóre architektura
Ostatni odcinek błąd występuje, ponieważ klasa stara się budować dla różnych architektur, ale nie znaleźć plik na budowę w MIPS . Aby rozwiązać ten problem, określimy architekturę do zbudowania, wyłączając MIPS:
1. W lewej zakładce przeglądarki rozwiń Skrypty gradientu;
2. Kliknij dwukrotnie na "build.gradle (Module: app)"
3.W linii pod "moduleName" typu:
(uruchomić poradnik 5)
- abiFilters 'x 86', 'armeabi', 'armeabi-v7a', 'arm64-V8A'
(uruchomić poradnik 2)
- abiFiltery 'x86', 'armeabi-v7a', 'arm64-v8a'
(edycja 11/21: Ostatnio miałem problemy z arm64-v8a ... urządzenia z 64 bitami nie będą wyświetlać transmisji na żywo, rozwiązałem "usuwanie arm64-V8A”zbyt)
5. Kopia klasa Gstreamer do prawidłowego p ath.
Ostatnia wymagana konfiguracja dotyczy importu paczki w klasie głównej.
Błąd pokazał powyżej występuje, ponieważ nie ma klasy GStreamer, aby uzyskać funkcję „.init”. Aby rozwiązać ten problem musimy skopiować GStreamer klasy z pliku gdzie ekstrahowano i przeszłości w określonej ścieżce:
- Przeglądaj, korzystając z menedżera plików z systemu do pliku, w którym zostały wyodrębnione GStreamer.
- Z wyodrębnionego pliku przejdź do lokalizacji klasy GStreamer. Znajduje się pod adresem /arm/share/gst-android/ndk-build/GStreamer.java Skopiuj GStreamer.java
- Wróć do Android Studio i utwórz ścieżkę importu, do której stara klasa próbuje uzyskać dostęp, zaczynając od/app/java na lewej karcie przeglądarki. Tak więc, na powyższy obrazek, musimy stworzyć org.freedesktop.gstreamer ścieżkę i wkleić plik GStreamer.java w nim:
- Kliknij prawym przyciskiem myszy na folderze java
- New-> Pakiet
- Rodzaj org.freedesktop .gstreamer
- Kliknij prawym przyciskiem myszy na org.freedesktop.gstreamer i Wklej 5. Błąd importu został rozwiązany, ale nowa klasa zawiera błędy. Aby je rozwiązać, wystarczy usunąć z skopiowanej klasy "@" i wszystko, co znajduje się pomiędzy "@".
6. Wyłącz "instante Run" z Android Studio. (edycja 27/10/2017) Ta funkcja z Android Studio może powodować problemy podczas próby uruchomienia projektu, więc dobrze jest go wyłączyć.
Wyłączenie "instante Run":
1. Na Android Studio przejdź do "Plik" -> "Ustawienia ..." (Ctrl + Alt + S)
2. "Budowanie, wykonanie, wdrożenie" -> " Natychmiastowa Run”
3. Usuń zaznaczenie pola wyboru "Włącz Natychmiastowy biec do zmiany kodu/zasobów hot swap na wdrożeniu (domyślnie włączona)"
4. kliknij "Zastosuj"
7.Naprawić "łącznikiem złoto argument" (tylko użytkownicy systemu Windows)
Podczas próby systemu Windows pojawi się błąd:
Error:error: invalid linker name in argument '-fuse-ld=gold'
go naprawić:
1. Przejdź do Android NDK Linker (GStreamer) - invalid linker name -fuse-ld=gold
2. Wykonaj Antoine Zambelli's instrukcje odpowiedzi.
Jeśli moja odpowiedź pomogła, proszę zaakceptuj to. Dziękujemy –