Я пытаюсь использовать библиотеку Gstreamer на нескольких платформах с моим проектом Qt (только для аудио). Он уже работает на macOS с бинарными файлами , доступными онлайн , просто добавив фреймворк в мой файл .pro:
LIBS += -F$$PWD/macOS/libs/ -framework GStreamer
INCLUDEPATH += $$PWD/macOS/libs/GStreamer.framework/Versions/1.0/Headers
DEPENDPATH += $$PWD/macOS/libs/GStreamer.framework/Versions/1.0/include
Но теперь я хочу использовать двоичные файлы, доступные на той же странице для Android. Но поскольку он не «связан» в рамках, как в OS X, я не могу добавить его так легко. Кроме того, официальные объяснения сделаны для сборки gradle (которую я ничего не знаю и не использую в Qt creator) и для использования в Java. Но, поскольку я хочу напрямую использовать C API в Qt C ++, мне не нужен JNI, и я хотел бы напрямую использовать библиотеку в своем приложении, как в OSX.
Таким образом, я попытался добавить библиотеку, как сделал бы это на любом другом linux, но рекурсивно, поскольку существует множество папок библиотеки и заголовков:
contains(ANDROID_TARGET_ARCH,arm64-v8a) {
ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android
GSTREAMER_INCLUDE_FILES = $$files($$PWD/android/libs/gstreamer/arm64/include/*, true)
for(FILE, GSTREAMER_INCLUDE_FILES) {
BASEDIR = $$dirname(FILE)
if(!contains(INCLUDEPATH, $$BASEDIR)){
INCLUDEPATH += $$BASEDIR
}
}
GSTREAMER_DEPEND_FILES = $$files($$PWD/android/libs/gstreamer/arm64/include/*, true)
for(FILE, GSTREAMER_INCLUDE_FILES) {
BASEDIR_DEP = $$dirname(FILE)
if(!contains(DEPENDPATH, $$BASEDIR_DEP)){
DEPENDPATH += $$BASEDIR_DEP
}
}
GSTREAMER_LIB_FILES = $$files($$PWD/android/libs/gstreamer/arm64/lib/*.a, true)
for(FILE, GSTREAMER_LIB_FILES) {
BASENAME = $$basename(FILE)
LIBS += -l$$replace(BASENAME,\.a,)
}
}
Но когда я пытаюсь включить
#include <gst/gst.h>
, он не работает и выдает 37 ошибок на неизвестных элементах глобального пространства имен, связанных с управлением временем, таких как:
/Users/user/Library/Android/sdk/ndk/19.2.5345600/sources/cxx-stl/llvm-libc++/include/ctime:70:9: error: no member named 'asctime' in the global namespace
using ::asctime;
~~^
Я действительно не знаю, как использовать gstreamer и связать его для Android из доступных официальных двоичных файлов, и я не хочу использовать какую-либо оболочку, такую как qt-gstreamer (которая, кстати, не поддерживается) или JNI.
Спасибо за любую помощь или вклад!