{"id":1950,"date":"2017-11-27T16:30:52","date_gmt":"2017-11-27T11:00:52","guid":{"rendered":"http:\/\/localhost:8081\/system-on-module-som\/?p=1950"},"modified":"2025-03-26T13:28:08","modified_gmt":"2025-03-26T07:58:08","slug":"how-to-quickly-develop-a-camera-streaming-application-on-esomimx6","status":"publish","type":"post","link":"https:\/\/www.e-consystems.com\/blog\/system-on-module-som\/how-to-quickly-develop-a-camera-streaming-application-on-esomimx6\/","title":{"rendered":"How to quickly develop a camera streaming application on eSOMiMX6"},"content":{"rendered":"<div>\n<p>In recent years, use of cameras in embedded systems has grown tremendously. They are used in different embedded devices like:<\/p>\n<div style=\"width: 100%; float: left;\">\n<!--\n\n\n<div style=\"width: 50%; float: left;\">--><\/p>\n<ul>\n<li>Medical Diagnostics devices<\/li>\n<li>Security devices<\/li>\n<li>Traffic monitoring devices<\/li>\n<\/ul>\n<p>This blog explores various frameworks available on <span lang=\"zxx\"><u><a href=\"https:\/\/www.e-consystems.com\/iMX6-micro-som-system-on-module.asp\" target=\"_blank\" rel=\"noopener noreferrer\">eSOMiMX6<\/a> <\/u><\/span>device to quickly develop a USB camera streaming application. The following frameworks are readily available in <span style=\"color: #000080;\"><span lang=\"zxx\"><u><a href=\"https:\/\/www.e-consystems.com\/iMX6-micro-som-system-on-module.asp\" target=\"_blank\" rel=\"noopener noreferrer\">eSOMiMX6<\/a> <\/u><\/span><\/span><span ><span lang=\"zxx\">devices to quickly develop camera streaming applications<\/span><\/span><span ><span lang=\"zxx\">:<\/span><\/span><\/p>\n<ul>\n<li>Gstreamer<\/li>\n<li>Qt-Multimedia<\/li>\n<li>Qt-Gstreamer<\/li>\n<\/ul>\n<p><!--<\/div>\n\n\n\n\n<div style=\"width: 50%; float: right;\">\n\n\n<table style=\"width: 425px; margin: 0px auto; border: 1px solid #FFBC7D;\" align=\"center\">\n\n\n<tbody>\n\n\n<tr style=\"border: 1px solid #FFBC7D;\">\n\n\n<td align=\"center\" width=\"24%\"><img decoding=\"async\" loading=\"lazy\" style=\"vertical-align: middle;\" src=\"https:\/\/www.e-consystems.com\/blog\/system-on-module-som\/wp-content\/uploads\/2018\/01\/QT-Series.jpg\" alt=\"Adobe Spark\" width=\"100\" height=\"125\" \/><\/td>\n\n\n\n\n<td width=\"1%\"><\/td>\n\n\n\n\n<td style=\"text-align: center; background: #FF7D01; margin: 0px auto; border-spacing: 0px; color: #ffffff; font-size: 18px;\" align=\"center\" width=\"75%\"><strong>Try Camera Streaming Applications On eSOMiMX6<\/strong><\/td>\n\n\n<\/tr>\n\n\n\n\n<tr style=\"width: 100%; height: 25px; text-align: left; background: #FFBC7D; margin: 0px auto; border-spacing: 0px; color: #000000; font-size: 15px;\">\n\n\n<td colspan=\"3\" align=\"left\"><a href=\"https:\/\/developer.e-consystems.com\/Downloads?key=eHXS6SCPs08yz6FWgn2e2846FoGXHA2gsAukFj7YZgcp7haRxVfadSi6%2FYZSjdwKpn2rCG8guswNiX86G%2F7Sp9rD9MHV0Q5Kw%2BKP%2Fr9Xu%2BRXjNTubmNj%2F1DK4xBrC54ug%2BvFRlHVlgCeJAiNY2x0adJiGx55kjsyLzCvYajrOosMfvgT2bLs7szQwpTfidpT%2BAtyORXy0cjKRG1z3j%2FbEbms%2F1qP7IEG7w9fe4xjv%2BiStfW%2BlXzHmci86nbLRtGsai00prwBiarLjsdSb4960607jAdQitU7mlgHG7iZajVfwxYdMz4cQT7ii%2FA%2FG%2BPx\" target=\"_blank\" rel=\"noopener noreferrer\"> Qt-QML-Setup-Qt-Creator-Steps Application Guide <\/a><\/td>\n\n\n<\/tr>\n\n\n\n\n<tr style=\"width: 100%; height: 25px; text-align: left; background: #FFFFFF; margin: 0px auto; border-spacing: 0px; color: #000000; font-size: 15px;\">\n\n\n<td colspan=\"3\" align=\"left\"><a href=\"https:\/\/developer.e-consystems.com\/Downloads?key=eHXS6SCPs08yz6FWgn2e25WyQNMV%2Flu%2B8SruZF9XsgsURCOnY4UQCTQ%2Fccm%2BduqHayYfHxF9aECVTI8V%2FRV6OTxW%2FAZxO1e28vGLW3lOoFSxXgvDUY31lteU%2FNu7qX2lukW2PVob%2FdYt6tPb%2BcKYnI24L3JonmitxIOoarFqmBnf1jaeVYn45YYWcfUrPY5P3Qi8mH33qu4dvWkbQKP9C6UVNSczNx91Nwk5JreQroHa%2BZVqQgTHU0bR5LyJ3On%2FeELBunO67jcOyeEpBoyW%2FQ7tFxzVLtXoDVsH68KLl14QemXgturpayLPQ3E17O63\" target=\"_blank\" rel=\"noopener noreferrer\"> Qt-QML-Build-Deploy-Run-Steps Application Guide<\/a><\/td>\n\n\n<\/tr>\n\n\n\n\n<tr style=\"width: 100%; height: 25px; text-align: left; background: #FFBC7D; margin: 0px auto; border-spacing: 0px; color: #000000; font-size: 15px;\">\n\n\n<td colspan=\"3\" align=\"left\"><a href=\"https:\/\/developer.e-consystems.com\/Downloads?key=eHXS6SCPs08yz6FWgn2e243NRDUZt03oRnpd5O68ViTiJ%2FtSy9w2yBhyNNurjtrlzYlFafu6%2BlCosvNvrVUX4HHS9MMZi6McYNTI7GV7%2BVYxkTdU374hSpxibltW1%2FsnEqXuxPdyAuC9DwXk5ZVNHQkl3jsShERhVGEx6z5dQy4rEzxsCEIS1fheiUm0StwbBma72ZTjajM2kN1MRheRZZ5jE16IcCo41dFAGkU0CYgwVkwTWeRDVFP%2BmMtWLh%2B7ZxjRRWpJa42I0JwByuPh%2FxTcvNVRwexR0TUM1Q%2B7s91LynFcI7Qxxy4QbW1g%2BP4p\" target=\"_blank\" rel=\"noopener noreferrer\"> Qt-QML-USB-Camera-Stream-Capture-Program Application Guide<\/a><\/td>\n\n\n<\/tr>\n\n\n\n\n<tr style=\"width: 100%; height: 25px; text-align: left; background: #FFFFFF; margin: 0px auto; border-spacing: 0px; color: #000000; font-size: 15px;\">\n\n\n<td colspan=\"3\" align=\"left\"><a href=\"https:\/\/developer.e-consystems.com\/Downloads?key=eHXS6SCPs08yz6FWgn2e207URNyrjd4Mesj4KyUcf3KklbAGju3DrSAtfcM0NKnI2E008h2MKxKxSfS9OdmhDhTH5lvfzpYI%2BlxGHl4JOKHkN%2BFKXuHNMaNyMyhByBQt4C1H%2FE1o0X%2FvhSFNACMk6nD7PIfBXstA7ts6aIVf%2BuSB%2F2cBjed%2BKZWSrzQj9S9aw3HnqqoG7Ngz6GyqGuRfrC08Ynq7KWLxarGS2sO0l23SJ52u3gOzRXzvHzmv2AdGUh%2FbMleQfci3hsyXqULrOWpAdFSvVFtVX7vajHXIVJ1kzPkjZeyqI5iMfbIzaN3B\" target=\"_blank\" rel=\"noopener noreferrer\"> Building Qt-GStreamer for eSOMiMX6 Application Guide<\/a><\/td>\n\n\n<\/tr>\n\n\n\n\n<tr style=\"width: 100%; height: 25px; text-align: left; background: #FFBC7D; margin: 0px auto; border-spacing: 0px; color: #000000; font-size: 15px;\">\n\n\n<td colspan=\"3\" align=\"left\"><a href=\"https:\/\/developer.e-consystems.com\/Downloads?key=eHXS6SCPs08yz6FWgn2e22VporLhziLpKA1J%2FhtA1qAuQxGwxq5hILUA2gONNlcdI4OsNxfUZtBtk5JjrtF1OI%2FMOGUoYGCy1vr3MZCWeINokhAqToLFTQD4Caw8DVVQsD0%2FaBxKNj0ZbTcaBn%2FVm7Z3J8FVHDL4ooEUAdrCciBN9dJC6JvB0%2F9zHLeEC0gZTu2S1Kd0v4Lb%2BeePQuI6YjZKc%2BTRNKc7ZpzYo59lj8%2FUEYZ5QxR5TzYg%2BiJ56ZWrC%2FrLyoS3FUyX5u3ToCzbk7dA%2FsyerRvnLKk735hQefA%3D\" target=\"_blank\" rel=\"noopener noreferrer\"> Qt-GStreamer Package Containing Qt-GStreamer Source And Camera Streaming Application<\/a><\/td>\n\n\n<\/tr>\n\n\n\n\n<tr style=\"width: 100%; height: 25px; text-align: left; background: #FFFFFF; margin: 0px auto; border-spacing: 0px; color: #000000; font-size: 15px;\">\n\n\n<td colspan=\"3\" align=\"left\"><a href=\"https:\/\/developer.e-consystems.com\/Downloads?key=eHXS6SCPs08yz6FWgn2e2xePtcU%2FUjmQF4HlBsXBed4f6iTlD3Jbm4CnQVwv3ZXP9tPysAWy9emXjOueMgtqQIXg%2FMLMQp7%2B2hNGlmtNJAhJJLabaqS3nLczJO2Ubbundk%2B5N7iN2r%2F8graL3D%2B5WOJA3yJnNIRnanPmNJDjTzhh%2FEyYSGdglXhWIHYWAVp1dN5AL4Wm88xs%2FFztkH%2FIpuFUBt4AdeN5TwmkulIq5F0vNjlZrZo3h0L69pq58MZWf2DecjG40PQaRx9iPVBC%2FeOICDasaEudqPaIyY5jSA4%3D\" target=\"_blank\" rel=\"noopener noreferrer\"> Qt-Intermediate Samples Containing QML Camera Streaming Application<\/a><\/td>\n\n\n<\/tr>\n\n\n<\/tbody>\n\n\n<\/table>\n\n\n<\/div>\n\n\n--><\/div>\n<p><b>GStreamer<\/b> is a pipeline-based multimedia framework that links together a wide variety of media processing systems to complete complex workflows. GStreamer provides application\u2019s multimedia service such as video editors, media streaming and media players.<\/p>\n<p>To work with Webcam using <strong>gstreamer<\/strong>, we need to use <strong>Video4Linux (<\/strong><strong><b>V4l2<\/b><\/strong><strong>)<\/strong> driver input &#8211; <strong>v4l2src<\/strong>. Video4Linux is an API and driver framework to capture and playback from video devices. It supports several types of USB cameras and other devices. <b>v4l2src<\/b> is an element of the plugin <b>Video4Linux2. v4l2src can<\/b> read frames from a webcam.<\/p>\n<p>The following command streams frames from a attached webcam:<\/p>\n<\/div>\n<div>\n<pre class=\"x_x_western\"><b>gst-launch-1.0 v4l2src device=\"\/dev\/video0\" ! autovideosink<\/b>\n\n<\/pre>\n<p><a href=\"https:\/\/www.e-consystems.com\/iMX6-micro-som-system-on-module.asp\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"color: #000080;\"><span lang=\"zxx\"><u>eSOMiMX6<\/u><\/span><\/span><\/a> root file system is already packed with gstreamer0.10 and various plugins required to develop camera streaming applications.<\/p>\n<p><b>Qt Multimedia<\/b> is an essential module that provides a set of QML types and C++ classes to handle the multimedia contents. It provides APIs to access the camera functionalities. The following snippet streams from the attached webcam:<\/p>\n<pre class=\"x_x_western\"><b>Camera {\n         id: camera\n \n         onError: {\n             console.log(\"CAMERA ERR: \" + errorCode + \" \" + errorString)\n         }\n \n    }\n \n     VideoOutput {\n         id: previewArea\n         source: camera\n         fillMode: VideoOutput.PreserveAspectCrop\n         anchors.fill: parent\n     }<\/b><\/pre>\n<p><a href=\"https:\/\/www.e-consystems.com\/iMX6-micro-som-system-on-module.asp\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"color: #000080;\"><span lang=\"zxx\"><u>eSOMiMX6<\/u><\/span><\/span><\/a> root file system is already packed with latest Qt modules required to develop camera streaming applications.<b>QtGStreamer<\/b> is a set of libraries providing C++ bindings for GStreamer with a Qt-style API, plus some helper classes and elements for integrating GStreamer better in Qt applications. After implementing the pipeline in C++, the below snippet can stream a webcam :<\/p>\n<pre class=\"x_x_western\">    VideoItem {\n\n        <span style=\"color: #800000;\">id<\/span>: <span style=\"color: #000000;\"><i>videoSurface<\/i><\/span>\n        <span style=\"color: #800000;\">y<\/span>: <span style=\"color: #800080;\">Screen<\/span>.height * 0.1\n        <span style=\"color: #800000;\">width<\/span>: <span style=\"color: #800080;\">Screen<\/span>.width * 0.75\n        <span style=\"color: #800000;\">height<\/span>: <span style=\"color: #800080;\">Screen<\/span>.height * 0.9\n        <span style=\"color: #800000;\">surface<\/span>: <span style=\"color: #000080;\"><i>videoSurface1<\/i><\/span>\n    }<\/pre>\n<p>We\u2019ve already developed a full fledged camera applications using Qt and Qt-Gstreamer frameworks. Both the applications supports following features:<\/p>\n<ul>\n<li>Streaming<\/li>\n<li>Capture image<\/li>\n<li>Image gallery<\/li>\n<\/ul>\n<p>Please visit our <a href=\"https:\/\/www.e-consystems.com\/auth\/Account\/login\" target=\"_blank\" rel=\"noopener noreferrer\"><span lang=\"zxx\"><u>developer website<\/u><\/span><\/a> to download camera applications with source code.<\/p>\n<p>Are you looking to quickly develop a streaming application using Qt? Then, the e-con Systems\u2122 <a href=\"https:\/\/www.e-consystems.com\/iMX6-micro-som-system-on-module.asp\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"color: #000080;\"><span lang=\"zxx\"><u>eSOMiMX6<\/u><\/span><\/span><\/a> based Ankaa kit might be a good solution for you.<\/p>\n<p><span lang=\"en-IN\">For further assistance and queries please get in touch with <\/span><a href=\"mailto:sales@e-consystems.com\" target=\"_blank\" rel=\"noopener noreferrer\"><span lang=\"en-IN\"><u>sales@e-consystems.com<\/u><\/span><\/a><\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>In recent years, use of cameras in embedded systems has grown tremendously. They are used&#8230;<\/p>\n","protected":false},"author":17,"featured_media":2136,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[210,212,343,127],"tags":[17,355,356,358,207,129,359,121,112,357,360,361],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.e-consystems.com\/blog\/system-on-module-som\/wp-json\/wp\/v2\/posts\/1950"}],"collection":[{"href":"https:\/\/www.e-consystems.com\/blog\/system-on-module-som\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.e-consystems.com\/blog\/system-on-module-som\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.e-consystems.com\/blog\/system-on-module-som\/wp-json\/wp\/v2\/users\/17"}],"replies":[{"embeddable":true,"href":"https:\/\/www.e-consystems.com\/blog\/system-on-module-som\/wp-json\/wp\/v2\/comments?post=1950"}],"version-history":[{"count":14,"href":"https:\/\/www.e-consystems.com\/blog\/system-on-module-som\/wp-json\/wp\/v2\/posts\/1950\/revisions"}],"predecessor-version":[{"id":3069,"href":"https:\/\/www.e-consystems.com\/blog\/system-on-module-som\/wp-json\/wp\/v2\/posts\/1950\/revisions\/3069"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.e-consystems.com\/blog\/system-on-module-som\/wp-json\/wp\/v2\/media\/2136"}],"wp:attachment":[{"href":"https:\/\/www.e-consystems.com\/blog\/system-on-module-som\/wp-json\/wp\/v2\/media?parent=1950"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.e-consystems.com\/blog\/system-on-module-som\/wp-json\/wp\/v2\/categories?post=1950"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.e-consystems.com\/blog\/system-on-module-som\/wp-json\/wp\/v2\/tags?post=1950"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}