# Multi-camera streaming

The **gst-multi-camera-example** application allows you to stream from two camera sensors simultaneously. The application composes the camera feeds side by side to display on a screen or encodes and stores the video streams to files.

A few use cases that need many camera inputs are dash camera or stereo camera. You can use this application as a reference and build your use case. For example, a security system where the goal is to capture a video from several cameras. You can either view it or archive it for a future review.

The following figure shows the pipeline for several camera streams. For more information about the elements used in this pipeline, see [Pipeline flow](https://docs.qualcomm.com/doc/80-80022-55/topic/gst-multi-camera-stream-example.html#section-jrn-bps-nbc).

<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_2" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" width="1080" height="420" viewbox="0 0 1080 420" aria-label="../../_images/gst_multicamera_example_pipeline.svg">
  <g>
    <rect x=".5" y=".49993896484375" width="1079" height="419" rx="7.5" ry="7.5" style="fill: #fafafa;"></rect>
    <path d="M1072,1c3.85986328125,0,7,3.14013671875,7,7v404c0,3.85986328125-3.14013671875,7-7,7H8c-3.85986328125,0-7-3.14013671875-7-7V8c0-3.85986328125,3.14013671875-7,7-7h1064M1072,0H8C3.581733703613281,0,0,3.58172607421875,0,8v404c0,4.41827392578125,3.581733703613281,8,8,8h1064c4.41845703125,0,8-3.58172607421875,8-8V8c0-4.41827392578125-3.58154296875-8-8-8h0Z" style="fill: #d2d7e1;"></path>
  </g>
  <g>
    <rect x="95.422480877478847" y="52.716680732102759" width="140" height="56.666666666667879" rx="4" ry="4" style="fill: #2a2aea;"></rect>
    <rect x="260.294567351127625" y="52.716680732102759" width="140" height="56.666666666667879" rx="4" ry="4" style="fill: #007884;"></rect>
    <rect x="425.916847351414617" y="52.716680732102759" width="140.000000000001819" height="125.129304966179916" rx="4" ry="4" style="fill: #2a2aea;"></rect>
    <text transform="translate(120.656871795654297 78.125839233398438)" style="fill: #fff; font-size: 16px;"><tspan x="0" y="0">qtiqmmfsrc/</tspan><tspan x="11.4453125" y="19.2001953125">camera 0</tspan></text>
    <text transform="translate(296.922985076904297 85.725936889648438)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">capsfilter</tspan></text>
    <text transform="translate(447.057750701904297 119.957077026367188)" style="fill: #fff; font-size: 16px;"><tspan x="0" y="0">qtivcomposer</tspan></text>
    <rect x="591.114483752444357" y="52.716680732102759" width="140" height="124.971199272760714" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(617.211559295654297 119.878021240234375)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">waylandsink</tspan></text>
    <g>
      <line x1="236.023651123046875" y1="81.050018310546875" x2="254.333618164063409" y2="81.050018310546875" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="253.31231689453125 84.540451049804688 259.356964111328125 81.050018310546875 253.31231689453125 77.559585571289062 253.31231689453125 84.540451049804688"></polygon>
    </g>
    <line x1="64.742327395266329" y1="81.050014065436699" x2="94.821316193912025" y2="81.050014065436699" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <g>
      <line x1="401.232147216796875" y1="81.050018310546875" x2="419.542114257813409" y2="81.050018310546875" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="418.520843505859375 84.540451049804688 424.56549072265625 81.050018310546875 418.520843505859375 77.559585571289062 418.520843505859375 84.540451049804688"></polygon>
    </g>
    <g>
      <line x1="566.8603515625" y1="115.281326293945312" x2="585.17034912109375" y2="115.281326293945312" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="584.1490478515625 118.771759033203125 590.1937255859375 115.281326293945312 584.1490478515625 111.790908813476562 584.1490478515625 118.771759033203125"></polygon>
    </g>
    <rect x="95.422480877478847" y="121.179319031614796" width="140" height="56.666666666667879" rx="4" ry="4" style="fill: #2a2aea;"></rect>
    <rect x="260.294567351127625" y="121.179319031614796" width="140" height="56.666666666667879" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(120.656871795654297 146.588478088378906)" style="fill: #fff; font-size: 16px;"><tspan x="0" y="0">qtiqmmfsrc/</tspan><tspan x="11.4453125" y="19.2001953125">camera 1</tspan></text>
    <text transform="translate(296.922985076904297 154.188583374023438)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">capsfilter</tspan></text>
    <g>
      <line x1="236.023651123046875" y1="149.512664794921875" x2="254.333618164063409" y2="149.512664794921875" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="253.31231689453125 153.003082275390625 259.356964111328125 149.512664794921875 253.31231689453125 146.022216796875 253.31231689453125 153.003082275390625"></polygon>
    </g>
    <g>
      <line x1="401.232147216796875" y1="149.512664794921875" x2="419.542114257813409" y2="149.512664794921875" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="418.520843505859375 153.003082275390625 424.56549072265625 149.512664794921875 418.520843505859375 146.022216796875 418.520843505859375 153.003082275390625"></polygon>
    </g>
    <g>
      <rect x="95.422480877478847" y="235.928427071163242" width="140" height="56.666699999999764" rx="4" ry="4" style="fill: #2a2aea;"></rect>
      <rect x="260.294567351127625" y="235.928427071163242" width="140" height="56.666699999999764" rx="4" ry="4" style="fill: #007884;"></rect>
      <rect x="425.916847351414617" y="235.928427071163242" width="140.000000000001819" height="56.666699999999764" rx="4" ry="4" style="fill: #007884;"></rect>
      <rect x="921.408841474045403" y="235.928427071163242" width="139.999999999994543" height="56.666699999999764" rx="3.999999999989086" ry="3.999999999989086" style="fill: #007884;"></rect>
      <text transform="translate(120.656871795654297 259.337554931640625)" style="fill: #fff; font-size: 16px;"><tspan x="0" y="0">qtiqmmfsrc/</tspan><tspan x="11.4453125" y="19.2001953125">camera 0</tspan></text>
      <text transform="translate(296.922985076904297 268.937652587890625)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">capsfilter</tspan></text>
      <text transform="translate(450.393688201904297 268.937652587890625)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">v4l2h264enc</tspan></text>
      <rect x="591.114483752444357" y="235.928427071163242" width="140" height="56.666699999999764" rx="4" ry="4" style="fill: #007884;"></rect>
      <text transform="translate(623.320934295654297 268.937652587890625)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
      <rect x="756.22260034797182" y="235.928427071163242" width="140" height="56.666699999999764" rx="4" ry="4" style="fill: #007884;"></rect>
      <text transform="translate(794.843395233154297 268.937652587890625)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">mp4mux</tspan></text>
      <text transform="translate(965.975231170654297 268.937652587890625)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesink</tspan></text>
      <g>
        <line x1="236.023651123046875" y1="264.26177978515625" x2="254.333618164063409" y2="264.26177978515625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="253.31231689453125 267.752197265625 259.356964111328125 264.26177978515625 253.31231689453125 260.771331787109375 253.31231689453125 267.752197265625"></polygon>
      </g>
      <g>
        <line x1="401.232147216796875" y1="264.26177978515625" x2="419.542114257813409" y2="264.26177978515625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="418.520843505859375 267.752197265625 424.56549072265625 264.26177978515625 418.520843505859375 260.771331787109375 418.520843505859375 267.752197265625"></polygon>
      </g>
      <g>
        <line x1="566.8603515625" y1="264.26177978515625" x2="585.17034912109375" y2="264.26177978515625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="584.1490478515625 267.752197265625 590.1937255859375 264.26177978515625 584.1490478515625 260.771331787109375 584.1490478515625 267.752197265625"></polygon>
      </g>
      <g>
        <line x1="731.9609375" y1="264.26177978515625" x2="750.27093505859375" y2="264.26177978515625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="749.2496337890625 267.752197265625 755.29425048828125 264.26177978515625 749.2496337890625 260.771331787109375 749.2496337890625 267.752197265625"></polygon>
      </g>
      <g>
        <line x1="897.1783447265625" y1="264.26177978515625" x2="915.48828125" y2="264.26177978515625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="914.467041015625 267.752197265625 920.51165771484375 264.26177978515625 914.467041015625 260.771331787109375 914.467041015625 267.752197265625"></polygon>
      </g>
    </g>
    <g>
      <rect x="95.422480877478847" y="305.441754270312231" width="140" height="56.666699999999764" rx="4" ry="4" style="fill: #2a2aea;"></rect>
      <rect x="260.294567351127625" y="305.441754270312231" width="140" height="56.666699999999764" rx="4" ry="4" style="fill: #007884;"></rect>
      <rect x="425.916847351414617" y="305.441754270312231" width="140.000000000001819" height="56.666699999999764" rx="4" ry="4" style="fill: #007884;"></rect>
      <rect x="921.408841474045403" y="305.441754270312231" width="139.999999999994543" height="56.666699999999764" rx="3.999999999989086" ry="3.999999999989086" style="fill: #007884;"></rect>
      <text transform="translate(120.656871795654297 328.850883483886719)" style="fill: #fff; font-size: 16px;"><tspan x="0" y="0">qtiqmmfsrc/</tspan><tspan x="11.4453125" y="19.2001953125">camera 1</tspan></text>
      <text transform="translate(296.922985076904297 338.450996398925781)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">capsfilter</tspan></text>
      <text transform="translate(450.393688201904297 338.450996398925781)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">v4l2h264enc</tspan></text>
      <rect x="591.114483752444357" y="305.441754270312231" width="140" height="56.666699999999764" rx="4" ry="4" style="fill: #007884;"></rect>
      <text transform="translate(623.320934295654297 338.450996398925781)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
      <rect x="756.22260034797182" y="305.441754270312231" width="140" height="56.666699999999764" rx="4" ry="4" style="fill: #007884;"></rect>
      <text transform="translate(794.843395233154297 338.450996398925781)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">mp4mux</tspan></text>
      <text transform="translate(965.975231170654297 338.450996398925781)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesink</tspan></text>
      <g>
        <line x1="236.023651123046875" y1="333.775115966796875" x2="254.333618164063409" y2="333.775115966796875" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="253.31231689453125 337.265533447265625 259.356964111328125 333.775115966796875 253.31231689453125 330.28466796875 253.31231689453125 337.265533447265625"></polygon>
      </g>
      <g>
        <line x1="401.232147216796875" y1="333.775115966796875" x2="419.542114257813409" y2="333.775115966796875" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="418.520843505859375 337.265533447265625 424.56549072265625 333.775115966796875 418.520843505859375 330.28466796875 418.520843505859375 337.265533447265625"></polygon>
      </g>
      <g>
        <line x1="566.8603515625" y1="333.775115966796875" x2="585.17034912109375" y2="333.775115966796875" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="584.1490478515625 337.265533447265625 590.1937255859375 333.775115966796875 584.1490478515625 330.28466796875 584.1490478515625 337.265533447265625"></polygon>
      </g>
      <g>
        <line x1="731.9609375" y1="333.775115966796875" x2="750.27093505859375" y2="333.775115966796875" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="749.2496337890625 337.265533447265625 755.29425048828125 333.775115966796875 749.2496337890625 330.28466796875 749.2496337890625 337.265533447265625"></polygon>
      </g>
      <g>
        <line x1="897.1783447265625" y1="333.775115966796875" x2="915.48828125" y2="333.775115966796875" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="914.467041015625 337.265533447265625 920.51165771484375 333.775115966796875 914.467041015625 330.28466796875 914.467041015625 337.265533447265625"></polygon>
      </g>
    </g>
    <text transform="translate(18.591232299804688 38.859390258789062)" style="font-family: Roboto-Medium, Roboto; font-size: 16px; font-weight: 500;"><tspan x="0" y="0">qtivcomposer composition</tspan></text>
    <text transform="translate(18.591232299804688 221.58526611328125)" style="font-family: Roboto-Medium, Roboto; font-size: 16px; font-weight: 500;"><tspan x="0" y="0">Video encoding</tspan></text>
    <g>
      <path d="M47.435636574624368,62.589543856749515h-11.53779388042858l-5.76889694021429,6.922676328258603h-6.922676328256784c-2.548858893807846,0-4.615117552170886,2.06625865836304-4.615117552170886,4.615117552169977v20.768028984770353c0,2.548861094466702,2.06625865836304,4.615117552175434,4.615117552170886,4.615117552175434h36.920940417372549c2.548861094464883,0,4.615117552169067-2.066256457708732,4.615117552169067-4.615117552175434v-20.768028984770353c0-2.548858893806937-2.066256457704185-4.615117552169977-4.615117552169067-4.615117552169977h-6.922676328258603l-5.76889694021429-6.922676328258603Z" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></path>
      <circle cx="41.666739634410078" cy="81.050014065436699" r="6.922676328258603" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></circle>
    </g>
    <line x1="64.742327395266329" y1="149.512652364948735" x2="94.821316193912025" y2="149.512652364948735" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <g>
      <path d="M47.435636574624368,131.052182156261551h-11.53779388042858l-5.76889694021429,6.922676328258603h-6.922676328256784c-2.548858893807846,0-4.615117552170886,2.066258658362131-4.615117552170886,4.615117552169977v20.768028984770353c0,2.548861094466702,2.06625865836304,4.615117552175434,4.615117552170886,4.615117552175434h36.920940417372549c2.548861094464883,0,4.615117552169067-2.066256457708732,4.615117552169067-4.615117552175434v-20.768028984770353c0-2.548858893807846-2.066256457704185-4.615117552169977-4.615117552169067-4.615117552169977h-6.922676328258603l-5.76889694021429-6.922676328258603Z" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></path>
      <circle cx="41.666739634410078" cy="149.512652364948735" r="6.922676328258603" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></circle>
    </g>
    <line x1="64.742327395266329" y1="264.261777071162214" x2="94.821316193912025" y2="264.261777071162214" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <g>
      <path d="M47.435636574624368,245.80130686247503h-11.53779388042858l-5.76889694021429,6.922676328260422h-6.922676328256784c-2.548858893807846,0-4.615117552170886,2.066258658360312-4.615117552170886,4.615117552169977v20.768028984770353c0,2.548861094466702,2.06625865836304,4.615117552173615,4.615117552170886,4.615117552173615h36.920940417372549c2.548861094464883,0,4.615117552169067-2.066256457706913,4.615117552169067-4.615117552173615v-20.768028984770353c0-2.548858893809665-2.066256457704185-4.615117552169977-4.615117552169067-4.615117552169977h-6.922676328258603l-5.76889694021429-6.922676328260422Z" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></path>
      <circle cx="41.666739634410078" cy="264.261777071163124" r="6.922676328259057" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></circle>
    </g>
    <line x1="64.742327395266329" y1="333.775104270313022" x2="94.821316193912025" y2="333.775104270313022" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <g>
      <path d="M47.435636574624368,315.314634061625839h-11.53779388042858l-5.76889694021429,6.922676328260422h-6.922676328256784c-2.548858893807846,0-4.615117552170886,2.066258658360312-4.615117552170886,4.615117552169977v20.768028984770353c0,2.548861094466702,2.06625865836304,4.615117552173615,4.615117552170886,4.615117552173615h36.920940417372549c2.548861094464883,0,4.615117552169067-2.066256457706913,4.615117552169067-4.615117552173615v-20.768028984770353c0-2.548858893809665-2.066256457704185-4.615117552169977-4.615117552169067-4.615117552169977h-6.922676328258603l-5.76889694021429-6.922676328260422Z" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></path>
      <circle cx="41.666739634410078" cy="333.775104270313932" r="6.922676328259057" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></circle>
    </g>
    <g>
      <g>
        <text transform="translate(884.336334228515625 396.919460296630859)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Qualcomm </tspan></text>
        <rect x="864.085329563720734" y="384.827961260776647" width="16" height="16" rx="2" ry="2" style="fill: #2a2aea;"></rect>
      </g>
      <g>
        <text transform="translate(982.918121337890625 396.919460296630859)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Open source</tspan></text>
        <rect x="962.667110976570257" y="384.827961260776647" width="16" height="16" rx="2" ry="2" style="fill: #007884;"></rect>
      </g>
    </g>
  </g>
</svg>

**Figure : gst-multi-camera-example pipeline**

## Run the application

Note

In the following commands, provide the necessary parameters, such as width, height, and output type. The width and height changes are applicable to the primary camera only.

1. Ensure that you complete the [Prerequisites](https://docs.qualcomm.com/doc/80-80022-55/topic/mm_sample_apps_prerequisites.html).
2. In the terminal of the target device, select any of the following use cases and run the respective command:

    - **Waylandsink use case:** View the Waylandsink output:

gst-multi-camera-example -o 0 -w 1920 -h 1080
            Copy to clipboard
    - **Encoder use case:** View the encoder output:

gst-multi-camera-example -o 1 -w 1920 -h 1080
            Copy to clipboard
3. To stop the use case, use **CTRL + C**.
4. In the terminal of the target device, run the following command in the SSH shell to display the available help options:

gst-multi-camera-example --help
        Copy to clipboard
5. In the terminal of the host computer, run the following command to pull the files from the target device:

scp root@<IP address of target device>:/etc/media/<destination directory>
        Copy to clipboard

## Expected output

The output is displayed on the screen and saved to a file.

- If the output type is display, you can preview the stream on the display.
- If the output type is video encoding, then the encoded files are saved at `/etc/media/cam1_vid.mp4` and `/etc/media/cam2_vid.mp4` for camera 1 and camera 2 respectively.

![../../_images/gst-multi-camera-example.png](data:image/png;base64,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)

**Figure : Expected output for gst-multi-camera-example.py application–Preview**

## Pipeline flow

The following table lists the plugins used in the multi camera streaming pipeline:

| Pipeline | Description |
| --- | --- |
| Preview on display | <ol class="arabic simple"><br><li><p><a href="https://docs.qualcomm.com/doc/80-80022-50/topic/qtiqmmfsrc.html" rel="noopener noreferrer" target="_blank" class="xref cursorpointer" onclick="Window.BookmapComponent.navigateExternalFile('https://docs.qualcomm.com/doc/80-80022-50/topic/qtiqmmfsrc.html')">qtiqmmfsrc</a> captures video from both camera0 and camera1.</p></li><br><li><p>Capsfilter is applied to enforce constraints on the raw video data.</p></li><br><li><p><a href="https://docs.qualcomm.com/doc/80-80022-50/topic/qtivcomposer.html" rel="noopener noreferrer" target="_blank" class="xref cursorpointer" onclick="Window.BookmapComponent.navigateExternalFile('https://docs.qualcomm.com/doc/80-80022-50/topic/qtivcomposer.html')">qtivcomposer</a> composites the video streams and sends the composited video data to Wayland display sink.</p></li><br><li><p><a href="https://docs.qualcomm.com/doc/80-80022-50/topic/waylandsink.html" rel="noopener noreferrer" target="_blank" class="xref cursorpointer" onclick="Window.BookmapComponent.navigateExternalFile('https://docs.qualcomm.com/doc/80-80022-50/topic/waylandsink.html')">waylandsink</a> shows the live preview.</p></li><br></ol> |
| Encoder dump on the device | <ol class="arabic simple"><br><li><p><a href="https://docs.qualcomm.com/doc/80-80022-50/topic/qtiqmmfsrc.html" rel="noopener noreferrer" target="_blank" class="xref cursorpointer" onclick="Window.BookmapComponent.navigateExternalFile('https://docs.qualcomm.com/doc/80-80022-50/topic/qtiqmmfsrc.html')">qtiqmmfsrc</a> captures video from both camera0 and camera1.</p></li><br><li><p>Capsfilter is applied to enforce constraints on the raw video data.</p></li><br><li><p><a href="https://docs.qualcomm.com/doc/80-80022-50/topic/v4l2h264enc.html" rel="noopener noreferrer" target="_blank" class="xref cursorpointer" onclick="Window.BookmapComponent.navigateExternalFile('https://docs.qualcomm.com/doc/80-80022-50/topic/v4l2h264enc.html')">v4l2h264enc</a> is used to encode the video using the H.264 format.</p></li><br><li><p>H264parse is used to parse the video.</p></li><br><li><p>Mp4mux is used to multiplex the video into an MP4 container.</p></li><br><li><p>Filesink is used to write the video to a file.</p></li><br></ol> |

## Related information

- [Multi-camera streaming using Python](https://docs.qualcomm.com/doc/80-80022-55/topic/multi-camera-streaming-python-sample-app.html)
- [Multi-camera/Multi-client use cases](https://docs.qualcomm.com/doc/80-80022-55/topic/multi-camera-multi-client-use-cases.html)

Last Published: May 17, 2026

[Previous Topic
USB camera](https://docs.qualcomm.com/bundle/publicresource/80-80022-55/topics/usb-camera.md) [Next Topic
Multistream](https://docs.qualcomm.com/bundle/publicresource/80-80022-55/topics/gst-multi-stream-example.md)