# USB camera

Source: [https://docs.qualcomm.com/doc/80-70022-50/topic/usb-camera.html](https://docs.qualcomm.com/doc/80-70022-50/topic/usb-camera.html)

The **gst-ai-usb-camera-app** streams video from a USB webcam connected to the
        Qualcomm EVK. This webcam should be accessible as a /dev/videoX device.
        While you can perform object detection and preview the results, this procedure allows you to
        process the input from the USB camera without performing AI inferencing.

The AI USB camera application uses the
                /etc/config/config-usb-camera-app.json file to read the input
            parameters.

You can choose to run this application with and without AI inferencing. To run this
            application with AI inferencing, see [AI USB camera](https://docs.qualcomm.com/doc/80-70022-50/topic/ai-usb-camera.html).

The following figures show a pipeline, which processes the input from the USB camera to
            generate various outputs.

For more information about the plugins used in these pipelines, see [Pipeline flow](https://docs.qualcomm.com/doc/80-70022-50/topic/usb-camera.html#use-camera__section_sy3_wd2_ncc).

Figure : gst-usb-single-camera-app pipeline
            
            <?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="1260" height="480.064971923828125" viewbox="0 0 1260 480.064971923828125">
  <g>
    <rect x=".5" y=".499755859375" width="1259" height="479.0654296875" rx="7.499999999999943" ry="7.499999999999943" style="fill: #fafafa;"></rect>
    <path d="M1252,1c3.85986328125,0,7,3.14013671875,7,7v464.064971923828125c0,3.859832763671875-3.14013671875,7-7,7H8c-3.859832763671875,0-7-3.140167236328125-7-7V8c0-3.85986328125,3.140167236328125-7,7-7h1244M1252,0H8C3.581665039061591,0,0,3.581787109375,0,8v464.064971923828125c0,4.418167114257812,3.581665039061591,8,8,8h1244c4.418334960939319,0,8-3.581832885742188,8-8V8c0-4.418212890625-3.581665039060681-8-8-8h0Z" style="fill: #d2d7e1;"></path>
  </g>
  <g>
    <text transform="translate(19.999786376953125 32.159645080566406)" style="font-family: Roboto-Bold, Roboto; font-size: 16px; font-weight: 700;"><tspan x="0" y="0">Dump the camera YUV to a filesink</tspan></text>
    <g>
      <rect x="20" y="46.588877610954114" width="140" height="60" rx="4.000000000000002" ry="4.000000000000002" style="fill: #007884;"></rect>
      <g>
        <line x1="160" y1="76.5888671875" x2="194.259017944335938" y2="76.5888671875" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="193.091827392578125 80.57794189453125 200 76.5888671875 193.091827392578125 72.59979248046875 193.091827392578125 80.57794189453125"></polygon>
      </g>
      <text transform="translate(64.179901123046875 81.264458656311035)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">v4l2src</tspan></text>
      <rect x="200" y="46.588877610954114" width="140" height="60" rx="4" ry="4" style="fill: #2a2aea;"></rect>
      <g>
        <line x1="340" y1="76.5888671875" x2="374.259017944335938" y2="76.5888671875" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="373.091827392578125 80.57794189453125 380 76.5888671875 373.091827392578125 72.59979248046875 373.091827392578125 80.57794189453125"></polygon>
      </g>
      <text transform="translate(221.754127502441406 81.264458656311035)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtivtransform</tspan></text>
      <rect x="380" y="46.588877610954114" width="140" height="60" rx="4" ry="4" style="fill: #007884;"></rect>
      <g>
        <line x1="520" y1="76.5888671875" x2="554.259002685546875" y2="76.5888671875" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="553.091827392578125 80.57794189453125 560 76.5888671875 553.091827392578125 72.59979248046875 553.091827392578125 80.57794189453125"></polygon>
      </g>
      <text transform="translate(416.629127502441406 81.264458656311035)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">capsfilter</tspan></text>
      <rect x="560" y="46.588877610954114" width="140" height="60" rx="4" ry="4" style="fill: #007884;"></rect>
      <text transform="translate(604.566619873046875 81.264458656311035)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesink</tspan></text>
    </g>
    <text transform="translate(19.999786376953125 137.984992980957031)" style="font-family: Roboto-Bold, Roboto; font-size: 16px; font-weight: 700;"><tspan x="0" y="0">Live camera preview on display</tspan></text>
    <g>
      <rect x="20" y="152.414227596397723" width="140" height="60.000000000000909" rx="4.000000000000001" ry="4.000000000000001" style="fill: #007884;"></rect>
      <g>
        <line x1="160" y1="182.414215087890625" x2="194.259017944335938" y2="182.414215087890625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="193.091827392578125 186.403289794921875 200 182.414215087890625 193.091827392578125 178.425170898436591 193.091827392578125 186.403289794921875"></polygon>
      </g>
      <text transform="translate(64.179901123046875 187.089805603027344)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">v4l2src</tspan></text>
      <rect x="200" y="152.414227596397723" width="140" height="60.000000000000909" rx="4" ry="4" style="fill: #2a2aea;"></rect>
      <g>
        <line x1="340" y1="182.414215087890625" x2="374.259017944335938" y2="182.414215087890625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="373.091827392578125 186.403289794921875 380 182.414215087890625 373.091827392578125 178.425170898436591 373.091827392578125 186.403289794921875"></polygon>
      </g>
      <text transform="translate(221.754127502441406 187.089805603027344)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtivtransform</tspan></text>
      <rect x="380" y="152.414227596397723" width="140" height="60.000000000000909" rx="4" ry="4" style="fill: #007884;"></rect>
      <g>
        <line x1="520" y1="182.414215087890625" x2="554.259002685546875" y2="182.414215087890625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="553.091827392578125 186.403289794921875 560 182.414215087890625 553.091827392578125 178.425170898436591 553.091827392578125 186.403289794921875"></polygon>
      </g>
      <text transform="translate(416.629127502441406 187.089805603027344)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">capsfilter</tspan></text>
      <rect x="560" y="152.414227596397723" width="140" height="60.000000000000909" rx="4" ry="4" style="fill: #007884;"></rect>
      <text transform="translate(586.097869873046875 187.089805603027344)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">waylandsink</tspan></text>
    </g>
    <text transform="translate(19.999786376953125 243.810348510742188)" style="font-family: Roboto-Bold, Roboto; font-size: 16px; font-weight: 700;"><tspan x="0" y="0">Video encoding</tspan></text>
    <g>
      <rect x="20" y="258.239577581842241" width="140" height="60" rx="4.000000000000002" ry="4.000000000000002" style="fill: #007884;"></rect>
      <g>
        <line x1="160" y1="288.23956298828125" x2="194.259017944335938" y2="288.23956298828125" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="193.091827392578125 292.2286376953125 200 288.23956298828125 193.091827392578125 284.250518798828125 193.091827392578125 292.2286376953125"></polygon>
      </g>
      <text transform="translate(64.179901123046875 292.9151611328125)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">v4l2src</tspan></text>
      <rect x="200" y="258.239577581842241" width="140" height="60" rx="4" ry="4" style="fill: #2a2aea;"></rect>
      <g>
        <line x1="340" y1="288.23956298828125" x2="374.259017944335938" y2="288.23956298828125" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="373.091827392578125 292.2286376953125 380 288.23956298828125 373.091827392578125 284.250518798828125 373.091827392578125 292.2286376953125"></polygon>
      </g>
      <text transform="translate(221.754127502441406 292.9151611328125)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtivtransform</tspan></text>
      <rect x="380" y="258.239577581842241" width="140" height="60" rx="4" ry="4" style="fill: #007884;"></rect>
      <g>
        <line x1="520" y1="288.23956298828125" x2="554.259002685546875" y2="288.23956298828125" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="553.091827392578125 292.2286376953125 560 288.23956298828125 553.091827392578125 284.250518798828125 553.091827392578125 292.2286376953125"></polygon>
      </g>
      <text transform="translate(416.629127502441406 292.9151611328125)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">capsfilter</tspan></text>
      <rect x="560" y="258.239577581842241" width="140" height="60" rx="4" ry="4" style="fill: #007884;"></rect>
      <text transform="translate(584.476776123046875 292.9151611328125)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">v4l2h264enc</tspan></text>
    </g>
    <g>
      <line x1="700" y1="288.23956298828125" x2="734.259033203125" y2="288.23956298828125" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="733.091796875 292.2286376953125 740 288.23956298828125 733.091796875 284.250518798828125 733.091796875 292.2286376953125"></polygon>
    </g>
    <rect x="740" y="258.239577581842241" width="140" height="60" rx="4" ry="4" style="fill: #007884;"></rect>
    <g>
      <line x1="880" y1="288.23956298828125" x2="914.259033203125" y2="288.23956298828125" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="913.091796875 292.2286376953125 920 288.23956298828125 913.091796875 284.250518798828125 913.091796875 292.2286376953125"></polygon>
    </g>
    <text transform="translate(772.207244873046875 292.9151611328125)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
    <rect x="920" y="258.239577581842241" width="140" height="60" rx="4" ry="4" style="fill: #007884;"></rect>
    <g>
      <line x1="1060" y1="288.23956298828125" x2="1094.259033203125" y2="288.23956298828125" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="1093.091796875 292.2286376953125 1100 288.23956298828125 1093.091796875 284.250518798828125 1093.091796875 292.2286376953125"></polygon>
    </g>
    <text transform="translate(958.621337890625 292.9151611328125)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">mp4mux</tspan></text>
    <rect x="1100" y="258.239577581842241" width="140" height="60" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(1144.566650390625 292.9151611328125)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesink</tspan></text>
    <g>
      <line x1="700" y1="394.064926147460938" x2="734.259033203125" y2="394.064926147460938" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="733.091796875 398.053985595703125 740 394.064926147460938 733.091796875 390.07586669921875 733.091796875 398.053985595703125"></polygon>
    </g>
    <rect x="740" y="364.064927567285849" width="140" height="60" rx="4" ry="4" style="fill: #007884;"></rect>
    <g>
      <line x1="880" y1="394.064926147460938" x2="914.259033203125" y2="394.064926147460938" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="913.091796875 398.053985595703125 920 394.064926147460938 913.091796875 390.07586669921875 913.091796875 398.053985595703125"></polygon>
    </g>
    <text transform="translate(772.207244873046875 398.740509033203125)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
    <rect x="920" y="364.064927567285849" width="140" height="60" rx="4" ry="4" style="fill: #2a2aea;"></rect>
    <text transform="translate(956.121337890625 398.740509033203125)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtirtspbin</tspan></text>
    <text transform="translate(19.999786376953125 349.635711669921875)" style="font-family: Roboto-Bold, Roboto; font-size: 16px; font-weight: 700;"><tspan x="0" y="0">Video encoding and RTSP streaming</tspan></text>
    <g>
      <rect x="20" y="364.064927567285849" width="140" height="60" rx="4.000000000000002" ry="4.000000000000002" style="fill: #007884;"></rect>
      <g>
        <line x1="160" y1="394.064926147460938" x2="194.259017944335938" y2="394.064926147460938" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="193.091827392578125 398.053985595703125 200 394.064926147460938 193.091827392578125 390.07586669921875 193.091827392578125 398.053985595703125"></polygon>
      </g>
      <text transform="translate(64.179901123046875 398.740509033203125)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">v4l2src</tspan></text>
      <rect x="200" y="364.064927567285849" width="140" height="60" rx="4" ry="4" style="fill: #2a2aea;"></rect>
      <g>
        <line x1="340" y1="394.064926147460938" x2="374.259017944335938" y2="394.064926147460938" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="373.091827392578125 398.053985595703125 380 394.064926147460938 373.091827392578125 390.07586669921875 373.091827392578125 398.053985595703125"></polygon>
      </g>
      <text transform="translate(221.754127502441406 398.740509033203125)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtivtransform</tspan></text>
      <rect x="380" y="364.064927567285849" width="140" height="60" rx="4" ry="4" style="fill: #007884;"></rect>
      <g>
        <line x1="520" y1="394.064926147460938" x2="554.259002685546875" y2="394.064926147460938" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="553.091827392578125 398.053985595703125 560 394.064926147460938 553.091827392578125 390.07586669921875 553.091827392578125 398.053985595703125"></polygon>
      </g>
      <text transform="translate(416.629127502441406 398.740509033203125)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">capsfilter</tspan></text>
      <rect x="560" y="364.064927567285849" width="140" height="60" rx="4" ry="4" style="fill: #007884;"></rect>
      <text transform="translate(584.476776123046875 398.740509033203125)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">v4l2h264enc</tspan></text>
    </g>
  </g>
  <g>
    <g>
      <text transform="translate(1062.928314208984375 456.156459808349609)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Qualcomm </tspan></text>
      <rect x="1042.677248210824473" y="444.064971923828125" width="16" height="16" rx="2" ry="2" style="fill: #2a2aea;"></rect>
    </g>
    <g>
      <text transform="translate(1161.51007080078125 456.156459808349609)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Open source</tspan></text>
      <rect x="1141.259029623670358" y="444.064971923828125" width="16" height="16" rx="2" ry="2" style="fill: #007884;"></rect>
    </g>
  </g>
</svg>

## Run the application

Before running the application, complete the [Prerequisites](https://docs.qualcomm.com/doc/80-70022-50/topic/download-model-and-label-files.html).

1. In the terminal of the target device, do the following to run this sample
                    application without the AI inferencing:
    1. Use the config-usb-camera-app.json file from
                                `/etc/configs/` directory.
    2. In the config-usb-camera-app.json file, set
                                `enable-object-detection` to `FALSE`.
    3. Run the gst-ai-usb-camera-app
                            application:

            gst-ai-usb-camera-app --config-file=/etc/config/config-usb-camera-app.jsonCopy to clipboard
2. To stop the use case, use CTRL +
                    C.
3. In the terminal of the target device, run the following command in the SSH shell
                    to display the available help
                    options:

        gst-ai-usb-camera-app -hCopy to clipboard

## Expected output

The following table lists the expected output for each use case:

Table : Expected output for gst-ai-usb-single-camera-app–without AI

| Use case | Output |
| :--- | :--- |
| Preview | Preview of the camera stream. See the [Figure : Expected output for gst-usb-single-camera-app application - Preview](https://docs.qualcomm.com/doc/80-70022-50/topic/usb-camera.html#use-camera__fig_ihh_tqq_5bc). |
| Save the MP4 and YUV data | Save the output to a file at /etc/media/<br>                                folder path. |
| RTSP | View the output on a remote display. |

Figure : Expected output for gst-usb-single-camera-app application - Preview
                
                ![](data:image/png;base64,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)

## Pipeline flow

The following table lists the plugins used in the USB camera streaming
                        pipeline:| Pipeline | Description |
| --- | --- |
| Dump the camera YUV to a filesink | <ol class="ol" id="use-camera__ol_zkf_sf2_ncc"><br>                                        <li class="li">v4l2src captures the camera live stream.</li><br><br>                                        <li class="li"><a href="https://docs.qualcomm.com/doc/80-70022-50/topic/qtivtransform.html">qtivtransform</a> transforms the stream<br>                                            data.</li><br><br>                                        <li class="li">Capsfilter is applied to enforce constraints on the raw<br>                                            video data.</li><br><br>                                        <li class="li">Filesink is used to dump the YUV data into a file.</li><br><br>                                    </ol> |
| Preview on display | <ol class="ol" id="use-camera__ol_njk_nls_nbc"><br>                                        <li class="li">v4l2src captures the camera live stream.</li><br><br>                                        <li class="li"><a href="https://docs.qualcomm.com/doc/80-70022-50/topic/qtivtransform.html">qtivtransform</a> transforms the stream<br>                                            data.</li><br><br>                                        <li class="li">Capsfilter is applied to enforce constraints on the raw<br>                                            video data.</li><br><br>                                        <li class="li">The data is sent to the Wayland display sink (<a href="https://docs.qualcomm.com/doc/80-70022-50/topic/waylandsink.html">Waylandsink</a>) for live preview.</li><br><br>                                    </ol> |
| Video encoding | <ol class="ol" id="use-camera__ol_fhg_wls_nbc"><br>                                        <li class="li">v4l2src captures the camera live stream.</li><br><br>                                        <li class="li"><a href="https://docs.qualcomm.com/doc/80-70022-50/topic/qtivtransform.html">qtivtransform</a> transforms the stream<br>                                            data.</li><br><br>                                        <li class="li">Capsfilter is applied to enforce constraints on the raw<br>                                            video data.</li><br><br>                                        <li class="li"><a href="https://docs.qualcomm.com/doc/80-70022-50/topic/v4l2h264enc.html">v4l2h264enc</a> is used to encode the<br>                                            video using the H.264 format.</li><br><br>                                        <li class="li">H264parse is used to parse the video.</li><br><br>                                        <li class="li">Mp4mux is used to multiplex the video into an MP4<br>                                            container.</li><br><br>                                        <li class="li">Filesink is used to write the video to a file.</li><br><br>                                    </ol> |
| Video encoding and RTSP streaming | <ol class="ol" id="use-camera__ol_ckj_pf2_ncc"><br>                                        <li class="li"><a href="https://docs.qualcomm.com/doc/80-70022-50/topic/qtiqmmfsrc.html">qtiqmmfsrc</a> captures the camera live<br>                                            stream.</li><br><br>                                        <li class="li"><a href="https://docs.qualcomm.com/doc/80-70022-50/topic/qtivtransform.html">qtivtransform</a> transforms the stream<br>                                            data.</li><br><br>                                        <li class="li">Capsfilter is applied to enforce constraints on the raw<br>                                            video data.</li><br><br>                                        <li class="li"><a href="https://docs.qualcomm.com/doc/80-70022-50/topic/v4l2h264enc.html">v4l2h264enc</a> is used to encode the<br>                                            video using the H.264 format.</li><br><br>                                        <li class="li">H264parse is used to parse the video.</li><br><br>                                        <li class="li">qtirtspbin is used to load the stream to RTSP. </li><br><br>                                    </ol> |

**Parent Topic:** [Run sample applications for a camera](https://docs.qualcomm.com/doc/80-70022-50/topic/camera-sample-applications.html)

Last Published: Feb 20, 2026

[Previous Topic
Single camera streaming](https://docs.qualcomm.com/bundle/publicresource/80-70022-50/topics/gst-camera-single-stream-example.md) [Next Topic
Multi-camera streaming](https://docs.qualcomm.com/bundle/publicresource/80-70022-50/topics/gst-multi-camera-stream-example.md)