Мазмуну:
- 1 -кадам: GStreamer на Raspbian
- 2 -кадам: Android. Введение. Создание Приложения С NDK, JNI, Компания Ndk-build
- 3 -кадам: GStreamer программасы
- 4 -кадам: Конвейер GStreamer Коде *.c Android Studio
Video: GStreamer и Android (GStreamer Android Studio Windows): 4 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:36
Версия библиотек GStreamer:
- на RPi 3B (Raspberry OS Buster) 1.14.4,
- на Android 1.18.3.
Версия Android Studio 4.1.2, ОС Windows 7 x86-64.
1 -кадам: GStreamer на Raspbian
Установка gstreamer (https://gstreamer.freedesktop.org/documentation/installing/index.html) на Raspberry Pi:
- выполняем команду «жөндөм издөө gstreamer1.0» оно выведет доступные к установке пакеты;
- необходимо как минимум установить следующие пакети: "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- плагиндер-жаман »и все зависимости. Команда "sudo apt-get 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-чиркин »;
- для включения gstreamer в код, необходимо включить «#include», программаларынын программасы необходимо добавлять «` pkg-config --cflags --libs gstreamer-1.0` », получится так« gcc` pkg-config --cfreams --libs-gflags --lib -1.0` негизги-үйрөткүч-1.c -o негизги-үйрөткүч-1 »;
- для получения исходников примеров gstreamer можно выполнить команду «git clone
Добуш берүү камерасы RPI через gstreamer по сетка привлечение удпсин необходимо в консол ввести команду:
- 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 порт = 5000 »;
- USB MJPEG камерасы үчүн: «gst-launch-1.0 v4l2src device =/dev/video0 do-timestamp = true! image/jpeg, туурасы = 1920, бийиктиги = 1080, кадр ылдамдыгы = 30/1! avdec_mjpeg! omxh264enc көзөмөлдөө ылдамдыгы = 1 максаттуу-бит ылдамдыгы = 8000000! h264parse! rtph264pay config-interval = 1 pt = 96! udpsink хост = 192.168.1.223 порт = 5000 »,
где хост-ip-адрес получателя потока (смартфон на андроид), что делает каждый плагин (fdsrc, h264parse, rtph264pay,…) Сиз "gst-inspect-1.0 fdsrc", "gst-inspect" и т.д.
Документти көрүү видео потока на винде (после установки gstreamer) по спецификация плагина udpsrc необходимо в консоле командов: "c: / gstreamer / 1.0 / msvc_x86_64 / bin / gst-launch-1.0 -v udpsrc порт = 5000! application/x-rtp, encoding-name = H264! rtph264depay! avdec_h264! видеоконвертация! autovideosink sync = false »(Windows 7 64 бит, GStreamer" c: / gstreamer / "менен иштейт).
Самсунг S7 үчүн Samsung S7 получение видео потока на андроид (конвейер с использованием udpsrc) «udpsrc порт = 5000! application/x-rtp, encoding-name = H264! rtph264depay! h264parse! amcviddec-omxexynosavcdec! видеоконвертация! автоовидео ».
2 -кадам: Android. Введение. Создание Приложения С NDK, JNI, Компания Ndk-build
NDK, JNI с помощью ndk-build (https://developer.android.com/ndk/guides, https://habr.com/ru/post/203014/) боюнча нормально создавалось приложение скачать видео
- устанавливаем в Windows переменную среды «GSTREAMER_ROOT_ANDROID», значение - путь до каталога с распакованными (установленными) библиотеками gstreamer (алдын ала курулган) https://gstreamer.freedesktop.org/data/pte «e -e -mail.com C: / gstreamer », последний слэш ставить не нужно);
- устанавливаем NDK, CMake, LLDB (тут только галочки расставить);
- создаём новое приложение с типом «Native C ++» (самый низ списка), дожидаемся пока все процессы завершатся;
- "Долбоор" ("выпадающий список в левом верхнем углу"), "колдонмонун" каттарын толуктоо, "колдонмону" ачуу жана мыши жана выбираем пункт менюсу "Жаңы-> Папка-> Jolder-> появившемся окне ставим галочку "Папканын жайгашуусун өзгөртүү", жана "Жаңы Папканын Жайгашуусу" папкасында "jni/", "Аяктоо" жана каталогдогу "колдонмонун" появится элементи "jni" появившейся строке;
- жмём правой клавишей мыши по элементу «jni», пункт пунктунун менюсу "New-> C/C ++ Source File", появившемся окне выбираем расширение файла, и вводим название (эсли пока ничего не планируется то можерно), нажимаем кнопку «OK» жана түзүлүүчү файл;
- жмём правой клавишей мыши элементтери "jni", пункт пункттарынын менюсу "Жаңы-> Файл", жана "Android.mk" файлдарынын эң кичине варианттары, "dummy.c" эсеби боюнча так маалымат:
LOCAL_PATH: = $ (my-dir чалуу)
$ (CLEAR_VARS) LOCAL_MODULE кирет: = жасалма LOCAL_SRC_FILES: = dummy.c кирет $ (BUILD_SHARED_LIBRARY)
жмём правой клавишей мыши элементтери "jni", пункт пункттарынын менюсу "Жаңы-> Файл", жана "Application.mk" папкалары, минимальное содержимое может быть таким:
APP_ABI: = баары
"Android" түзмөгүнүн "версиясы", "Gradle Scripts" жана "build.gradle Module: app" файлдарын жүктөө:
ExternalNativeBuild {
CMake…}
- сохраняемся и жмём «синхрондошуу даражасы» в правом углу, ждём когда процесс спокойно завершится;
- после всех этих процедуры "колдонмо" жана "колдонмонун" элементтери боюнча "C ++ долбоору менен Gradle менен байланышуу" пунктунун негизги элементтери.
- "Системаны түзүү" пунктундагы "CMake" бөлүмүнүн "ndk-build", "Project Path" бөлүмүндөгү "Android.mk" файлдарын жүктөө ("окуунун бардык пункттары" комбинацию клавишке киргенде) Ctrl + 2 », каталог проектиси," app/jni "далили," Android.mk "файлын түзүү", "ОК"), файлдарды тазалоо процесси синхронизации, "File-> Долбоорду Gradle Files менен синхрондоштуруу". ».
- В нашем дереве, в каталоге «cpp» появятся добавленные нами файлы, но самое главное - это то, что теперь проект нормально соберётся, эсли у Вас в коде ошибок нет (урок для начинающих: https://developer.android.android /үлгүлөр/sample_hellojni#java).
3 -кадам: GStreamer программасы
Процесс прикручивания библиотеки gstreamer (версия библиотек 1.18.3, версия Android Studio 4.1.2):
- NDK, JNI, ndk-build компиляциясы (2-кадам).
- Содержимое «Android.mk» взято из «tutorial_1» примеров gstreamer и модифицировано, жана распаковалдык библиотеки "C: / gstreamer \", файл на языке си я назвал (жана предварительно добавил в папту "j0_ про).c », соответственно бөлүшүлгөн-библиотеку (котормо будет собрана из это файла) я назвал« gst_tut_01 »(самбиль библиотеки, соответственно будет называться« libgst_tut_01.so »).
LOCAL_PATH: = $ (my-dir чалуу)
камтыйт $ (CLEAR_VARS) LOCAL_MODULE: = gst_tut_01 LOCAL_SRC_FILES: = gst_tut_01.c LOCAL_SHARED_LIBRARIES: = gstreamer_android LOCAL_LDLIBS: = -llog $ (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:/gstream 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 ($ (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 GSTRESERASTER: AML_TRUER GSTREAMER_NDK_BUILD_PATH) /gstreamer-1.0.mk
"Android.mk" веб -баракчасы, платформадан (Windows, Linux) баш тартуу, "/" прописывается через.
Керек болгон нерсе "externalNativeBuild {…}" файлынын "build.gradle модулу: колдонмосу" "defaultConfig" ("блокада", башталганда)
defaultConfig {
applicationId "com.example.test_gst_01" minSdkVersion 23 targetSdkVersion 28 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner. AndroidJUnitRunner" externalNativeBuild {ndkBuootAnd (g).gstAndroidRoot else gstRoot = System.env. GSTREAMER_ROOT_ANDROID аргументтери "NDK_APPLICATION_MK = jni/Application.mk", "GSTREAMER_JAVA_SRC_DIR = src", "GSTREAMER_ROOT_ANDROID" $ gstRAM_tro_tr0 MIPS жана MIPS64 колдоого алынат abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'}}}
Остальные настройки по этому описанию: https://stackoverflow.com/questions/45044210/gstreamer-examples-in-android-studio. Если резюмировать, то получится так:
- создаём код на си;
- android студиясы "libc ++ _ shared.so" библиотекасынын библиотекасы нормально эмес, вашего вашестве вашем «Android.mk» вместо строки «LOCAL_SHARED_LIBRARIES_android_LIBRARIES" », В Android Studio 3.5.1 файлдары« Application.mk »добавить строчку« APP_STL: = c ++ _ shared »;
- перед тем как начать писать код на Java, для исключения проблемалар импортом «org.freedesktop.gstreamer. GStreamer» каталога с распакованными предварительно собранными библиотеками (у меня это «C: / gstreamer / arm64 / n / share / gstst / ») Скрипировать файл« GStreamer.java »(эти файлы на всех архитектурах одинаковые) жана" org.freedesktop.gstreamer "пакетин ачуу, жана Android студиясында необходимо переключитов на видерево», кликаем правой клавишей мыши элементтери "java" жана пункттар менюсу "Жаңы-> Топтом", позициядагы диалог "Бара турган жердин директориясын тандоо", "… / app / src / main / java", жмём "ОК", появится диалог « Жаңы топтом »," org.freedesktop.gstreamer "," паста "элементтери, жаңы элементтердин жаңы элементтери жана элементтери" Кой "позициясында. "GStreamer.java" файлын жүктөө керек болсо, анда " @… что то написано… @";
- эсли планируется использование androidmedia плагина (а это почти 100 %), необходимо из каталога с распакованными предварительно собранными библиотеками (у меня это «C: / gstreamer / arm64 / share / gst-android / ndkirov") »(В нём 3 файла.java) и вставить его в пакет« org.freedesktop.gstreamer »;
- "процессте" Android студиясы иштебей калат, бирок бул "#include" эмес, "Район" командасынын "Файл-> Кэштерди жараксыз кылуу/Кайра баштоо" командаларынын жардамы менен, бул достук каттардын бири болуп саналат. на этот «#include» но сборка будет проходить нормально (в общем случае достаточно 1 раз сделать процедуру, после чего забить на ругань на андроид на методы из «gst/gst.h»);
- эсли сборка заканчивается ошибкой например «android studio gstreamer make: *** Tutorial_02.o үчүн керек болгон максаттуу tutorial_02.c үчүн эреже жок», просто внимательно проверьте ваш «Android.mk» скорее всего в нём лишний символ (не должно быть пробелов);
- рекомендую ознакомиться с этой статьёй: https://habr.com/ru/post/270479/, "Android Studio при разработке проектадагы" методикалык лечения ошибок "приводятся".
4 -кадам: Конвейер GStreamer Коде *.c Android Studio
Итак, GStreamer вроде заработал, по крайней мере работают tutorial_1… tutorial_3 "GStreamer Android Tutorials" документинин (на смотря на то, что в смартфоне они запустились, мой вариант, основанный на tutorial_3 в эмуляторе).
Но вот с конвейером беда, в соответствии с этой информацией: https://gstreamer.freedesktop.org/documentation/installing/for-android-development.html#using-androidstudio в андроид есть свой декодер видео, называется он «андроид расположен в категории «GSTREAMER_PLUGINS: = $ (GSTREAMER_PLUGINS_CODECS)», ошондой эле библиотеке 1.15.2 GStreamer Android Studio үчүн, бирок приложение бул ругатся найти его (андроид) мүмкүн эмес) по другому (https://www.ohandroid.com/67892.html), а именно (в моём случае для телефона Samsung S7) «amcviddec-omxexynosavcdec», префикс «amcviddec-» всегда один и тот же (для всехов)), а вот наименование второй части можно составить исходя из информации в файле «/etc/media_codecs.xml» (файл смартфоне, смотрел с помощью Total Commander), жана маалыматтын аты -жөнү cизо телефондогу файлдар <”OMX. Exynos.avc.dec” type =”video/avc”> », (avc - это кодек h264, для кодека h265 будет hevc, а для h263 - h263) соответственно убирая из имени кодека точки и записывая всё маленькими буквами получаем «omxexynosavcdec» - вот велосипед.
Далее необходимо установить права в манифесте приложения:
Плагиндердин «Android.mk»:
LOCAL_PATH: = $ (my-dir чалуу)
$ Кирет (CLEAR_VARS) LOCAL_MODULE: = gstvideoget LOCAL_SRC_FILES: = gstvideoget.c LOCAL_SHARED_LIBRARIES: = gstreamer_android C ++ _ бөлүштү LOCAL_LDLIBS: = -llog -landroid $ кирет (BUILD_SHARED_LIBRARY) ifndef GSTREAMER_ROOT_ANDROID $ (! Ката GSTREAMER_ROOT_ANDROID аныкталган эмес) endif ifeq ($ (TARGET_ARCH_ABI), armeabi-v7a) GSTREAMER_ROOT: = $ (GSTREAMER_ROOT_ANDROID)/armv7 else ifeq ($ (TARGET_ARCH_ABI), arm64-v8a) GSTREAMER_ROOT: = $ (GSTREAMER_RO_ARO_64) = $ (GSTREAMER_ROOT_ANDROID)/x86 башка ifeq ($ (TARGET_ARCH_ABI), x86_64) GSTREAMER_ROOT: = $ (GSTREAMER_ROOT_ANDROID)/x86_64 башка $ (ката Максаттуу арка ABI колдоого алынбайт: $ (TARGET_ARif_STAR_GAR_TARG_ARD_TARG_ARI)) үлүшү / GST-андроид / ndk куруу (GSTREAMER_NDK_BUILD_PATH) $ камтыйт /plugins.mk GSTREAMER_PLUGINS: = $ (GSTREAMER_PLUGINS_CORE) $ (GSTREAMER_PLUGINS_PLAYBACK) $ (GSTREAMER_PLUGINS_CODECS) $ (GSTREAMER_PLUGINS_NET) $ (GSTREAMER_PLUGINS_SYS) $ (GSTREAMER_PL UGINS_CODECS_RESTRICTED) $ (GSTREAMER_CODECS_GPL) $ (GSTREAMER_PLUGINS_ENCODING) $ (GSTREAMER_PLUGINS_VIS) $ (GSTREAMER_PLUGINS_EFFECTS) $ (GSTREAMER_PLUGINS_NET_RESTRICTED) GSTREAMER_EXTRA_DEPS: = gstreamer-оюнчу-1.0 gstreamer-көргөзмө-1.0 маш-2,0 ($ кирет GSTREAMER_NDK_BUILD_PATH) /gstreamer-1.0.mk
Төмөнкүлөр «Application.mk» (https://developer.android.com/ndk/guides/cpp-support):
APP_ABI: = allAPP_STL: = c ++ _ бөлүшүлгөн
Послесловие: возможно плагинов слишком много (при компиляции размер папки проекта вырастает до 1, 9 Гбайт), но у меня конвейер не стартует при другом раскладе, может у Вас некоторые плагины окажутся нежужны -.
Сунушталууда:
Кантип Windows 7ди Windows 95ке окшош кылса болот: 7 кадам
Windows 7ди Windows 95ке кантип окшоштуруу керек: Мен сизге Windows 7ди Windows 95ке окшоштурууну көрсөткүм келет жана мен аны Windows 98ге окшоштуруу үчүн кошумча кадамды коштум жана ал дагы Windows 7 кылууну каалаган адамдар үчүн. windows 98 окшош. Windows 7ге окшоштурууну каалагандар үчүн
Котлин менен Android Studio жүктөө жана колдонуу: 4 кадам
Котлин менен Android Studio жүктөп алуу жана колдонуу: Саламатсызбы, бул пандемия учурунда баарыңыздар жакшы деп үмүттөнөм. Бул үйрөткүчтө мен сизге Android Studioду кантип жүктөп алууну жана Kotlin менен биринчи колдонмону иштетүүнү үйрөтөм. Бул үйрөткүчтүн аягында сиз Andro аркылуу жөнөкөй колдонмону кантип жүктөп алууну жана жасоону билишиңиз керек
Кийилүүчү кыймыл трекерин түзүңүз (BLE'ден Arduinoдон Android Studio студиясынын колдонмосуна чейин): 4 кадам
Wearable Motion Tracker куруңуз (BLE Arduinoдон Android Студиясынын Колдонмосуна): Bluetooth Low Energy (BLE) - бул аз кубаттуу Bluetooth байланышынын бир түрү. Кийиле турган түзмөктөр, мен акылдуу кийимдер сыяктуу, мен Predictive Wear дизайнында, батареянын иштөө мөөнөтүн узартуу үчүн мүмкүн болушунча энергия керектөөнү чектеп, BLEди көп колдонушу керек
Android Studio менен Android тиркемесин кантип түзүү керек: 8 кадам (сүрөттөр менен)
Android Studio менен Android тиркемесин кантип түзүү керек: Бул окуу куралы сизге Android Studio иштеп чыгуу чөйрөсүн колдонуп, Android колдонмосун кантип куруунун негиздерин үйрөтөт. Android түзмөктөрү барган сайын кеңири тарала баштаганда, жаңы колдонмолорго болгон суроо -талап көбөйөт. Android Studio колдонууга оңой (жана
Windows Mail Windows 7: 14 кадам
Windows Mail Windows 7: Windows Mailди Windows 7де конфигурациялоо (Windows 7 жана 8де жеке тиркеме) Questo үйрөткүч, Windows Mailде электрондук почтанын конфигурацияланган электрондук почтасын конфигурациялоо үчүн. (Windows 7 үчүн