i'm trying play video in qt widget on linux.
how implement video widget in qt builds upon gstreamer?
the above question pretty close want, 6 years old. qapplication::syncx();
no longer exists in qt5 dropped that. i've changed gst_x_overlay_set_xwindow_id()
gst_video_overlay_set_window_handle
gstreamer version change.
my pipeline works if don't pass window handle video sink (it pops new window video). i'm not sure if i'm missing render inside of qt though.
edit
i can set entire app window overlay, not subsection of main widget. also, couldn't appsink working, glimagesink seems work.
// qwidget* widget = qapplication::activewindow(); // works qwidget* widget = new qwidget(ui->base_widget); // doesn't work widget->setattribute(qt::wa_nativewindow, true); widget->resize(320,240); widget->update(); widget->setstylesheet("background-color: red"); widget->show(); winid = widget->winid(); qapplication::sync(); gst_video_overlay_set_window_handle(gst_video_overlay(sink) , winid);
if purpose here render video can use autovideosink
create suitable window , not need worry handling manually.
however if still want render on widget window say, try appsink
, read frames on sink , use onpaint
event in widget render frames. sure frames in format can rendered rgb can via videoconvert
or ensure format via capsfilter
. might able use glimagesink
, pass window id render frames.
if want render video on qvideowidget
using appsink
mentioned above try:
video_widget->setattribute(qt::wa_nativewindow, true); wid win_id = video_widget->winid(); qapplication::sync(); gst_x_overlay_set_window_handle(gst_x_overlay(data->appsink), win_id);
Comments
Post a Comment