Sadržaj:
- Korak 1: GStreamer na Raspbian
- Korak 2: Android. Vvedenie. NDK, JNI, Kompilacija Ndk-build
- Korak 3: Prikručivaem GStreamer
- Korak 4: Konvejer GStreamer u Kode *.c Android Studio
Video: GStreamer I Android (GStreamer Android Studio za Windows): 4 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:04
Verzija biblioteke GStreamer:
- na RPi 3B (Raspberry OS Buster) 1.14.4,
- na Android 1.18.3.
Verzija Android Studio 4.1.2, OS Windows 7 x86-64.
Korak 1: GStreamer na Raspbian
Postavite gstreamer (https://gstreamer.freedesktop.org/documentation/installing/index.html) na Raspberry Pi:
- izvršava komandu «aptitude search gstreamer1.0» ona nudi dostupne instalacijske pakete;
- potrebno je minimalno uspostaviti sledeće pakete: «gstreamer1.0-tools», «gstreamer1.0-plugins-good», «gstreamer1.0-plugins-good-doc», «gstreamer1.0-plugins-base», «gstreamer1. 0-doc »,« libgstreamer1.0-0 »,« gstreamer1.0-rtsp »,« libgstreamer-plugins-base1.0-dev »,« gstreamer1.0-dodaci-baza-aplikacija »,« gstreamer1.0- plugins-bad »i sve zavisnosti. Komanda će biti «sudo apt-get install gstreamer1.0-tools gstreamer1.0-plugins-good gstreamer1.0-plugins-good-doc gstreamer1.0-plugins-base gstreamer1.0-doc libgstreamer1.0-0 gstreamer1.0- rtsp libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-base-apps gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly »;
- za uključivanje gstreamer-a u kod, potrebno uključiti «#include», pri kompilaciji programa potrebno je dodati «« pkg-config --cflags --libs gstreamer-1.0` », dobija se« gcc `pkg-config --cflags --libs gstreamer -1.0` basic-tutorial-1.c -o basic-tutorial-1 »;
- za dobivanje ishodnika primjera gstreamer može izvršiti komandu «git clone
Za dobivanje slika sa RPI kamerom putem gstreamer -a na mrežama pomoću platforma udpsink je potrebno ako konsolidujete komandu:
- za kamere RPi: «raspivid -t 999999 -h 1080 -w 1920 -fps 25 -hf -vf -b 6000000 -o -| gst-launch-1.0 -v fdsrc! h264parse! rtph264pay config-interval = 1 pt = 96! udpsink host = 192.168.1.223 port = 5000 »;
- za USB MJPEG kamere: «gst-launch-1.0 v4l2src device =/dev/video0 do-timestamp = true! image/jpeg, širina = 1920, visina = 1080, framerate = 30/1! avdec_mjpeg! omxh264enc control-rate = 1 target-bitrate = 8000000! h264parse! rtph264pay config-interval = 1 pt = 96! udpsink host = 192.168.1.223 port = 5000 »,
gdje je host-ip-adresa primatelja potoka (pametni telefon na androidu), koja radi svaki plan (fdsrc, h264parse, rtph264pay,…) Možete saznati pomoću pomoćnih komandi «gst-inspect-1.0 fdsrc», «gst-inspect-1.0 h264parse» i t.d.
Za dobivanje video prijenosa na web stranici (nakon instalacije gstreamer-a) na mrežama s korištenjem platforma udpsrc potrebno je da zajedno uložite naredbu: «c: / gstreamer / 1.0 / msvc_x86_64 / bin / gst-launch-1.0 -v udpsrc port = 5000! application/x-rtp, encoding-name = H264! rtph264depay! avdec_h264! videoconvert! autovideosink sync = false »(u meniju Windows 7 64 bit, GStreamer je instaliran u« c: / gstreamer / »).
Zapamtite prvi put da skenirate nešto za Samsung S7 polučeće video potoke na androidu (isporučuje se pomoću udpsrc) «udpsrc port = 5000! application/x-rtp, encoding-name = H264! rtph264depay! h264parse! amcviddec-omxexynosavcdec! videoconvert! autovideosink ».
Korak 2: Android. Vvedenie. NDK, JNI, Kompilacija Ndk-build
Da biste započeli, morate normalno stvoriti aplikaciju s NDK-om, JNI-om uz kompilaciju uz pomoć ndk-build (https://developer.android.com/ndk/guides,
- instalira u Windows varijabilnu sredinu «GSTREAMER_ROOT_ANDROID», značenje - pošaljite kataloge sa raspakovanim (instaliranim) bibliotekama gstreamer (unaprijed izgrađen) https://gstreamer.freedesktop.org/data/pkg/android/1.18.3/ (u ovom slučaju « C: / gstreamer », poslednji korak nije potrebno postaviti);
- instalira NDK, CMake, LLDB (ovde se nalaze samo galički diskovi);
- kreiran novo izdanje s tipkom «Native C ++» (najbolji popis), dodaje sve procese;
- u levom oknu izaberete prikaz „Project“(pojavljujući spisak u gornjem gornjem uglu), otvorivši prozor do kataloga „app“, uključite unosno, nadzirajte „app“na tasterima miša i izaberite stavku „New-> Folder-> JNI Folder», u pojavljuju se okne sa svim glavnim stavkama «Promijeni lokaciju mape», u pojavljivoj liniji «Nova lokacija mape» ostavljamo stroku «jni/», pritiskom na gumb «Završi», u katalogu «aplikacija» pojavljuje se element «jni»;
- Žmëm pravoj tipki miša na elementu «jni», izbornik tačaka «Novo-> C/C ++ izvorna datoteka», u kojem se pojavljuju okne za odabir proširene datoteke i naziv naslova (ako ništa ne možete planirati, na primjer, dajte ime «lutka»), pritisnite dugme «OK» i bit će stvorena datoteka;
- Žmëm pravoj tipkovnici miša u elementu «jni», izbornik stavki «Novo-> Datoteka», pojavit će se oknom sa imenom «Android.mk», minimalnim sadržajem, ako ste stvorili «dummy.c» može biti ovako:
LOCAL_PATH: = $ (nazovi moj-dir)
uključuje $ (CLEAR_VARS) LOCAL_MODULE: = lažna LOCAL_SRC_FILES: = dummy.c uključuje $ (BUILD_SHARED_LIBRARY)
Žmëm pravoj tipki miša na elementu «jni», izbornik stavki «Novo-> Datoteka», u pojavljivom oknu sa imenom «Application.mk», minimalno sadržaje može biti ovako:
APP_ABI: = sve
sada u levom oknu odaberite "Android" (popis koji se nalazi u gornjem desnom uglu), otvara "Gradle Script" i otvara datoteku "build.gradle Module: app", u datotekama koje su uključene uključujući takve stavke:
ExternalNativeBuild {
CMake…}
- zadržava i žmëm «sync gradle» u gornjem desnom uglu, ždëm kada proces spokojno završi;
- nakon svih ovih postupaka potrebno je isključiti glavnu tipku miša na elementu „aplikacija“i pokrenuti izbornik koji će se pojaviti tako nužnom stavkom izbornika „Link C ++ Project s Gradle“, nadimajte ga.
- Pojavljuje se ok, u roku od trenutka u „Build System“umjesto „CMake“potrebno je da izaberete „ndk-build“, nakon čega u „Project Path“postavite datoteku na „Android.mk“(u oknu u kojoj se nalazi datoteka koja uključuje kombinaciju tipki « Ctrl + 2 », razrađuje katalog projekata, više« app/jni », odabire stvorenu datoteku« Android.mk », nadgleda« OK »), pokreće sinhronizaciju procesa, bilo da inicira svoj« File-> Sync Project with Gradle Files ».
- U našem stanu, u katalogu «cpp» pojavljuju se dopunjene datoteke s datotekama, ali samo glavno - to je to, što znači da se u potpunosti provode programi ako ste na pogrešnoj stranici (https://developer.android.com/ndk /sample/sample_hellojni#java).
Korak 3: Prikručivaem GStreamer
Proces prikručivanja biblioteka gstreamer (verzija biblioteke 1.18.3, verzija Android Studio 4.1.2):
- Napravljen projekat sa NDK, JNI, kompilacija ndk-build (Korak 2).
- Podržava «Android.mk» preuzeto iz «tutorial_1» primjenom gstreamera i modificiranim, otvarajući biblioteke za android u katalogu «C: / gstreamer \», datoteka na jezicima je nazvana (i prethodno je dodana u mapu «jni» projekta) «gst_tut_01.c », odgovarajuća zajednička biblioteka (koja će biti sakupljena iz ove datoteke) nazvana je« gst_tut_01 »(ja sam biblioteka datoteka, koja će se odgovarajuće zvati« libgst_tut_01.so »).
LOCAL_PATH: = $ (nazovi moj-dir)
uključuju $ (CLEAR_VARS) LOCAL_MODULE: = gst_tut_01 LOCAL_SRC_FILES: = gst_tut_01.c LOCAL_SHARED_LIBRARIES: = gstreamer_android LOCAL_LDLIBS: = -llog uključuju $ (BUILD_SHARED_LIBRARY) ifeq ($ (TARGET_ARCH_ABI), armeabi-V7A) GSTREAMER_ROOT: = C: / gstreamer / ARMv7 GSTREAMER_NDK_BUILD_PATH: = C:/gstreamer/armv7/share/gst-android/ndk-build/else ifeq ($ (TARGET_ARCH_ABI), arm64-v8a) GSTREAMER_ROOT: = C:/gstreamer/arm64 GSTREAMER_NDK_BUILD_PATH: = C:/gstreamer share/gst-android/ndk-build/else ifeq ($ (TARGET_ARCH_ABI), x86) GSTREAMER_ROOT: = C:/gstreamer/x86 GSTREAMER_NDK_BUILD_PATH: = C:/gstreamer/x86/share/gst-android/ndk-build ife ($ (TARGET_ARCH_ABI), x86_64) GSTREAMER_ROOT: = C:/gstreamer/x86_64 GSTREAMER_NDK_BUILD_PATH: = C:/gstreamer/x86_64/share/gst-android/ndk-build/endif GSTREMER_LUEX GSTREAMER_NDK_BUILD_PATH) /gstreamer-1.0.mk
Obratite pažnju, što je u «Android.mk», ne zavisi od platformi (Windows, Linux), pa se propisuje kroz «/».
Nužno stvorite blok «externalNativeBuild {…}» u datotekama «build.gradle Modul: aplikacija» u odjeljku «defaultConfig» (prikazuje se s početnom blokom, kako biste mogli vidjeti na ekranu)
defaultConfig {
applicationId "com.example.test_gst_01" minSdkVersion 23 targetSdkVersion 28 versionCode 1 verzijaIme "1.0" testInstrumentationRunner "android.support.test.runner. AndroidJUnitRunner" externalNativeBuild {ndkBuild {def gstRoot '(project) = project (project), MIPS i MIPS64 su podržani abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'}}}
Ostale postavke za ovo opisivanje: https://stackoverflow.com/questions/45044210/gstreamer-examples-in-android-studio. Ako rezimirate, tako ćete dobiti:
- stvorioëm kod na si;
- traži se u opštem slučaju, ako android studio nije uvek uobičajeno, podrazumevano pribavlja biblioteku «libc ++ _ shared.so», stoga je bolje da na vašem «Android.mk» umesto stroki «LOCAL_SHARED_LIBRARIES: = gstreamer_android» će biti «LOCAL_SHARED_LIBRARIES: = gstreamer_ », U Android Studio 3.5.1 takođe u datotekama« Application.mk »dodaju stročku« APP_STL: = c ++ _ shared »;
- pre nego što započnete pisanje koda na Javi, za isključivanje problema sa uvozom «org.freedesktop.gstreamer. GStreamer» kataloga sa raspakovanim unapred dostupnim sopstvenim bibliotekama (u meniju je «C: / gstreamer / arm64 / share / gst-android / ndk-build / ») Skopirajte datoteku« GStreamer.java »(ove datoteke na svim arhitektonskim verzijama) i umetnite je u projekt u paketu« org.freedesktop.gstreamer », u svom sljedećem programu za ovaj studio u Androidu potrebno je uključiti drvenu sliku na« Android », klikanjem pravih tipki miša na elementu «java» i odabirom izbornika točaka «Novo-> Paket», pojavljuje se dijalog «Odaberite odredišni direktorij», odabire «… / app / src / main / java», žmëm «OK», pojavljuje se dijalog « Novi paket », u stroke za uvođenje morate unijeti« org.freedesktop.gstreamer », u drvetu će se pojaviti stvoreni element, nakon čega je potrebno pritisnuti novu tipku na novom elementu i odabrati izbornik« Zalijepi ». U datoteci «GStreamer.java» bit će prikazane pogreške, ako ih želite popraviti potrebno je izbrisati sve riječi vidljive « @… što je napisano… @»;
- ako planirate koristiti androidmedia plaginu (a to je skoro 100 %), potrebno je iz kataloga sa raspakovanim prethodnim, potpuno besplatnim bibliotekama (u meniju je ovo «C: / gstreamer / arm64 / share / gst-android / ndk-build \») skopirajte katalog «androidmedia »(U roku od 3 datoteke.java) i postavite ga u paket« org.freedesktop.gstreamer »;
- U procesu stvaranja kode na "si" android studiju radit će se, ali ne može se pronaći "#include", ali se ovo mora ponoviti ako se izvrši naredba "Datoteka-> Poništi predmemoriju/ponovno pokretanje", što je sasvim dovoljno za jedan način, pozvaće ga potpuno ravnopravno na ovom «#include» no sborka će normalno ići (u slučaju da je potrebno 1 put da izvršite proceduru, nakon što ste učitali ruganj android studio na metode iz «gst/gst.h»);
- ako zbirka završi grešku, na primjer «android studio gstreamer make: *** Nema pravila za postavljanje cilja tutorial_02.c, potrebno tutorial_02.o», samo pažljivo provjerite vaš «Android.mk» koji prikazuje sve u najnovijem simbolu (u konceptu ne dolžno bytʹ probelov);
- Preporučujemo označavanje sa ovom člankom: https://habr.com/ru/post/270479/, u njenoj prilogu «Metode liječenja različitih pogrešnih programa u Android Studiju za razvoj projekta».
Korak 4: Konvejer GStreamer u Kode *.c Android Studio
Itak, GStreamer nudi zarabotalan rad, krajnje mere koje rade tutorial_1… tutorial_3 iz dokumentacije «GStreamer Android Tutoriali» (ne gledaju se na to, što su u pametnim telefonima oni pustili, moja varijanta, zasnovana na tutorial_3 u emulatornim verzijama).
No, evo s konvejerom, u skladu s ovom informacijom: https://gstreamer.freedesktop.org/documentation/installing/for-android-development.html#using-androidstudio u androidu postoji vaš dekoder videa, koji se naziva "androidmedia" i nalazi se u kategorijama «GSTREAMER_PLUGINS: = $ (GSTREAMER_PLUGINS_CODECS)», takav program za plaćanje u biblioteci 1.15.2 GStreamer za Android Studio ima, ali aplikacija će biti dostupna za pronalaženje (androidmedia) ne može. A ne može se pronaći jer se traži da se zove S druge strane (https://www.ohandroid.com/67892.html), upravo (u najboljem slučaju za telefon Samsung S7) «amcviddec-omxexynosavcdec», gdje se nalazi «amcviddec-» uvijek i za svaki telefon (za sve telefone)), ali naimenovane druge dijelove možete sastaviti iz informacija u datotekama «/etc/media_codecs.xml» (datoteka se nalazi u pametnim telefonima, ja sam pokretao pomoću Total Commander -a), posebno za mobitel u datotekama koje sadrže sadržaj «<MediaCodec name =”OMX. Exynos.avc.dec” type =”video/avc”> », (avc - ovaj kodek h264, za kodeku h265 će biti hevc, a za h263 - h263) u skladu s tim koristi imeničke kodeke tačke i zapisuje sve male mačke bukvicama koji dobijaju «omxexynosavcdec», sada smo identificirali sa imenom platina - dekodera «amcviddec -omxexynosavc.
Daleko je potrebno uspostaviti prava na priloge za programe:
Plaginy u «Android.mk»:
LOCAL_PATH: = $ (nazovi moj-dir)
(CLEAR_VARS) LOCAL_MODULE uključuju $: = gstvideoget LOCAL_SRC_FILES: = gstvideoget.c LOCAL_SHARED_LIBRARIES: = gstreamer_android C ++ _ dijeli LOCAL_LDLIBS: = -llog -landroid uključuju $ (BUILD_SHARED_LIBRARY) ifndef GSTREAMER_ROOT_ANDROID $ (! Greška GSTREAMER_ROOT_ANDROID nije definiran) endif ($ ifeq (TARGET_ARCH_ABI), armeabi-v7a) GSTREAMER_ROOT: = $ (GSTREAMER_ROOT_ANDROID)/armv7 else ifeq ($ (TARGET_ARCH_ABI), arm64-v8a) GSTREAMER_ROOT: = $ (GSTREABER_ROORE_TROFER_TRO) = $ (GSTREAMER_ROOT_ANDROID)/x86 else ifeq ($ (TARGET_ARCH_ABI), x86_64) GSTREAMER_ROOT: = $ (GSTREAMER_ROOT_ANDROID)/x86_64 else $ (greška Ciljni luk ABI nije podržan: $ (TARGET_ARCH_ABI) GI) GI dijeljenje/gst-android/ndk-build uključuje $ (GSTREAMER_NDK_BUILD_PATH) /plugins.mk GSTREAMER_PLUGINS: = $ (GSTREAMER_PLUGINS_CORE) $ (GSTREAMER_PLUGINS_PLAYBACK) $ (GSTREAMER_PLUGSS) GRESTER UGINS_CODECS_RESTRICTED) $ (GSTREAMER_CODECS_GPL) $ (GSTREAMER_PLUGINS_ENCODING) $ (GSTREAMER_PLUGINS_VIS) $ (GSTREAMER_PLUGINS_EFFECTS) $ (GSTREAMER_PLUGINS_NET_RESTRICTED) GSTREAMER_EXTRA_DEPS: = gstreamer-player-1.0 gstreamer-video-1.0 glib-2.0 uključuju $ (GSTREAMER_NDK_BUILD_PATH) /gstreamer-1.0.mk
Podržava «Application.mk» (https://developer.android.com/ndk/guides/cpp-support):
APP_ABI: = allAPP_STL: = c ++ _ podijeljeno
Posljednje: moguće je previše plagiranja (pri kompilaciji veličine papira projekcija izražava do 1, 9 GB), ali u mom konvejeru se ne startuje na drugim rakladama, može se desiti da neke ploče ne budu potrebne - potrebno je testirati.
Preporučuje se:
Kako Windows 7 izgledati kao Windows 95: 7 koraka
Kako učiniti da Windows 7 izgleda kao Windows 95: Želim vam pokazati kako da Windows 7 izgleda kao Windows 95, a uključio sam i dodatni korak kako bi izgledao kao Windows 98, a namijenjen je i ljudima koji žele svoj Windows 7 izgledati kao Windows 98. Za ljude koji žele da Windows 7 izgleda
Napravite nosivi alat za praćenje kretanja (BLE od Arduina do prilagođene aplikacije za Android Studio): 4 koraka
Napravite nosivi uređaj za praćenje kretanja (BLE od Arduina do prilagođene aplikacije za Android Studio): Bluetooth Low Energy (BLE) je oblik Bluetooth komunikacije male snage. Nosivi uređaji, poput pametnih odjevnih predmeta koje pomažem u dizajniranju na lokaciji Predictive Wear, moraju ograničiti potrošnju energije kad god je to moguće kako bi se produžio vijek trajanja baterije i često koriste BLE
Windows pošta Windows 7: 14 koraka
Windows Mail Windows 7: Konfigurirajte e-poštu za Windows Mail Windows 7 (samo za Windows 7 i 8) Ovo uputstvo vodi vas kako biste privukli korisnike kako biste konfigurirali e-poštu na računu za postavljanje elektroničke pošte u Windows pošti (za korisnike Windows 7
Spasite Windows izvan ekrana trenutno (Windows i Linux): 4 koraka
Spasite Windows izvan ekrana trenutno (Windows i Linux): Kada se program premjesti izvan ekrana - možda na drugi monitor koji više nije povezan - potreban vam je brz i jednostavan način da ga premjestite na trenutni monitor. Ovo ja radim -NAPOMENA --- Zamaglio sam slike radi privatnosti
Kako Windows 2000 izgledati kao Windows XP: 5 koraka
Kako učiniti da Windows 2000 izgleda kao Windows XP: Tokom ovog vodiča moći ćete učiniti da vaš dosadni Windows 2000 interfejs izgleda baš kao XP uz pomoć nekoliko softvera. Postoji nekoliko stavki koje neće biti uključene, poput izgleda kontrolne ploče i slično. Ti ćeš biti