24 QApplication qapp(argc, argv);
27 QGst::init(&argc, &argv);
29 QGst::ElementPtr videoSrc = QGst::ElementFactory::make(
"videotestsrc");
30 QGst::ElementPtr fallbackVideoSink = QGst::ElementFactory::make(
"qtvideosink");
31 QGst::PipelinePtr pipeline = QGst::Pipeline::create(
"mypipeline");
32 QGst::PipelinePtr fallbackPipeline = QGst::Pipeline::create(
"fallbackPipeline");
34 QGraphicsScene *scene =
new QGraphicsScene;
35 QGraphicsView *view =
new QGraphicsView(scene);
36 view->setViewport(
new QGLWidget);
38 QGst::Ui::GraphicsVideoSurface *surface =
new QGst::Ui::GraphicsVideoSurface(view);
39 QGst::Ui::GraphicsVideoWidget *widget =
new QGst::Ui::GraphicsVideoWidget;
40 widget->setSurface(surface);
42 scene->addItem(widget);
44 view->resize(400,400);
45 widget->resize(300,300);
47 pipeline->add(videoSrc, surface->videoSink());
48 videoSrc->link(surface->videoSink());
50 std::cout <<
"Video source name: " << surface->videoSink()->property(
"name").toString().toStdString() << std::endl;
53 if(!pipeline->setState(QGst::StatePlaying)) {
55 std::cout <<
"Could not play pipeline with opengl video sink. Trying to fall back to qtvideosink." << std::endl;
92 QGst::ElementPtr videoSrc = QGst::ElementFactory::make(
"videotestsrc");
93 QGst::ElementPtr videoSink = QGst::ElementFactory::make(
"qtglvideosink");
95 QGLWidget *glwidget =
new QGLWidget;
96 glwidget->makeCurrent();
97 videoSink->setProperty(
"glcontext", (
void*) QGLContext::currentContext());
98 glwidget->doneCurrent();
100 if (videoSink->setState(QGst::StateReady) != QGst::StateChangeSuccess) {
102 videoSink = QGst::ElementFactory::make(
"qtvideosink");
105 QGst::PipelinePtr pipeline = QGst::Pipeline::create(
"mypipeline");
106 pipeline->add(videoSrc, videoSink);
107 videoSrc->link(videoSink);
Image viewer with optional text and geometry overlay functionality.