Sadržaj:
- Korak 1: GStreamer na Raspbian
- 2. korak: Android. Vvedenie. Stvaranje Priloga S NDK, JNI, Kompilacija Ndk-build
- Korak 3: Prikručujemo GStreamer
- Korak 4: Konvejer GStreamer U Kode *.c Android Studio
Video: GStreamer I Android (GStreamer Android Studio Windows): 4 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:32
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šavam komandu «aptitude search gstreamer1.0» ona je dovela do dostupnih instalacijskih paketa;
- potrebno je minimalno uspostaviti sljedeć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-plugins-base-apps »,« gstreamer1.0- plugins-bad »i sve ovisnosti. 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 u kod, potrebno uključiti «#include», pri kompilaciji programa potrebno dobaviti «` pkg-config --cflags --libs gstreamer-1.0` », dobiva tak« 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 s RPI -jem kamera putem gstreamera na mrežama s korištenjem plag udpsink -a potrebno je u konzoli uložiti naredbu:
- 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, width = 1920, height = 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 host-ip-adresa primatelja potoka (pametni telefon na androidu), što čini svaki plagin (fdsrc, h264parse, rtph264pay,…) Možete saznati pomoću pomoćnih naredbi «gst-inspect-1.0 fdsrc», «gst-inspect-1.0 h264parse» i t.d.
Za dobivanje videotoka na web stranici (nakon instalacije gstreamer-a) na mrežama s korištenjem plana udpsrc potrebno je u skladu s tim uložiti 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! videokonverzija! autovideosink sync = false »(u meni Windows 7 64 bit, GStreamer je instaliran u« c: / gstreamer / »).
Zapamtite prvi put da skenirate što za Samsung S7 polučeće video potoka na androidu (isporučuje se pomoću udpsrc) «udpsrc port = 5000! application/x-rtp, encoding-name = H264! rtph264depay! h264parse! amcviddec-omxexynosavcdec! videokonverzija! autovideosink ».
2. korak: Android. Vvedenie. Stvaranje Priloga S NDK, JNI, Kompilacija Ndk-build
Za početak potrebno je normalno stvoriti aplikaciju s NDK-om, JNI-om uz kompilaciju uz pomoć ndk-build (https://developer.android.com/ndk/guides,
- instalira u Windows promjenjivu sredinu «GSTREAMER_ROOT_ANDROID», značenje - pošaljite do kataloga s raspakiranim (instaliranim) bibliotekama gstreamer (unaprijed izgrađen) https://gstreamer.freedesktop.org/data/pkg/android/1.18.3/ (u ovom slučaju « C: / gstreamer », posljednji sléš postaviti ne treba);
- instaliraem NDK, CMake, LLDB (tut tolʹko galočki rasstavitʹ);
- stvorio novo priopćenje s tipkom «Native C ++» (najbolji niz spisa), dodajući sve procese dovršava;
- u lijevom oknu odabirete prikaz «Project» (pojavljujući popis u gornjem gornjem uglu), otkriva vjetku do kataloga «app» uključuje uvršno, nadzire ga u «app» pravoj tipkovnici miša i odabirete izbornik stavki «New-> Folder-> JNI Folder», u pojavljuju se okne sa svim glavnim stavkama «Promijeni lokaciju mape», u pojavljivoj stroke «Nova lokacija mape» ostavljamo stroku «jni/», pritiskom na gumb «Završi», u katalogu «aplikacija» pojavljuje se element «jni»;
- Žmëm pravoj tipkovnici miši na elementu «jni», odabirom izbornika točaka «Novo-> C/C ++ izvorna datoteka», u pojavljivom oknu odabirom proširene datoteke i uvođenjem naziva (ako ništa ne planirate, može, na primjer, ime «lutka»), pritisnite gumb «OK» i bit će stvorena datoteka;
- Žmëm pravoj tipkovnici miša u elementu «jni», izbornik stavki «Novo-> Datoteka», u pojavljivom oknu uvodi ime «Android.mk», minimalno sadržaj, ako ste stvorili «dummy.c» može biti ovako:
LOCAL_PATH: = $ (nazovi moj-dir)
uključuju $ (CLEAR_VARS) LOCAL_MODULE: = lažne LOCAL_SRC_FILES: = lažne.c uključuju $ (BUILD_SHARED_LIBRARY)
Žmëm pravoj tipkovnici miša na elementu «jni», izbornik stavke «Novo-> Datoteka», u pojavljivom oknu uvedeno ime «Application.mk», minimalno sadržaje može biti tako:
APP_ABI: = sve
sada u levom oknu odaberite "Android" (popis koji se nalazi na gornjem vrhu), otkrijte "Gradle Script" i otvorite 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 pravom uglu, ždëm kad proces spokojno zaveršitsâ;
- nakon svih ovih postupaka potrebno je isključiti glavnu tipku miša na elementu "app" i zaključati to u izborniku koji će se pojaviti tako nužnim nam stavkom izbornika "Link C ++ Project with Gradle", nadgledajte ga.
- Pojavljuje se ok, u roku od točke «Build System» umjesto «CMake» potrebno je u spisku odabrati «ndk-build», nakon čega u «Project Path» unesite put do datoteke «Android.mk» (u oknu za odabir datoteke 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 projekt« Datoteka-> Sinkroniziraj projekt s datotekama Gradle ».
- U našem stambenom prostoru, u katalogu «cpp» pojavljuju se dopunjene datoteke s nama, ali samo glavno - to je to, što znači da se normalno provode, ako ste na pogrešnoj stranici (upute za načine: https://developer.android.com/ndk /sample/sample_hellojni#java).
Korak 3: Prikručujemo GStreamer
Postupak prikručivanja biblioteka gstreamer (verzija biblioteke 1.18.3, verzija Android Studio 4.1.2):
- Napravljen projekt s NDK, JNI, kompilacija ndk-build (Korak 2).
- Podržava «Android.mk» preuzeto iz «tutorial_1» primjenom gstreamera i modificirano, raspakiralo je biblioteke za android u katalogu «C: / gstreamer \», datoteka na jezicima je nazvana (i prethodno je dodano u mapu «jni» projekta) «gst_tut_01.c », u skladu s tim dijeljena biblioteka (koja će biti sakupljena iz ove datoteke) nazvana je« gst_tut_01 »(ja sam biblioteka datoteka, odgovarajuće će se 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 iFek ($ (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 GSTREAMER_REUX GSTREAMER_NDK_BUILD_PATH)/gstreamer-1.0.mk
Obratite pažnju, što je u «Android.mk», ne ovisi o platformama (Windows, Linux), put se propisuje kroz «/».
Nužno stvorite blok «externalNativeBuild {…}» u datotekama «build.gradle Module: app» u odjeljku «defaultConfig» (prikazuje se na početku bloka, kako bi bilo vidno kuda umetati)
defaultConfig {
applicationId "com.example.test_gst_01" minSdkVersion 23 targetSdkVersion 28 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner. AndroidJUnitRunner" externalNativeBuild {ndkBuild {def gstRoot '(project) = project (g ProjectRoot), MIPS i MIPS64 su podržani abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'}}}
Ostale postavke na ovom opisanju: 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ćenitom slučaju, ako android studio nije uvijek uobičajeno prema zadanim postavkama primao biblioteku «libc ++ _ shared.so», stoga bolje ako na vašem «Android.mk» umjesto stroki «LOCAL_SHARED_LIBRARIES: = gstreamer_android» će biti «LOCAL_SHARED_LIBRARIES: = gstreamer_ », U Android Studio 3.5.1 također u datotekama« Application.mk »dodaju stročku« APP_STL: = c ++ _ shared »;
- prije nego što započnete pisati kod na Javi, za isključivanje problema s uvozom «org.freedesktop.gstreamer. GStreamer» kataloga s raspakiranim prethodnim mogućnostima prilagođenim bibliotekama (u meniju je «C: / gstreamer / arm64 / share / gst-android / ndk-build / ») Skopirajte datoteku« GStreamer.java »(ove datoteke na svim arhitektonskim verzijama) i postavite je u projekt u paketu« org.freedesktop.gstreamer », u svom sljedećem programu za ovaj studio u Androidu potrebno je isključiti prikaz drvenih projekata na« Androidu », klikanjem pravih tipki miša na elementu «java» i odabirom stavke izbornika «Novo-> Paket», pojavljuje se dijalog «Odaberite odredišni direktorij», odabire «… / app / src / main / java», žmëm «OK», pojavljuje se dijalog « Novi paket », u stroke uvoda morate uvesti« org.freedesktop.gstreamer », u drvetu će se pojaviti stvoreni element, a zatim je potrebno pritisnuti novu tipku na novom elementu i odabrati izbornik« Zalijepi ». U datotekama «GStreamer.java» bit će prikazane pogreške, kako bi ih se moralo ukloniti sve riječi vidljive « @… što je napisano… @»;
- ako planirate koristiti androidmedia plaginu (a to je gotovo 100 %), to je nužno iz kataloga s raspakiranim prethodnim, potpuno sigurnim bibliotekama (u meniju je ovo «C: / gstreamer / arm64 / share / gst-android / ndk-build \») skopirati katalog «androidmedia »(U roku od 3 datoteke.java) i postavite ga u paket« org.freedesktop.gstreamer »;
- u procesu stvaranja kode na «si» android studiju bit će rugatʹsâ, što ne može pronaći «#include», ali ako se izvrši naredba «Datoteka-> Poništi predmemoriju/ponovno pokretanje», to znači da će sve biti ravnopravno. na ovom «#include» no sborka će normalno ići (u slučaju da je dovoljno 1 put izvršiti proceduru, nakon što ste na ruganj android studio stali na metode iz «gst/gst.h»);
- ako se zbirka završava greškom, 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 je sve u najnovijoj verziji (u koncertu ne dolžno bytʹ probelov);
- preporučujemo oznakomiti se s ovom člankom: https://habr.com/ru/post/270479/, u njezinoj prilogu «Metode liječenja različitih pogrešaka u Android Studiju pri razvoju projekta».
Korak 4: Konvejer GStreamer U Kode *.c Android Studio
Itak, GStreamer ubraja zarabotal, krajnje mjere rade na tutorial_1… tutorial_3 iz dokumentacije «GStreamer Android Tutoriali» (ne gledaju se na to, što su u pametnim telefonima oni pustili, moja varijanta, temeljena na tutorial_3 u émulatorom vyletaet).
No, evo s konvejerom, u skladu s ovom informacijom: https://gstreamer.freedesktop.org/documentation/installing/for-android-development.html#using-androidstudio u androidu postoji svoj dekoder videa, koji se naziva «androidmedia» i nalazi se u kategorijama «GSTREAMER_PLUGINS: = $ (GSTREAMER_PLUGINS_CODECS)», takav plan u biblioteci 1.15.2 GStreamer za Android Studio postoji, ali će aplikacija biti dostupna za pronalaženje njega (androidmedia) ne može. A ne može se pronaći jer se traži drugo (https://www.ohandroid.com/67892.html), a upravo (u najboljem slučaju za telefon Samsung S7) «amcviddec-omxexynosavcdec», gdje prefiks «amcviddec-» uvijek odin i to že (za sve telefone), ali naimenovani drugi dijelovi mogu se sastaviti iz informacija u datotekama «/etc/media_codecs.xml» (datoteka se nalazi u pametnim telefonima, a mi smo ih pokrenuli uz pomoć Total Commander), posebno za mobitel u datotekama koje sadrže zapise «<MediaCodec name =”OMX. Exynos.avc.dec” type =”video/avc”> », (avc - ovaj kodek h264, za kodeku h265 bit će hevc, a za h263 - h263) u skladu s tim ubirate ime kodeka točaka i zapisujete sve malene bukvice dobivate «omxexynosavcdec», sada smo se odredili s imenom plagina - dekodera «amcviddec -omxexynosavc.
Daleko je potrebno uspostaviti prava u prilozima za programe:
Plaginy u «Android.mk»:
LOCAL_PATH: = $ (nazovi moj-dir)
uključuju $ (CLEAR_VARS) LOCAL_MODULE: = 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 $ (! pogreš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_ROTROG_TROJEK) $ dijeljenje/gst-android/ndk-build uključuje $ (GSTREAMER_NDK_BUILD_PATH) /plugins.mk GSTREAMER_PLUGINS: = $ (GSTREAMER_PLUGINS_CORE) $ (GSTREAMER_PLUGINS_PLAYBACK) $ (GSTREER_ER_REGSTINS) 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 da previše plagira (pri kompilaciji veličina papira projekta izražava do 1, 9 Gbajta), ali u mom konvejeru ne startuje na drugom mjestu, može se dogoditi da neki plagini ne ometaju - potrebno je testirati.
Preporučeni:
Kako Windows 7 izgledati kao Windows 95: 7 koraka
Kako Windows 7 izgledati kao Windows 95: Želim vam pokazati kako Windows 7 izgledati kao Windows 95, a uključio sam i dodatni korak kako bi izgledao kao Windows 98, a namijenjen je i ljudima koji žele napraviti svoj Windows 7 izgledati kao Windows 98. Za ljude koji žele da Windows 7 izgleda
Izradite nosivi uređaj za praćenje kretanja (BLE od Arduina do prilagođene aplikacije za Android Studio): 4 koraka
Izradite 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 niske snage. Nosivi uređaji, poput pametnih odjevnih predmeta koje pomažem dizajnirati na Predictive Wear -u, moraju ograničiti potrošnju energije kad god je to moguće kako bi se produljilo trajanje baterije i često koriste BLE
Windows pošta Windows 7: 14 koraka
Windows Mail Windows 7: Konfigurirajte e-poštu u sustavu Windows Mail Windows 7 (samo za Windows 7 i 8) Ovo uputstvo vodi vas kako biste privukli sve kako biste konfigurirali de-račun korisničke pošte za postavljanje elektroničke pošte u sustavu Windows Mail (za korisnike sustava Windows 7
Spasite Windows izvan ekrana odmah (Windows i Linux): 4 koraka
Spasite Windows izvan ekrana odmah (Windows i Linux): Kad se program pomakne izvan zaslona - možda na drugi monitor koji više nije povezan - potreban vam je brz i jednostavan način premještanja na trenutni monitor. Ovo ja radim -NAPOMENA --- Zamaglio sam slike radi privatnosti
Orange PI HowTo: Sastavite Sunxi alat za Windows u sustavu Windows: 14 koraka (sa slikama)
Orange PI HowTo: Sastavite Sunxi alat za Windows u sustavu Windows: PREDUVJETI: Trebat će vam (stolno) računalo sa sustavom Windows. Internet veza. Narančasta PI ploča. Posljednja je izborna, ali siguran sam da je već imate. Inače nećete čitati ove upute. Kad kupujete narančasti PI grijeh