GStreamer如何让videosink在指定的窗口进行图像绘制?
2011-01-03 11:27
393 查看
想让xvimagesink/ximagesink这样的element在我们指定的窗口中绘制video?简单的很:
1. new一个GtkDrawingArea
2. connect它的expose-event signal,e.g:
// Drawing on our drawing area
g_signal_connect(G_OBJECT(area), "expose-event", G_CALLBACK(expose_cb), NULL);
3. 书写callback函数expose_cb,e.g:
/* Callback to be called when the drawing area is exposed */
static gboolean expose_cb(GtkWidget * widget, GdkEventExpose * event, gpointer data)
{
// `play->videosink'就是video sink element
gst_x_overlay_set_xwindow_id(GST_X_OVERLAY(play->videosink),
GDK_WINDOW_XWINDOW(widget->window));
return FALSE;
}
这样就OK了。expose-event是drawingarea每次重绘的时候会发出的signal,应该说每次重绘都去set一遍不是很好,的确是这样,可以再改进。这里纯粹是演示一下。
1. new一个GtkDrawingArea
2. connect它的expose-event signal,e.g:
// Drawing on our drawing area
g_signal_connect(G_OBJECT(area), "expose-event", G_CALLBACK(expose_cb), NULL);
3. 书写callback函数expose_cb,e.g:
/* Callback to be called when the drawing area is exposed */
static gboolean expose_cb(GtkWidget * widget, GdkEventExpose * event, gpointer data)
{
// `play->videosink'就是video sink element
gst_x_overlay_set_xwindow_id(GST_X_OVERLAY(play->videosink),
GDK_WINDOW_XWINDOW(widget->window));
return FALSE;
}
这样就OK了。expose-event是drawingarea每次重绘的时候会发出的signal,应该说每次重绘都去set一遍不是很好,的确是这样,可以再改进。这里纯粹是演示一下。
相关文章推荐
- WPF中,如何使用图像API进行绘制而不是XAML?
- 电脑出现“损坏的图像”窗口提示dll没有被指定在Windows上运行如何解决
- WPF中,如何使用图像API进行绘制而不是XAML?——出自《IT168》
- WPF中,如何使用图像API进行绘制而不是XAML?——出自《IT168》
- tensorflow在训练模型的时候如何指定GPU进行训练
- QQ窗口抓取及如何进行自动化操作
- C# 中如何将List<string>里的集合转换成字符串并按指定的字符进行分隔?
- 如何实现按指定的字母序进行排序
- 如何在用户关掉web浏览器窗口前, 进行相应的动作
- Python如何读取指定文件夹下的所有图像
- 如何在模态对话框中进行提交而不新开窗口?
- js是如何实现拖拽raphael.js所绘制图像的
- 【VS开发】IPicture在指定窗口绘制图
- OPENCV如何读取指定目录图像
- CSplitterWnd窗口拆分后如何获得指定窗口的指针
- Visio中如何绘制黑白图像
- TCP是如何运用窗口进行流量控制
- 如何获得指定进程的主窗口
- 拆分窗口后,视图如何与文档进行关联
- 如何用ffmpeg进行Jpeg 或者其它格式图像的扣取