GStreamer Qt WINDOWS

7

关于在Linux中配置.pro文件以运行GStreamer的信息很多,但是在Windows中做同样的事情似乎非常困难。我从官方网站下载了Gst并运行了安装程序,现在位于D:\gstreamer\1.0\x86...我找到了唯一一个尝试更改qt .pro文件的人的描述,我照着做了:

INCLUDEPATH += c:/gstreamer/1.0/x86/include \
        c:/gstreamer/1.0/x86/include/gstreamer-1.0/gst \
        c:/gstreamer/1.0/x86/include/glib-2.0\
        c:/gstreamer/1.0/x86/include/glib-2.0/glib \
        c:/gstreamer/1.0/x86/lib/glib-2.0/include

LIBS += -Lc:/gstreamer/1.0/x86/lib

CONFIG += c:/gstreamer/1.0/x86/lib/pkgconfig

这个项目提供了在输入"gst_init()"等GStreamer相关代码时的辅助,但是会报错:

"gst_init"未定义的引用

现在的问题是如何在Windows上连接GStreamer?

#include <QCoreApplication>
#include <gst/gst.h>
int main(int argc, char *argv[])
{

    gst_init(NULL,NULL);
    //g_print("abc");

    return 0;
}

"C:/Qt/Qt5.1.1/Tools/mingw48_32/bin/mingw32-make -f Makefile.Debug 进入目录 'D:/Projects/AllTests/Qt/build-Console-Desktop_Qt_5_1_1_MinGW_32bit-Debug' g++ -Wl,-subsystem,console -mthreads -o debug\Console.exe debug/main.o -Lc:/gstreamer/1.0/x86/lib -LC:\Qt\Qt5.1.1\5.1.1\mingw48_32\lib -lQt5Cored debug/main.o: In function main': D:\Projects\AllTests\Qt\build-Console-Desktop_Qt_5_1_1_MinGW_32bit-Debug/../Console/main.cpp:8: 未定义的引用 togst_init' collect2.exe: 错误: ld 返回了 1 退出状态 Makefile.Debug:77: recipe for target 'debug\Console.exe' 失败 mingw32-make[1]: * [debug\Console.exe] Error 1 离开目录 'D:/Projects/AllTests/Qt/build-Console-Desktop_Qt_5_1_1_MinGW_32bit-Debug' makefile:34: recipe for target 'debug' failed mingw32-make: * [debug] Error 2 00:20:18: 进程 «C:\Qt\Qt5.1.1\Tools\mingw48_32\bin\mingw32-make.exe» 完成,返回代码 2。"
注:此段内容为编译错误信息,可能是由于缺少某些库文件导致的。
3个回答

2
您需要指定您的二进制文件必须链接的gstreamer库。根据qmake的此文档, 通过发出LIBS += -Lc:/gstreamer/1.0/x86/lib指令,您正在指示qmake在给定路径中查找库,但不是要将哪些库实际链接到您的二进制文件中。我不熟悉gstreamer,所以我不确定在您提出的特定情况下必须链接哪些库,但我想您可以在gstreamer/1.0/x86/lib中找到它们。如果不确定,您可以在名称前加上小写字母“l”将它们全部添加到列表中。例如,如果库名为math,则应通过将-lmath附加到列表末尾来添加它。只需小心,不要同时添加同一库的多个版本,例如调试版本和发布版本,否则您肯定会遇到多个引用链接错误。
与其像上面建议的手动指定应链接到您的二进制文件的库,您还可以选择使用pkg-config来为您完成这项艰巨的工作。GStreamer的此文档说明只需将以下内容添加到.pro文件即可:
CONFIG += link_pkgconfig
PKGCONFIG += QtGStreamer-0.10

这种方法的缺点自然是您首先必须让pkg-config在您的系统上工作。

PKGCONFIG 在哪里查找 QtGStreamer-0.10?它说找不到它。也许它需要一些帮助,比如 INCLUDEPATH = ... 而且有没有适用于 Windows 的 QtGStreamer?我从 http://cgit.freedesktop.org/gstreamer/qt-gstreamer 下载了它,看起来没有适用于 Windows 的版本。我想在 Windows 上无法执行 "make" 和 "make install"。 - Vadim
@VadimGushchin 我必须承认,就编程而言,我对Windows和GStreamer都不是很熟悉,但是,pkg-config使用“.pc”文件来查找东西,也许https://dev59.com/-mTWa4cB1Zd3GeqPC2RV可以帮助你? 至于QtGStreamer,我从未使用过它,但我看了一下你指出的链接,似乎它使用cmake进行编译。Cmake是一个跨平台工具,我知道从经验上讲,你可以很容易地让它在Windows上运行。它所需要的只是一个可用的C++编译器。 - brunocodutra

1
我发现这对我很有效。它使用由GStreamer安装设置的环境变量,因此应该适用于其他PC。64位有一个不同的环境变量,但原理相同。
QT       += core gui
TARGET = GStreamerTest4
TEMPLATE = app
SOURCES += \
    qt-videooverlay.cpp

HEADERS  +=
FORMS    +=

GstreamerDir=$$(GSTREAMER_1_0_ROOT_X86)

INCLUDEPATH = $${GstreamerDir}/include/gstreamer-1.0
INCLUDEPATH += $${GstreamerDir}/include/glib-2.0
INCLUDEPATH += $${GstreamerDir}/lib/glib-2.0/include
INCLUDEPATH += $${GstreamerDir}/lib/gstreamer-1.0/include

LIBS = $${GstreamerDir}/lib/gstreamer-1.0.lib
LIBS += $${GstreamerDir}/lib/*.lib

此外,您需要确保将 C:\gstreamer\1.0\x86\bin 加入路径(控制面板或者您可以在 QtCreator 中设置)。

0

我发现在Windows上,你真的可以避免使用pkg-config,但需要包含所有需要的gstreamer库和.h文件。但是你还需要包含GTK。Kei Naga提供了一个关于在VS 2010中使用qt的好答案http://gstreamer-devel.966125.n4.nabble.com/Configure-Visual-Studio-2010-for-GStreamer-td3804989.html,但如果你将他写的所有内容转移到.pro文件中,它也会起作用(至少对我来说是这样的)。

这是.pro文件的代码:

INCLUDEPATH += C:/ ... /GStreamer/v0.10.6/sdk/include/gstreamer-0.10 \
           C:/ ... /GTK/include/libxml2 \
           C:/ ... /GTK/include/libglade-2.0 \
                    C:/ ... /GTK/lib/gtkglext-1.0/include \
                    C:/ ... /GTK/lib/glib-2.0/include \
                    C:/ ... /GTK/lib/gtk-2.0/include \
                    C:/ ... /GTK/include/gtkglext-1.0 \
                    C:/ ... /GTK/include/atk-1.0 \
                    C:/ ... /GTK/include/cairo \
                    C:/ ... /GTK/include/pango-1.0 \
                    C:/ ... /GTK/include/glib-2.0 \
                    C:/ ... /GTK/include/gtk-2.0 \
                    C:/ ... /GTK/include

LIBS += -LC:/ ... /GTK/lib -LC:/ ... /GStreamer/v0.10.6/sdk/lib -lgstreamer-0.10 -lglib-2.0  -lgobject-2.0 -lgtk-win32-2.0 -lgstinterfaces-0.10

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接