{"id":11571,"date":"2021-01-14T14:29:59","date_gmt":"2021-01-14T14:29:59","guid":{"rendered":"http:\/\/blog.bachi.net\/?p=11571"},"modified":"2021-01-25T08:35:37","modified_gmt":"2021-01-25T08:35:37","slug":"qt-video-streaming","status":"publish","type":"post","link":"https:\/\/blog.bachi.net\/?p=11571","title":{"rendered":"Qt Video Streaming with OpenCV and GStreamer"},"content":{"rendered":"<ul>\n<li>gstreamer<\/li>\n<li>Qt<\/li>\n<li>OpenCV<\/li>\n<\/ul>\n<hr>\n<p><!-- --------------------------------------------------------------------------------- --><\/p>\n<h3>Qt 6.0<\/h3>\n<p><a href=\"https:\/\/wiki.qt.io\/New_Features_in_Qt_6.0\">New Features in Qt 6.0<\/a><br \/>\nRemoved Modules<\/p>\n<ul>\n<li>Qt Multimedia Widgets<\/li>\n<\/ul>\n<p><a href=\"https:\/\/doc-snapshots.qt.io\/qt6-dev\/whatsnew60.html\">What&#8217;s New in Qt 6.0<\/a><br \/>\nRemoved Modules<\/p>\n<ul>\n<li>Qt Bluetooth <code>bluetooth<\/code><\/li>\n<li>Qt Multimedia <code>multimedia<\/code><\/li>\n<li>Qt Multimedia Widgets <code>multimediawidgets<\/code><\/li>\n<\/ul\n\n\n\n<hr>\n<p><!-- --------------------------------------------------------------------------------- --><\/p>\n<h3>Livekeys (ex. Livecv)<\/h3>\n<p><a href=\"https:\/\/livekeys.io\/\">Livekeys<\/a><br \/>\n<a href=\"http:\/\/livecv.dinusv.com\/\">Livecv<\/a><br \/>\n<a href=\"https:\/\/github.com\/live-keys\/livekeys\">github.com\/live-keys\/livekeys<\/a><\/p>\n<h4>YouTube<\/h4>\n<p><a href=\"https:\/\/www.youtube.com\/watch?v=2zTY6CFhP_A\">Live CV &#8211; Feature Detection Module<\/a><br \/>\n<a href=\"https:\/\/www.youtube.com\/watch?v=ZPt5KSy1wh0\">Livekeys &#8211; Live Coding Environment<\/a><\/p>\n<hr>\n<p><!-- --------------------------------------------------------------------------------- --><\/p>\n<h3>basysKom GmbH<\/h3>\n<p><a href=\"https:\/\/fbi.h-da.de\/personen\/eva-brucherseifer\/\">Prof. Dr. Eva Brucherseifer &#8211; Hochschule Darmstadt<\/a><br \/>\n<a href=\"https:\/\/github.com\/basysKom\">github.com\/basysKom<\/a><br \/>\n<a href=\"https:\/\/blog.basyskom.com\/2020\/connect-qt-app-with-azure-iot-hub\/\">Azure IoT Hub: Connecting a Qt Application with Azure (Part 1 of 4)<\/a><\/p>\n<hr>\n<p><!-- --------------------------------------------------------------------------------- --><\/p>\n<h3>RidgeRun Embedded Solutions<\/h3>\n<p><a href=\"https:\/\/www.ridgerun.com\/gstreamer-qt-overlay\">GstQtOverlay<\/a><br \/>\n<a href=\"https:\/\/developer.ridgerun.com\/wiki\/index.php?title=Gstreamer_QT_Overlay\">Gstreamer QT Overlay<\/a><\/p>\n<hr>\n<p><!-- --------------------------------------------------------------------------------- --><\/p>\n<h3>GStreamer<\/h3>\n<p><a href=\"https:\/\/gstreamer.freedesktop.org\/documentation\/tutorials\/basic\/streaming.html?gi-language=c\">Basic tutorial 12: Streaming<\/a><\/p>\n<hr>\n<p><!-- --------------------------------------------------------------------------------- --><\/p>\n<h3>QtGStreamer \/ qt-gstreamer<\/h3>\n<p><a href=\"https:\/\/gstreamer.freedesktop.org\/modules\/qt-gstreamer.html\">Qt bindings<\/a><br \/>\n<a href=\"https:\/\/gstreamer.freedesktop.org\/bindings\/qt.html\">Bindings for Qt<\/a><br \/>\n<a href=\"https:\/\/gstreamer.freedesktop.org\/data\/doc\/gstreamer\/head\/qt-gstreamer\/html\/\">QtGStreamer API Reference<\/a><br \/>\n<a href=\"https:\/\/github.com\/GStreamer\/qt-gstreamer\">github.com\/GStreamer\/qt-gstreamer<\/a><br \/>\n<a href=\"https:\/\/bugs.kde.org\/show_bug.cgi?id=406676\">Bug 406676 &#8211; ktp-call-ui depends on unmaintained qt-gstreamer<\/a>, 2019-04-19<br \/>\n<a href=\"https:\/\/github.com\/KDE\/ktp-call-ui\">github.com\/KDE\/ktp-call-ui<\/a><\/p>\n<h4>Questions<\/h4>\n<p><a href=\"https:\/\/forum.qt.io\/topic\/85029\/streaming-camera-video-data-over-network-video-out\/3\">Streaming camera video data over network <\/a><br \/>\n<a href=\"https:\/\/forum.qt.io\/topic\/36031\/streaming-video-over-network\">Streaming video over network<\/a><\/p>\n<hr>\n<p><!-- --------------------------------------------------------------------------------- --><\/p>\n<h3>qmlglsink<\/h3>\n<p><a href=\"https:\/\/gstreamer.freedesktop.org\/documentation\/qmlgl\/qmlglsink.html?gi-language=c\">qmlglsink Documentation<\/a><\/p>\n<p><a href=\"https:\/\/github.com\/GStreamer\/gst-examples\/tree\/master\/playback\/player\/qt\">github.com\/GStreamer\/gst-examples\/tree\/master\/playback\/player\/qt<\/a><br \/>\n<a href=\"http:\/\/ystreet00.blogspot.com\/2016\/06\/qmlglsink-gstreamer-and-qts-qml.html\">qmlglsink &#8211; GStreamer and Qt&#8217;s QML<\/a><br \/>\n<a href=\"http:\/\/gstreamer-devel.966125.n4.nabble.com\/How-to-use-qmlglsink-and-GstGLVideoItem-td4683911.html\">How to use qmlglsink and GstGLVideoItem<\/a><br \/>\n<a href=\"http:\/\/pepijndevos.nl\/2018\/10\/02\/qtgstreamerddsandroid.html\">Qt+GStreamer+DDS+Android<\/a><\/p>\n<h4>Questions<\/h4>\n<p><a href=\"https:\/\/stackoverflow.com\/questions\/63268343\/gstreamer-pipeline-how-to-connect-filesrc-to-qmlglsink\">GStreamer &#8211; Pipeline how to connect filesrc to qmlglsink<\/a><br \/>\n<a href=\"https:\/\/stackoverflow.com\/questions\/39531771\/how-to-include-a-gstreamer-sink-in-a-qml-videoitem\">How to include a gstreamer sink in a QML VideoItem?<\/a><br \/>\n<a href=\"https:\/\/stackoverflow.com\/questions\/60884812\/qt-qmlglsink-gstreamer-output-tearing\">Qt qmlglsink &#8211; GStreamer output tearing<\/a><br \/>\n<a href=\"https:\/\/stackoverflow.com\/questions\/56122402\/display-video-in-qml-via-gstreamer-qmlglsink-plugin\">Display video in Qml via Gstreamer qmlglsink plugin<\/a><\/p>\n<hr>\n<p><!-- --------------------------------------------------------------------------------- --><\/p>\n<h3>Documentation<\/h3>\n<p><a href=\"https:\/\/docs.opencv.org\/3.4\/dd\/d9e\/classcv_1_1VideoWriter.html\">cv::VideoWriter Class Reference<\/a>, 3.4<br \/>\n<a href=\"https:\/\/docs.opencv.org\/4.5.1\/dd\/d9e\/classcv_1_1VideoWriter.html\">cv::VideoWriter Class Reference<\/a>, 4.5.1<\/p>\n<hr>\n<p><!-- --------------------------------------------------------------------------------- --><\/p>\n<h3>Examples<\/h3>\n<p><a href=\"https:\/\/doc.qt.io\/qt-5\/multimedia-examples.html\">Qt Multimedia Examples<\/a><br \/>\n<a href=\"https:\/\/doc.qt.io\/qt-5\/qtmultimedia-multimediawidgets-videographicsitem-example.html\">Video Graphics Item Example<\/a><br \/>\n<a href=\"https:\/\/doc.qt.io\/qt-5\/qtmultimedia-multimedia-audioinput-example.html\">Audio Input Example<\/a><\/p>\n<hr>\n<p><!-- --------------------------------------------------------------------------------- --><\/p>\n<h3>Tutorials<\/h3>\n<p><a href=\"https:\/\/www.elektroniknet.de\/embedded\/software\/opencv-und-qt-quick-ein-einstieg.161630.html\">OpenCV und Qt Quick &#8211; ein Einstieg<\/a><br \/>\n<a href=\"https:\/\/blog.basyskom.com\/wp-content\/uploads\/2020\/02\/basysKom_qmlopencv_trah.pdf\">basysKom_qmlopencv_trah.pdf<\/a>, Torsten Rahn, torsten.rahn@basyskom.com<\/p>\n<p><a href=\"https:\/\/towardsdatascience.com\/opencv-with-gstreamer-and-qt-on-windows-6f0fdb075993\">OpenCV with GStreamer and QT on Windows<\/a><br \/>\n<a href=\"https:\/\/amin-ahmadi.com\/2018\/03\/29\/how-to-read-process-and-display-videos-using-qt-and-opencv\/\">How to Read, Process and Display Videos Using Qt and OpenCV<\/a><br \/>\n<a href=\"https:\/\/funvision.blogspot.com\/2020\/03\/compile-opencv-4-for-visual-studio-2019.html\">Compile Opencv with GStreamer for Visual Studio 2019 on windows 10 with and contribution modules<\/a><br \/>\n<a href=\"https:\/\/blogs.igalia.com\/xrcalvar\/2012\/04\/29\/painting-video-with-gstreamer-and-qtqml-or-gtk-with-overlay\/\">Painting video with GStreamer and Qt\/QML or Gtk+ with overlay<\/a><\/p>\n<h4>Book: Computer Vision with OpenCV 3 and Qt5<\/h4>\n<p>Introduction to QML<br \/>\n<a href=\"https:\/\/github.com\/PacktPublishing\/Computer-Vision-with-OpenCV-3-and-Qt5\/tree\/master\/ch12\/CvQml\">github.com\/PacktPublishing\/Computer-Vision-with-OpenCV-3-and-Qt5\/tree\/master\/ch12\/CvQml<\/a><\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n    qmlRegisterType&lt;QImageProcessor&gt;(&quot;com.amin.classes&quot;, 1, 0, &quot;ImageProcessor&quot;);\r\n    qmlRegisterType&lt;QImageViewer&gt;(&quot;com.amin.classes&quot;, 1, 0, &quot;ImageViewer&quot;);\r\n<\/pre>\n<hr>\n<p><!-- --------------------------------------------------------------------------------- --><\/p>\n<h3>Questions<\/h3>\n<p><a href=\"https:\/\/stackoverflow.com\/questions\/21246766\/how-to-efficiently-display-opencv-video-in-qt\">How to efficiently display OpenCV video in Qt?<\/a><br \/>\n<a href=\"https:\/\/forum.qt.io\/topic\/105754\/sending-opencv-images-continuously-from-c-to-qml\/18\">Sending OpenCV images continuously from C++ to Qml<\/a><br \/>\n<a href=\"https:\/\/forum.qt.io\/topic\/38978\/solved-send-qimage-from-c-to-qml-via-qquickimageprovider-or-using-a-signal\">Send QImage from C++ to QML via QQuickImageProvider or using a signal<\/a><br \/>\n<a href=\"https:\/\/forum.qt.io\/topic\/93414\/qml-desktop-streaming\">QML Desktop Streaming<\/a><br \/>\n<a href=\"https:\/\/forum.qt.io\/topic\/77198\/open-a-microphone-device-with-qaudioinput\">Open a microphone device with QAudioInput<\/a><br \/>\n<a href=\"https:\/\/stackoverflow.com\/questions\/43412797\/opening-a-gstreamer-pipeline-from-opencv-with-videowriter\">Opening a GStreamer pipeline from OpenCV with VideoWriter<\/a><br \/>\n<a href=\"https:\/\/stackoverflow.com\/questions\/46219454\/how-to-open-a-gstreamer-pipeline-from-opencv-with-videowriter\">How to open a GStreamer pipeline from OpenCV with VideoWriter<\/a><br \/>\n<a href=\"https:\/\/stackoverflow.com\/questions\/48379687\/qt-overlay-over-gstreamer\">Qt Overlay over GStreamer<\/a><\/p>\n<hr>\n<p><!-- --------------------------------------------------------------------------------- --><\/p>\n<h3>GitHub<\/h3>\n<p><a href=\"https:\/\/github.com\/chili-epfl\/qml-cvcamera\">github.com\/chili-epfl\/qml-cvcamera<\/a>, CVCamera is a QML wrapper for fast camera access using OpenCV<br \/>\n<a href=\"https:\/\/gist.github.com\/oKcerG\/a5b59c7583c85ff03bdec238eed8bcd8\">oKcerG\/windowhole.cpp<\/a><br \/>\n<a href=\"https:\/\/github.com\/GStreamer\/gst-plugins-base\/blob\/master\/tests\/examples\/overlay\/qt-videooverlay.cpp\">github.com\/GStreamer\/gst-plugins-base\/blob\/master\/tests\/examples\/overlay\/qt-videooverlay.cpp<\/a><\/p>\n<hr>\n<p><!-- --------------------------------------------------------------------------------- --><\/p>\n<h3>YouTube<\/h3>\n<p><a href=\"https:\/\/www.youtube.com\/watch?v=F8oBROZXoA0\">Opencv GStreamer on Windows video writer to stream from C++ app to IP address to the web player<\/a><br \/>\n<a href=\"https:\/\/www.youtube.com\/watch?v=HDY8pf-b1nA\">Video Streaming Made Awesome with GStreamer and Python &#8211; sunhacks 2020 Talk<\/a><\/p>\n<h4>Damian Ziobro<\/h4>\n<p><a href=\"https:\/\/www.youtube.com\/watch?v=CthwGSmKXtk\">GStreamer + QT\/QML integration on RaspberryPI<\/a><br \/>\n<a href=\"https:\/\/www.linkedin.com\/in\/damianziobro\/\">LinkedIn<\/a><br \/>\n<a href=\"https:\/\/github.com\/DamZiobro\">GitHub<\/a><\/p>\n<hr>\n<p><!-- --------------------------------------------------------------------------------- --><\/p>\n<h3>FFMPEG \/ libav<\/h3>\n<p><a href=\"https:\/\/www.bojankomazec.com\/2020\/12\/webcam-capture-with-ffmpeg-and-opencv.html\">Webcam capture with ffmpeg and OpenCV from Jupyter Notebook<\/a><br \/>\n<a href=\"https:\/\/stackoverflow.com\/questions\/55141315\/storing-rtsp-stream-as-video-file-with-opencv-videowriter\">Storing RTSP stream as video file with OpenCV VideoWriter<\/a><br \/>\n<a href=\"https:\/\/doc.qt.io\/archives\/qtextended4.4\/ffmpeg.html\">Qt Tutorial: Simple Media Engine<\/a><br \/>\n<a href=\"https:\/\/www.youtube.com\/watch?v=fk1bxHi6iSI\">An Introduction to Building tools with FFmpeg libraries and APIs &#8211; Matt Szatmary | August 2019<\/a>, Qt!<br \/>\n<a href=\"https:\/\/www.youtube.com\/watch?v=W6Yx3injNZs\">Decoding video pixel data in C++ using FFmpeg (Part 1)<\/a><br \/>\n<a href=\"https:\/\/forum.qt.io\/topic\/113778\/qt-and-ffmpeg-how-to-work-with-sound\">Qt and ffmpeg, how to work with sound<\/a><br \/>\n<a href=\"http:\/\/dranger.com\/ffmpeg\/\">An ffmpeg and SDL Tutorial<\/a>, or How to Write a Video Player in Less Than 1000 Lines<br \/>\n<a href=\"https:\/\/github.com\/leandromoreira\/ffmpeg-libav-tutorial\">github.com\/leandromoreira\/ffmpeg-libav-tutorial<\/a><\/p>\n<hr>\n<p><!-- --------------------------------------------------------------------------------- --><\/p>\n<h4>QtAV<\/h4>\n<p><a href=\"https:\/\/github.com\/wang-bin\/QtAV\">github.com\/wang-bin\/QtAV<\/a><br \/>\n<a href=\"https:\/\/github.com\/wang-bin\/QtAV\/issues\/1086\">In Qtavplayer sending hd video live streaming playing with http stream the video is freezing how can i solve the issue #1086<\/a><br \/>\n<a href=\"https:\/\/www.fatalerrors.org\/a\/introduction-compilation-and-simple-use-of-qtav-video-player.html\">Introduction, compilation and simple use of QtAV video player<\/a><\/p>\n<h4>libavinc<\/h4>\n<p><a href=\"https:\/\/github.com\/szatmary\/libavinc\">github.com\/szatmary\/libavinc<\/a><\/p>\n<hr>\n<p><!-- --------------------------------------------------------------------------------- --><\/p>\n<h3>QCamera<\/h3>\n<p><a href=\"https:\/\/doc.qt.io\/qt-5\/cameraoverview.html\">Camera Overview<\/a><br \/>\n<a href=\"https:\/\/stackoverflow.com\/questions\/49109558\/have-two-qcameraviewfinder-for-one-qcamera\">Have two QCameraViewFinder for one QCamera<\/a><br \/>\n<a href=\"https:\/\/www.youtube.com\/watch?v=aOCLUpk6QAU\">Mastering Qt 5 GUI Programming: Multimedia Capture | packtpub.com<\/a><br \/>\n<a href=\"https:\/\/www.qtcentre.org\/threads\/57090-How-could-I-get-the-image-buffer-of-QCamera\">How could I get the image buffer of QCamera?<\/a><\/p>\n<hr>\n<p><!-- --------------------------------------------------------------------------------- --><\/p>\n<h1>Examples<\/h1>\n<h3>Nick D&#8217;Ademo &#8211; qt-opencv-multithreaded<\/h3>\n<p><a href=\"http:\/\/nickdademo.blogspot.com\/2011\/02\/qt-opencv-multithreaded-v112-released.html\">qt-opencv-multithreaded: v1.12 Released<\/a><br \/>\n<a href=\"http:\/\/nickdademo.blogspot.com\/2012\/02\/qt-opencv-multithreaded-v121-released.html\">qt-opencv-multithreaded: v1.21 Released<\/a><br \/>\n<a href=\"https:\/\/github.com\/nickdademo\/qt-opencv-multithreaded\">github.com\/nickdademo\/qt-opencv-multithreaded<\/a><\/p>\n<h3>Live Motion Magnification<\/h3>\n<p><a href=\"https:\/\/github.com\/tschnz\/Live-Video-Magnification\">github.com\/tschnz\/Live-Video-Magnification<\/a><\/p>\n<h3>MultiCV<\/h3>\n<p><a href=\"https:\/\/github.com\/citiZenStef\/MultiCV\">github.com\/citiZenStef\/MultiCV<\/a><\/p>\n<h3>sabi edu &#8211; rtsp streaming vehicle counter and classification<\/h3>\n<ul>\n<li>qt 5.4.1<\/li>\n<li>opecv 3.1<\/li>\n<li>ubuntu 15.04<\/li>\n<\/ul>\n<p><a href=\"https:\/\/www.youtube.com\/watch?v=ziC2k7KKLlI\">rtsp streaming vehicle counter and classification<\/a><\/p>\n<h3>Chris Dahms &#8211; OpenCV Car Counting<\/h3>\n<ul>\n<li>Visual Studio<\/li>\n<li>OpenCV<\/li>\n<\/ul>\n<p><a href=\"https:\/\/www.youtube.com\/watch?v=Y3ac5rFMNZ0\">OpenCV 3 Car Counting C++ full source code<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>gstreamer Qt OpenCV Qt 6.0 New Features in Qt 6.0 Removed Modules Qt Multimedia Widgets What&#8217;s New in Qt 6.0 Removed Modules Qt Bluetooth bluetooth Qt Multimedia multimedia Qt Multimedia Widgets multimediawidgets<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-11571","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blog.bachi.net\/index.php?rest_route=\/wp\/v2\/posts\/11571","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.bachi.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.bachi.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.bachi.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.bachi.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=11571"}],"version-history":[{"count":23,"href":"https:\/\/blog.bachi.net\/index.php?rest_route=\/wp\/v2\/posts\/11571\/revisions"}],"predecessor-version":[{"id":11649,"href":"https:\/\/blog.bachi.net\/index.php?rest_route=\/wp\/v2\/posts\/11571\/revisions\/11649"}],"wp:attachment":[{"href":"https:\/\/blog.bachi.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=11571"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.bachi.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=11571"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.bachi.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=11571"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}