【发布时间】:2017-08-12 03:10:04
【问题描述】:
我在 Linux 64 位客户端下使用 Qt Creator 和 Qt 5.9.1 for Android,我正在尝试将 Gstreamer 1.12.2 for Android 引入构建。我能够部分运行 gstreamer 代码。它将运行gst_init 并通过,但gst_parse_launch 失败而无法找到任何插件,我在运行时/调试期间总是收到相同的警告,错误指向第一个插件。下面的例子。
“videotestsrc”没有元素
我认为应该归咎于我的 *.pro 文件,但我找不到使用 gstreamer 在其 documentation 中说明的 *.mk 文件的解决方案。由于 gradle 的使用,以及我对 gradle 的不熟悉,我无法找到在哪里使用 *.mk 文件。
我的 *.pro 文件包含以下插件,但我似乎缺少将它们链接在一起的东西。
GST_ROOT = /usr/local/share/gstreamer-1.0-android/x86
INCLUDEPATH += $$GST_ROOT/include \
$$GST_ROOT/include/glib-2.0 \
$$GST_ROOT/lib/glib-2.0/include \
$$GST_ROOT/lib/gstreamer-1.0/include \
$$GST_ROOT/include/gstreamer-1.0
LIBS += -L$$GST_ROOT/lib/gstreamer-1.0/static -lgstvideo-1.0 -lgstaudio-1.0 -lgstcoreelements \
-lgstudp -lgstrtp -lgstx264 -lgstlibav -lgstvideoparsersbad -lgstadder -lgstapp -lgstaudiorate \
-lgstaudioresample -lgstgio -lgstpango -lgstrawparse -lgsttypefindfunctions -lgstvideorate \
-lgstvideoscale -lgstvolume -lgstvideofilter -lgstsoup -lgstopensles \
-lgstvideotestsrc -lgstplayback -lgstaudiotestsrc -lgstaudioconvert -lgstvideoconvert \
-lgstinterleave -lgstautodetect -lgstandroidmedia -lgstphotography-1.0 -lgstopengl
LIBS += -L$$GST_ROOT/lib/ -lgstreamer-1.0 -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 \
-lgstbase-1.0 -lgstrtsp-1.0 -lgstvideo-1.0 -lgnutls \
-lintl -liconv -pthread -lffi
注册插件的C代码示例:
GST_PLUGIN_STATIC_DECLARE(coreelements);
GST_PLUGIN_STATIC_DECLARE(videotestsrc);
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
GError *error;
//init gstreamer
gst_init (NULL, NULL);
gst_init_check (NULL, NULL, &error);
//to check in debug
gboolean i = gst_is_initialized(); //returns 1
GST_PLUGIN_STATIC_REGISTER(coreelements); //fails -> cannot find gst_plugin_coreelements_register();
GST_PLUGIN_STATIC_REGISTER(videotestsrc); //fails -> cannot find gst_plugin_videotestsrc_register();
...
任何帮助都会很有用,感谢您的宝贵时间。
【问题讨论】:
-
如果它找不到那个 GStreamer 插件,那么你就不能用你的代码来帮助它。系统上缺少该插件。切换到 Linux 控制台并运行 gst-inspect1.0 pluginName 进行验证。而如何在目标设备上安装该插件则是另一个问题。
-
我的系统安装了 gstreamer 1.12.2,它确实正确地找到了插件(在示例中为 videotestsrc)。我的理解是,gstreamer android 构建与系统构建完全分开,如果我错了,请告诉我。
-
如果目标控制台 (?) 显示 videotestsrc 已安装,那么我不确定出了什么问题。尝试用 !作为分隔符,然后启动一些视频测试。也许
GST_PLUGIN_STATIC_REGISTER不是那样工作的。我从来没用过。
标签: android c++ linux qt gstreamer