与石英GTK窗口[从GStreamer的一个问题开始] [英] GTK window with Quartz [starting from an issue with GStreamer]

查看:250
本文介绍了与石英GTK窗口[从GStreamer的一个问题开始]的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图让基本教程-5 GStreamer的SDK的在OSX工作。

I'm trying to get basic-tutorial-5 of the GStreamer SDK to work on OSX.

http://gstreamer.freedesktop.org/data/下载SDK包装/ OSX / 1.2.4.1 /

http://cgit.freedesktop.org/教程(1.0) 〜慢动作/ GST-SDK-教程/

我收到以下错误

basic-tutorial-5.c:5:10: fatal error: 'gst/video/videooverlay.h' file not found

当我运行

gcc `pkg-config gstreamer-1.0 gtk+-3.0 --cflags --libs` basic-tutorial-5.c -o basic5

任何指针将是有益的!

Any pointers would be helpful!

感谢。

编辑:

有一个 GST /视频/在 /local/frameworks/Gstreamer.framework/Headers videooverlay.h

There is a gst/video/videooverlay.h in /local/frameworks/Gstreamer.framework/Headers.

pkg配置的GStreamer-1.0 GTK + -3.0 --cflags --libs 不包括 /库/框架/的Gstreamer的输出.framework /版本/ 1.0 /头

由于使用时@Biffen

Thanks to @Biffen when using

    gcc `pkg-config --cflags --libs gtk+-3.0` -o basic5 basic-tutorial-5.c -I/Library/Frameworks/Gstreamer.framework/Versions/1.0/Headers -framework GStreamer

有一点点更多的行动:

        basic-tutorial-5.c:114:17: warning: 'gtk_button_new_from_stock' is deprecated
      [-Wdeprecated-declarations]
  play_button = gtk_button_new_from_stock (GTK_STOCK_MEDIA_PLAY);
                ^
/usr/local/Cellar/gtk+3/3.12.2/include/gtk-3.0/gtk/gtkbutton.h:103:16: note: 
      'gtk_button_new_from_stock' declared here
GtkWidget*     gtk_button_new_from_stock    (const gchar    *stock_id);
               ^
basic-tutorial-5.c:114:44: warning: 'GtkStock' is deprecated
      [-Wdeprecated-declarations]
  play_button = gtk_button_new_from_stock (GTK_STOCK_MEDIA_PLAY);
                                           ^
/usr/local/Cellar/gtk+3/3.12.2/include/gtk-3.0/gtk/deprecated/gtkstock.h:747:38: note: 
      expanded from macro 'GTK_STOCK_MEDIA_PLAY'
#define GTK_STOCK_MEDIA_PLAY       ((GtkStock)"gtk-media-play")
                                     ^
/usr/local/Cellar/gtk+3/3.12.2/include/gtk-3.0/gtk/deprecated/gtkstock.h:107:16: note: 
      'GtkStock' declared here
typedef char * GtkStock;
               ^
basic-tutorial-5.c:117:18: warning: 'gtk_button_new_from_stock' is deprecated
      [-Wdeprecated-declarations]
  pause_button = gtk_button_new_from_stock (GTK_STOCK_MEDIA_PAUSE);
                 ^
/usr/local/Cellar/gtk+3/3.12.2/include/gtk-3.0/gtk/gtkbutton.h:103:16: note: 
      'gtk_button_new_from_stock' declared here
GtkWidget*     gtk_button_new_from_stock    (const gchar    *stock_id);
               ^
basic-tutorial-5.c:117:45: warning: 'GtkStock' is deprecated
      [-Wdeprecated-declarations]
  pause_button = gtk_button_new_from_stock (GTK_STOCK_MEDIA_PAUSE);
                                            ^
/usr/local/Cellar/gtk+3/3.12.2/include/gtk-3.0/gtk/deprecated/gtkstock.h:733:38: note: 
      expanded from macro 'GTK_STOCK_MEDIA_PAUSE'
#define GTK_STOCK_MEDIA_PAUSE      ((GtkStock)"gtk-media-pause")
                                     ^
/usr/local/Cellar/gtk+3/3.12.2/include/gtk-3.0/gtk/deprecated/gtkstock.h:107:16: note: 
      'GtkStock' declared here
typedef char * GtkStock;
               ^
basic-tutorial-5.c:120:17: warning: 'gtk_button_new_from_stock' is deprecated
      [-Wdeprecated-declarations]
  stop_button = gtk_button_new_from_stock (GTK_STOCK_MEDIA_STOP);
                ^
/usr/local/Cellar/gtk+3/3.12.2/include/gtk-3.0/gtk/gtkbutton.h:103:16: note: 
      'gtk_button_new_from_stock' declared here
GtkWidget*     gtk_button_new_from_stock    (const gchar    *stock_id);
               ^
