Я заставил все уроки с сайта Gstreamer работать, но это было очень сложно. Чтобы помочь другим людям, я задокументировал это. Вот учебник для linux (ubuntu), но он может работать и в Windows, если у вас есть какие-либо вопросы по этому поводу, просто спросите :)... Я также пришлю ссылку на проект из gitlab, готовый к запуску в Android Студия:
(учебник 5) https://gitlab.com/eduardoprado/gstreamer-tutorial5.git
(учебник 2) https://gitlab.com/eduardoprado/gstreamer-tutorial2.git
Использование библиотеки в Android Studio
Лучший способ понять и интегрировать GStreamer в проект — пройти обучение на этом сайте: Извините, вам нужно найти ссылку самостоятельно, у меня нет репутации, чтобы публиковать прямую ссылку
Однако эти руководства устарели и были созданы для работы в Eclipse, для работы с Android Studio необходимо:
<сильный>1. Импортируйте учебные пособия с помощью параметра «Импорт» в Android Studio;
2. Настройте Android Studio на использование NDK;
3. Установите переменную в файле «Android.mk»;
4. Настройте Gradle для компиляции только некоторой архитектуры;
5. Скопируйте Gstreamer class на правильный путь.
6. Отключите "Instant Run" из Android Studio. (редактирование сделано 27.10.2017)
7. Исправлен "аргумент золота компоновщика" (редактирование сделано 28.11.2017, только для пользователей WINDOWS)
Каждая из этих инструкций будет объяснена в следующих разделах:
<сильный>1. Импортируйте руководства с помощью функции импорта Android Studio.
В Android Studio есть возможность импортировать проект из других IDE. Чтобы импортировать проект Gstreamer, сделанный в Eclipse, выполните следующие действия:
1. Загрузите все руководства из git: ;
2. В Android Studio выберите Файл -> Новый проект импорта;
3. В новом браузере для экрана файлов, перейдите в «gst-docs», выберите нужный проект (в моем случае учебник 5) «android-tutorial-5» и нажмите «ОК».
а>
2. Настройте Android Studio на использование NDK
Теперь, когда проект импортирован, необходимо сообщить Android Studio, что проект использует инфраструктуру NDK. Таким образом, Gradle сможет импортировать и обрабатывать все зависимости. Для этого нам нужно связать файл Android.mk (уже в папке учебника):
1. Щелкните правой кнопкой мыши «приложение» на левой вкладке навигации
2. Нажмите «Связать проект C++ с Gradle».
3. В новом окне:
- Измените "Система сборки" с "CMake" на "ndk-build"
- Нажмите "..." и перейдите в папку с файлом Android.mk "/AndroidStudioProjects/android-studio-5/app/src/jni/Android.mk"
- Нажмите "ОК"
Теперь внешние файлы сборки появятся на левой вкладке проекта. Также будут появляться некоторые ошибки, это нормально и будет исправлено в следующих разделах.
<сильный>3. Установите переменную в файле «Android.mk»
Ошибка последнего раздела возникает из-за того, что «Android.mk» не находит путь, по которому был извлечен GStreamer. Итак, давайте установим для переменной GSTREAMER_ROOT_ANDROID путь, по которому был извлечен GStreamer. Для этого:
1. Перейдите на вкладку слева и разверните "Внешние файлы сборки";
2. Дважды щелкните файл Android.mk, чтобы открыть файл;
3. В строке 10 в разделе "include $ (BUILD_SHARED_LIBRARY)", введите:
- "GSTREAMER_ROOT_ANDROID := путь"
- БЕЗ кавычек
- путь - это путь (очевидно), где GStreamer был извлечен.
После этого Gradle выполнит синхронизацию и выдаст ошибку "***Целевой арочный ABI не поддерживается: mips. Stop".
<сильный>4. Установите Gradle для компиляции только некоторой архитектуры
Ошибка последнего раздела возникает из-за того, что Grade пытается выполнить сборку для разных архитектур, но не находит файл для сборки в MIPS. Чтобы решить эту проблему, мы укажем архитектуры для сборки, исключая MIPS:
1. На левой вкладке браузера разверните Gradle Scripts;
2. Дважды щелкните «build.gradle (Module: app)»
3. В строке под "moduleName" введите:
(для запуска туториала 5)
- abiFilters 'x86','armeabi', 'armeabi-v7a', 'arm64-v8a'
(для запуска туториал 2)
- abiFilters 'x86', 'armeabi-v7a', 'arm64-v8a'
(редактировать 21.11.2017: Недавно у меня были проблемы с arm64-v8a... устройства с 64 битами победили не показывает прямую трансляцию, я тоже решил «удалить arm64-v8a»)
(редактировать 29.03.2018: я понял, что может потребоваться удалить больше архитектуры в зависимости от вашей версии Gstreamer и NDK, если это не работает, попробуйте различные комбинации удаления)
<сильный>5. Скопируйте класс Gstreamer по правильному пути.
Последняя необходимая конфигурация касается импорта пакетов в класс Main.
Показанная выше ошибка возникает из-за того, что нет класса GStreamer для получения функции «.init». Чтобы решить эту проблему, нам нужно скопировать класс GStreamer из файла, в который он был извлечен, и вставить по указанному пути:
- С помощью файлового менеджера вашей системы перейдите к файлу, в который вы распаковали GStreamer.
- В извлеченном файле перейдите к расположению класса GStreamer. Он находится по адресу /arm/share/gst-android/ndk-build/GStreamer.java. Копировать GStreamer.java
- Вернитесь в Android Studio и создайте путь импорта, к которому класс Main пытается получить доступ, начиная с /app/java на левой вкладке браузера. Итак, к изображению выше мы должны создать путь org.freedesktop.gstreamer и вставить в него файл GStreamer.java:
- Щелкните правой кнопкой мыши папку java
- Новый-> Пакет
- Введите org.freedesktop.gstreamer
- Щелкните правой кнопкой мыши org.freedesktop.gstreamer и вставьте 5. Ошибка импорта теперь устранена, но в новом классе есть ошибки. Чтобы их решить, достаточно стереть из скопированного класса «@» и все, что находится между «@».
<сильный>6. Отключите «Instant Run» из Android Studio. (редактирование сделано 27.10.2017)
Эта функция из Android Studio может вызвать проблемы при попытке запустить проект, поэтому рекомендуется отключить ее.
Отключение «Мгновенного запуска»:
1. В Android Studio перейдите в "Файл" -> "Настройки..." (Ctrl+Alt+S)
2. "Сборка, выполнение, развертывание" -> "Мгновенный запуск"
3. Снимите флажок "Включить мгновенный запуск для горячей замены кода/изменений ресурсов при развертывании (по умолчанию включено)"
4. Нажмите "Применить"
<сильный>7. Исправить «аргумент золота компоновщика» (только для пользователей WINDOWS)
При попытке Windows вы получите сообщение об ошибке:
Error:error: invalid linker name in argument '-fuse-ld=gold'
Чтобы исправить это:
1. Перейдите на страницу Android NDK Linker (GStreamer) - недопустимое имя компоновщика -fuse-ld=gold
2. Следуйте советам Антуана Замбелли сильный> инструкции ответа.
person
Eduardo Fernando
schedule
14.09.2017