Агуулгын хүснэгт:
- Алхам 1: GStreamer Raspbian дээр
- Алхам 2: Android. Введение. Создание Приложения С NDK, JNI, Компьютер Ndk-build
- Алхам 3: GStreamer -ийг ашиглах
- Алхам 4: Конвейер GStreamer Воде *.c Android Studio
Видео: GStreamer ба Android (GStreamer Android Studio Windows): 4 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:00
Версия библиотек 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- plugins-bad »и все зависимости. Команда "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-ugly »;
- для включения gstreamer в код, необходимо включить «#include», програм хангамжийн програмууд нь "pkg-config --cflags --libs gstreamer-1.0`", получится так «gcc` pkg-config --cfreams --libs-gflags --libs -1.0` үндсэн-хичээл-1.c -o үндсэн-заавар-1 »;
- жишээ нь gstreamer "команд клитийг https://gitlab.freedesktop.org/gstreamer/gst-docs" дээр дарж болно.
Дэлгэрэнгүй үзэх камерын 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 тохиргооны интервал = 1 pt = 96! udpsink хост = 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 control-rate = 1 target-bitrate = 8000000! h264parse! rtph264pay тохиргооны интервал = 1 pt = 96! udpsink хост = 192.168.1.223 порт = 5000 »,
хост хост-ip-адрес получателя потока (смартфон на андроид), энэ товчлуурыг дарна уу (fdsrc, h264parse, rtph264pay,…) Та gst-inspect-1.0 fdsrc-1.0 "fstrparse", "gst-inspect" и т.д.
Дуудлага хийх видео потока на винде (после установки gstreamer) нь юу хийхээ мэдэхгүй байна: "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 / "дээр дарна уу).
Samsung S7 -ийн хамгийн сайн видео бичлэгийг android (конвейер с исползованием 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,
- устанавливаем в Windows переменную среды «GSTREAMER_ROOT_ANDROID», значение - путь до каталога с распакованными (установленными) библиотеками gstreamer (урьдчилан бүтээсэн) https://gstreamer.freedesktop.org/data/pte «elove.com) C: / gstreamer », последний слэш ставить не нужно);
- устанавливаем NDK, CMake, LLDB (хадгалах только галочки расставить);
- "Native C ++" програмыг шинэ хувилбараар боловсруулж, шинэ процессыг эхлүүлэх;
- "Төсөл" (програм хангамж) нь "апп" програмыг нээхийн тулд "апп" програмыг нээхийн тулд "Шинэ-> Фолдер-> хавтас-" хавтас-> файлыг хавсаргана уу. "Хавтасны байршлыг өөрчлөх", "Шинэ хавтасны байршил" гэсэн товчлуурыг "jni/", "дуусгах", "апп" гэсэн каталоги "jni" гэсэн бичээсийг дарна уу;
- "jni", "Шинэ-> C/C ++ Эх Файл" гэсэн томъёолол, мөн "шинэ файлууд", мөн өөр бусад файлуудын эх сурвалжийг "шинэ" гэж хэлж болно., "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: = бүгд
"Андройд" (програм хангамжийн хувилбарууд), "Gradle Scripts" болон "build.gradle Module: app" файлуудыг устгана уу:
ExternalNativeBuild {
CMake…}
- сохраняемся и жмём «sync gradle» програм хангамжийн процесс, жодомын процессыг даван туулах;
- "програм" болон "програмын" элементүүдийг ашиглахын тулд "Gradle -тэй C ++ төслийг холбох" товчийг дарна уу.
- "Системийг бий болгох" хэсэгт "CMake" -ийг "ndk-build" дээр дарж, "Project Path" -ийг "Android.mk" дээр дарж уншина уу. Ctrl + 2 », том каталоги програм," app/jni "," Android.mk "файлын файлыг үүсгэх," ОК "гэх мэт файлуудыг томъёолох, файлын процессыг синхронизацид оруулах," File-> Төслийг Gradle Files-тэй синхрончлох. ».
- В нашем дереве, в каталоге «cpp» появятся добавленные нами файлы, гэхдээ самое главное - это то, что теперы проект нормально соберётся, если у Вас в коде ошибок нет (урок для начинающих: https://developer.android.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 \" файлын андроид библиотеки, файлын эх сурвалж (мөн урьдчилсан шинж чанартай).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 / АРМви7 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 GSTRESER_START_PLUES 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/ 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_LIBRARIES_android_brend" », Android Studio 3.5.1 файлыг" Application.mk "дээр дарна уу" APP_STL: = c ++ _ хуваалцсан ";
- эхний сэдэв как начать писать код на Java, для исключения с импортом «org.freedesktop.gstreamer. GStreamer» каталога с распакованними предварительно собранными библиотеками (у меня это «C: / gstreamer / arm64 / n / share / gststocker / »)" GStreamer.java "файлыг дарна уу (энэ нь архитектурын нэг хэсэг болно) ба" org.freedesktop.gstreamer "програмыг нээнэ үү., "java" болон "Шинэ" багцыг сонгох "" багцыг сонгох "товчлуурыг дарж," Очих газрын лавлахыг сонгоно уу "," … / app / src / main / java "," ОК ", появится диалог« "Шинэ багц", "org.freedesktop.gstreamer" товчлуурууд, мөн хамгийн сүүлийн үеийн элементүүд, хамгийн сүүлийн үеийн элементүүд болон элементүүдийг "Paste" дээр дарна уу. "GStreamer.java" файлыг нээгээд үзэхэд " @… что то написано… @";
- если планируется использование androidmedia плагина (а это почти 100 %), гэхдээ энэ нь "C: / gstreamer / arm64 / share / gst-android / ndkirov" каталога с распакованнимийн урьдчилсан библиотеками юм. »(В нём 3 файла.java) ба вставить его в пакет« org.freedesktop.gstreamer »;
- "процессын" явцад Android студи ажиллахгүй болно, гэхдээ "#include", "файл"> "Кэшийг хүчингүй болгох/дахин эхлүүлэх" командын командууд, мөн эдгээр файлуудыг ашиглах боломжтой болно. на этот «#include» гэхдээ сборка шаардлагагүй прораммит (ердийн журмын дагуу 1 үе шаттай, дараа нь Android студи дээр "gst/gst.h" дээр бичигдсэн);
- если сборка заканчивается ошибкой жишээ: «android studio gstreamer make: *** tutorial_02.o -д хэрэгтэй зорилтот хичээл_02.c -ийг хийх дүрэм байхгүй», внимательно проверьте ваш «Android.mk» скорее всего в нём лишний символ не должно быть пробелов);
- рекомендую ознакомиться с этой статьяй: https://habr.com/ru/post/270479/, "Методик лечения различных ошибок в Андроид стри при разработке проекта" вэбсайтаас үзнэ үү.
Алхам 4: Конвейер GStreamer Воде *.c Android Studio
Итак, GStreamer вроде заработал, крайней мере работают tutorial_1… tutorial_3 нь "GStreamer Android хичээлүүд" -ийг зааж өгсөн болно (энэ нь смартфонын они запустились, мой вариант, основанный на 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 -д зориулагдсан болно, гэхдээ энэ нь найтиг (androidmedia) боломжтой биш юм. по другому (https://www.ohandroid.com/67892.html), а именно (Samsung S7-ийн телефоны загвар) "amcviddec-omxexynosavcdec", "amcviddec-" всегда один и тот же (для всехов)), эсвэл "/etc/media_codecs.xml" файлын мэдээллийн эх сурвалжийг ашиглах боломжтой (файлууд нь смартфон, смартрель с помощью Total Commander), мөн хэвлэл мэдээллийн хэрэгслээр зарласан форматын нэр "”OMX. Exynos.avc.dec” type =”video/avc”> », (avc - это кодек h264, d2 кодека 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 өөр ifeq ($ (TARGET_ARCH_ABI), arm64-v8a) GSTREAMER_ROOT: = $ (GSTREAMER_RO_ARRO_T_RORO) = $ (GSTREAMER_ROOT_ANDROID)/x86 өөр ifeq ($ (TARGET_ARCH_ABI), x86_64) GSTREAMER_ROOT: = $ (GSTREAMER_ROOT_ANDROID)/x86_64 өөр $ (алдаа зорилтот нуман хаалганы ABI дэмжигдээгүй: $ (TARGET_ARif_STAR_BAR_TARF_BAR) эзлэх хувь / GST-Android / 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 шиг болгохын тулд нэмэлт алхам оруулсан бөгөөд энэ нь цонхоо 7 хийхийг хүсч буй хүмүүст зориулагдсан болно. цонх 98 шиг харагдаж байна. Windows 7 -ийг харагдуулахыг хүсч буй хүмүүсийн хувьд
Kotlin ашиглан Android Studio татаж авах, ашиглах: 4 алхам
Котлин ашиглан Android Studio татаж авах, ашиглах: Сайн байна уу, энэ тахлын үед та бүгд сайн байгаа гэж найдаж байна. Энэхүү гарын авлагад би Android Studio -г хэрхэн татаж авах, Kotlin ашиглан анхны програмаа ажиллуулах талаар танд заах болно. Энэхүү гарын авлагын төгсгөлд та Андрог ашиглан хэрхэн энгийн програм татаж авах, хэрхэн хийхээ мэдэх ёстой
Зүүж болох хөдөлгөөн хянагч бүтээгээрэй (BLE -ээс Arduino -аас захиалгат Android Studio апп хүртэл): 4 алхам
Зүүж болох хөдөлгөөний трекер бүтээх (BLE -ээс Arduino -аас захиалгат Android студийн апп хүртэл): Bluetooth Бага энерги (BLE) нь бага чадалтай Bluetooth холбооны хэлбэр юм. Ухаалаг хувцас гэх мэт зүүх боломжтой төхөөрөмжүүд нь батерейны ашиглалтын хугацааг уртасгахын тулд эрчим хүчний хэрэглээг хязгаарлаж, BLE -ийг байнга ашиглах ёстой
Windows Mail Windows 7: 14 алхам
Windows Mail Windows 7: Windows Mail дээр Windows Mail 7-ийг тохируулах (Windows 7 ба 8-ийн дангаараа) Questo заавар нь Windows Mail дээр имэйл илгээх тохиргоог хийх боломжийг олгодог. (Windows 7 -ийн хувьд
Дэлгэцээс гадуур Windows-ийг шууд аврах (Windows болон Linux): 4 алхам
Дэлгэцээс гадуурх Windows -ийг шууд аврах (Windows болон Linux): Програмыг дэлгэцнээс гадуур зөөх үед - холбогдоогүй байгаа хоёр дахь дэлгэц рүү шилжүүлэх үед та үүнийг одоогийн дэлгэц рүү шилжүүлэх хурдан, хялбар арга хэрэгтэй болно. Энэ бол миний хийдэг зүйл -ТАЙЛБАР --- Би хувийн нууцлалын үүднээс зургуудыг бүдгэрүүлсэн