basic-tutorial-5.c:120:44: warning: 'GtkStock' is deprecated
      [-Wdeprecated-declarations]
  stop_button = gtk_button_new_from_stock (GTK_STOCK_MEDIA_STOP);
                                           ^
/usr/local/Cellar/gtk+3/3.12.2/include/gtk-3.0/gtk/deprecated/gtkstock.h:799:38: note: 
      expanded from macro 'GTK_STOCK_MEDIA_STOP'
#define GTK_STOCK_MEDIA_STOP       ((GtkStock)"gtk-media-stop")
                                     ^
/usr/local/Cellar/gtk+3/3.12.2/include/gtk-3.0/gtk/deprecated/gtkstock.h:107:16: note: 
      'GtkStock' declared here
typedef char * GtkStock;
               ^
6 warnings generated.

因此​​,它符合......这似乎是个巨大的进步,但仍然没有雪茄...

So it complies... This seems a huge step forward but still no cigar...

当我尝试运行basic5我得到:

When I try to run basic5 I get:

(process:73178): GLib-GObject-WARNING **: cannot register existing type 'gchar'
**
GLib-GObject:ERROR:gvaluetypes.c:455:_g_value_types_init: assertion failed: (type == G_TYPE_CHAR)
Abort trap: 6

修改V2:

感谢nemequ我现在可以用 GCC编译-o basic5基本教程 - 5.C pkg配置--libs --cflags的GStreamer-1.0的GStreamer视频-1.0 GTK + -3.0``并运行 ./ basic5 来得到以下错误:

EDIT v2:

Thanks to nemequ I can now compile with gcc -o basic5 basic-tutorial-5.cpkg-config --libs --cflags gstreamer-1.0 gstreamer-video-1.0 gtk+-3.0`` and run ./basic5 to get the following error:

Dynamic session lookup supported but failed: launchd did not provide a socket path, verify that org.freedesktop.dbus-session.plist is loaded!

(basic5:77683): Gtk-WARNING **: cannot open display:

看来,GTK文件夹(和其他人,毫无疑问)从 /Library/Frameworks/Gstreamer.framework/Versions/1.0/Headers 文件夹等缺少使用 pkg配置.. 是一个解决方法,也许吧。

It seems that the gtk folder (and others, no doubt) are missing from the /Library/Frameworks/Gstreamer.framework/Versions/1.0/Headers folder and so using the pkg-config.. is a work-around, maybe.

如果我在XQuartz终端我收到以下错误运行 ./ basic5

If I run ./basic5 in an XQuartz terminal I get the following error:

Dynamic session lookup supported but failed: launchd did not provide a socket path, verify that org.freedesktop.dbus-session.plist is loaded!

(basic5:78227): GLib-GIO-ERROR **: No GSettings schemas are installed on the system
Trace/BPT trap: 5

任何人有什么想法?

Anyone else have any ideas?

推荐答案

对于初始问题,解决方案取决于你的系统,这是一个有点很难给你一个很好的答案,但GST /视频/ videooverlay.h是部分在的GStreamer的视频-1.0 包的的GStreamer-1.0

For the initial problem, the solution depends on your system so it's a bit difficult to give you a good answer, but gst/video/videooverlay.h is part of the gstreamer-video-1.0 package, not gstreamer-1.0.

这是说,如果你使用GStreamer的SDK然后根据GStreamer的SDK文档,<一个href=\"http://docs.gstreamer.com/display/GstSDK/Installing+on+Mac+OS+X#InstallingonMacOSX-BuildCreatingnewprojects\"相对=nofollow>你应该用-framework的GStreamer ,不pkg配置。

That said, if you're using the GStreamer SDK then according to the GStreamer SDK documentation, you should be using -framework GStreamer, not pkg-config.

至于你所看到的关于不能注册类型存在错误,它倾向于当您试图对两个不同版本的同一个库的链接的情况发生。 TBH我从来没有见过它gchar发生,但它可能意味着你要链接到两个不同的版本巧舌如簧或图形对象,这是有道理的,在 GTK + -3.0 pkg配置文件将在巧舌如簧-2.0 图形对象-2.0 拉作为依赖,而且他们都已经包括在GStreamer的SDK。 AFAICT GTK +也包括在GStreamer的SDK,所以尽量刚刚摆脱的pk​​g配置的东西:

As for the error you're seeing about "cannot register existing type", that tends to happen when you try to link against two different versions of the same library. TBH I've never seen it happen with gchar, but it probably means you're trying to link to two different version of glib or gobject, which makes sense—the gtk+-3.0 pkg-config file will pull in glib-2.0 and gobject-2.0 as dependencies, and they're both already included in the GStreamer SDK. AFAICT GTK+ is also included in the GStreamer SDK, so try just getting rid of the pkg-config stuff:

gcc -o basic5 basic-tutorial-5.c -I/Library/Frameworks/Gstreamer.framework/Versions/1.0/Headers -framework GStreamer

这篇关于与石英GTK窗口[从GStreamer的一个问题开始]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