# Multi-camera streaming using Python

Source: [https://docs.qualcomm.com/doc/80-70022-50/topic/multi-camera-streaming-python-sample-app.html](https://docs.qualcomm.com/doc/80-70022-50/topic/multi-camera-streaming-python-sample-app.html)

The **gst-multi-camera-stream-example.py** 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.

Figure : gst-multi-camera-example.py pipeline
            
            <?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_2" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" width="1079.999999999996362" height="400" viewbox="0 0 1079.999999999996362 400">
  <g>
    <rect x=".499824523925781" y=".499967575073242" width="1079.00048828125" height="399" rx="7.499999999999997" ry="7.499999999999997" style="fill: #fafafa;"></rect>
    <path d="M1071.999946594236462.999967575073242c3.85986328125,0,7,3.14013671875,7,7v384c0,3.85986328125-3.14013671875,7-7,7H7.999946594238281c-3.859867095947266,0-7-3.14013671875-7-7V7.999967575073242C.999946594238281,4.140104293823242,4.140079498291016.999967575073242,7.999946594238281.999967575073242h1063.999999999998181M1071.999946594236462-.000032424926758H7.999946594238281C3.581680297851562-.000032424926758-.000053405761719,3.581693649291992-.000053405761719,7.999967575073242v384c0,4.41827392578125,3.581733703613281,8,8,8h1063.999999999998181c4.41845703125,0,8-3.58172607421875,8-8V7.999967575073242C1079.999946594236462,3.581693649291992,1076.418403625486462-.000032424926758,1071.999946594236462-.000032424926758h0Z" style="fill: #d2d7e1;"></path>
  </g>
  <g>
    <g>
      <rect x="261.631469647523772" y="49.098502086062581" width="140" height="56.666666666667879" rx="4" ry="4" style="fill: #007884;"></rect>
      <rect x="427.253749647810764" y="49.098502086062581" width="140.000000000001819" height="125.129304966179916" rx="4" ry="4" style="fill: #2a2aea;"></rect>
      <text transform="translate(298.259883880615234 82.107770919799805)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">capsfilter</tspan></text>
      <text transform="translate(448.394649505615234 116.338903427124023)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtivcomposer</tspan></text>
      <rect x="592.451386048840504" y="49.098502086062581" width="140" height="124.971199272760714" rx="4" ry="4" style="fill: #007884;"></rect>
      <text transform="translate(618.548458099365234 116.25984001159668)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">waylandsink</tspan></text>
      <g>
        <line x1="237.360542297364191" y1="77.43183708190918" x2="255.670509338378906" y2="77.43183708190918" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="254.649238586425781 80.922269821166992 260.693885803222656 77.43183708190918 254.649238586425781 73.941404342651367 254.649238586425781 80.922269821166992"></polygon>
      </g>
      <g>
        <line x1="402.569068908691406" y1="77.43183708190918" x2="420.879035949707031" y2="77.43183708190918" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="419.857734680175781 80.922269821166992 425.902381896972656 77.43183708190918 419.857734680175781 73.941404342651367 419.857734680175781 80.922269821166992"></polygon>
      </g>
      <g>
        <line x1="568.197273254394531" y1="111.663145065307617" x2="586.507270812988281" y2="111.663145065307617" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="585.485969543457031 115.153593063354492 591.530586242675781 111.663145065307617 585.485969543457031 108.172727584838867 585.485969543457031 115.153593063354492"></polygon>
      </g>
      <rect x="261.631469647523772" y="117.561140385574618" width="140" height="56.666666666667879" rx="4" ry="4" style="fill: #007884;"></rect>
      <g>
        <rect x="96.759383173874994" y="49.098502086062581" width="140" height="56.666666666667879" rx="4" ry="4" style="fill: #2a2aea;"></rect>
        <text transform="translate(121.993770599365234 74.507673263549805)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtiqmmfsrc/</tspan><tspan x="11.4453125" y="19.2001953125">camera 0</tspan></text>
        <rect x="96.759383173874994" y="117.561140385574618" width="140" height="56.666666666667879" rx="4" ry="4" style="fill: #2a2aea;"></rect>
        <text transform="translate(121.993770599365234 142.970304489135742)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtiqmmfsrc/</tspan><tspan x="11.4453125" y="19.2001953125">camera 1</tspan></text>
      </g>
      <text transform="translate(298.259883880615234 150.570409774780273)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">capsfilter</tspan></text>
      <g>
        <line x1="237.360542297364191" y1="145.894468307495117" x2="255.670509338378906" y2="145.894468307495117" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="254.649238586425781 149.384916305541992 260.693885803222656 145.894468307495117 254.649238586425781 142.404050827026367 254.649238586425781 149.384916305541992"></polygon>
      </g>
      <g>
        <line x1="402.569068908691406" y1="145.894468307495117" x2="420.879035949707031" y2="145.894468307495117" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="419.857734680175781 149.384916305541992 425.902381896972656 145.894468307495117 419.857734680175781 142.404050827026367 419.857734680175781 149.384916305541992"></polygon>
      </g>
      <rect x="261.631469647523772" y="220.310248425123063" width="140" height="56.666699999999764" rx="4" ry="4" style="fill: #007884;"></rect>
      <rect x="427.253749647810764" y="220.310248425123063" width="140.000000000001819" height="56.666699999999764" rx="4" ry="4" style="fill: #007884;"></rect>
      <rect x="922.74574377044155" y="220.310248425123063" width="139.999999999994543" height="56.666699999999764" rx="3.999999999989086" ry="3.999999999989086" style="fill: #007884;"></rect>
      <text transform="translate(298.259883880615234 253.319486618041992)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">capsfilter</tspan></text>
      <text transform="translate(451.730587005615234 253.319486618041992)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">v4l2h264enc</tspan></text>
      <rect x="592.451386048840504" y="220.310248425123063" width="140" height="56.666699999999764" rx="4" ry="4" style="fill: #007884;"></rect>
      <text transform="translate(624.657833099365234 253.319486618041992)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
      <rect x="757.559502644367967" y="220.310248425123063" width="140" height="56.666699999999764" rx="4" ry="4" style="fill: #007884;"></rect>
      <text transform="translate(796.180294036865234 253.319486618041992)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">mp4mux</tspan></text>
      <text transform="translate(967.312129974365234 253.319486618041992)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesink</tspan></text>
      <g>
        <line x1="237.360542297364191" y1="248.643583297729492" x2="255.670509338378906" y2="248.643583297729492" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="254.649238586425781 252.134031295776367 260.693885803222656 248.643583297729492 254.649238586425781 245.153165817260742 254.649238586425781 252.134031295776367"></polygon>
      </g>
      <g>
        <line x1="402.569068908691406" y1="248.643583297729492" x2="420.879035949707031" y2="248.643583297729492" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="419.857734680175781 252.134031295776367 425.902381896972656 248.643583297729492 419.857734680175781 245.153165817260742 419.857734680175781 252.134031295776367"></polygon>
      </g>
      <g>
        <line x1="568.197273254394531" y1="248.643583297729492" x2="586.507270812988281" y2="248.643583297729492" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="585.485969543457031 252.134031295776367 591.530586242675781 248.643583297729492 585.485969543457031 245.153165817260742 585.485969543457031 252.134031295776367"></polygon>
      </g>
      <g>
        <line x1="733.297859191894531" y1="248.643583297729492" x2="751.607795715332031" y2="248.643583297729492" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="750.586555480957031 252.134031295776367 756.631172180175781 248.643583297729492 750.586555480957031 245.153165817260742 750.586555480957031 252.134031295776367"></polygon>
      </g>
      <g>
        <line x1="898.515266418457031" y1="248.643583297729492" x2="916.825202941894531" y2="248.643583297729492" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="915.803901672363281 252.134031295776367 921.848579406738281 248.643583297729492 915.803901672363281 245.153165817260742 915.803901672363281 252.134031295776367"></polygon>
      </g>
      <rect x="261.631469647523772" y="289.823575624272053" width="140" height="56.666699999999764" rx="4" ry="4" style="fill: #007884;"></rect>
      <rect x="427.253749647810764" y="289.823575624272053" width="140.000000000001819" height="56.666699999999764" rx="4" ry="4" style="fill: #007884;"></rect>
      <rect x="922.74574377044155" y="289.823575624272053" width="139.999999999994543" height="56.666699999999764" rx="3.999999999989086" ry="3.999999999989086" style="fill: #007884;"></rect>
      <g>
        <rect x="96.759383173874994" y="220.310248425123063" width="140" height="56.666699999999764" rx="4" ry="4" style="fill: #2a2aea;"></rect>
        <text transform="translate(121.993770599365234 243.71937370300293)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtiqmmfsrc/</tspan><tspan x="11.4453125" y="19.2001953125">camera 0</tspan></text>
        <rect x="96.759383173874994" y="289.823575624272053" width="140" height="56.666699999999764" rx="4" ry="4" style="fill: #2a2aea;"></rect>
        <text transform="translate(121.993770599365234 313.232702255249023)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtiqmmfsrc/</tspan><tspan x="11.4453125" y="19.2001953125">camera 1</tspan></text>
      </g>
      <text transform="translate(298.259883880615234 322.832807540893555)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">capsfilter</tspan></text>
      <text transform="translate(451.730587005615234 322.832807540893555)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">v4l2h264enc</tspan></text>
      <rect x="592.451386048840504" y="289.823575624272053" width="140" height="56.666699999999764" rx="4" ry="4" style="fill: #007884;"></rect>
      <text transform="translate(624.657833099365234 322.832807540893555)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
      <rect x="757.559502644367967" y="289.823575624272053" width="140" height="56.666699999999764" rx="4" ry="4" style="fill: #007884;"></rect>
      <text transform="translate(796.180294036865234 322.832807540893555)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">mp4mux</tspan></text>
      <text transform="translate(967.312129974365234 322.832807540893555)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesink</tspan></text>
      <g>
        <line x1="237.360542297364191" y1="318.156919479370117" x2="255.670509338378906" y2="318.156919479370117" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="254.649238586425781 321.647367477416992 260.693885803222656 318.156919479370117 254.649238586425781 314.666501998901367 254.649238586425781 321.647367477416992"></polygon>
      </g>
      <g>
        <line x1="402.569068908691406" y1="318.156919479370117" x2="420.879035949707031" y2="318.156919479370117" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="419.857734680175781 321.647367477416992 425.902381896972656 318.156919479370117 419.857734680175781 314.666501998901367 419.857734680175781 321.647367477416992"></polygon>
      </g>
      <g>
        <line x1="568.197273254394531" y1="318.156919479370117" x2="586.507270812988281" y2="318.156919479370117" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="585.485969543457031 321.647367477416992 591.530586242675781 318.156919479370117 585.485969543457031 314.666501998901367 585.485969543457031 321.647367477416992"></polygon>
      </g>
      <g>
        <line x1="733.297859191894531" y1="318.156919479370117" x2="751.607795715332031" y2="318.156919479370117" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="750.586555480957031 321.647367477416992 756.631172180175781 318.156919479370117 750.586555480957031 314.666501998901367 750.586555480957031 321.647367477416992"></polygon>
      </g>
      <g>
        <line x1="898.515266418457031" y1="318.156919479370117" x2="916.825202941894531" y2="318.156919479370117" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="915.803901672363281 321.647367477416992 921.848579406738281 318.156919479370117 915.803901672363281 314.666501998901367 915.803901672363281 321.647367477416992"></polygon>
      </g>
      <text transform="translate(96.759376525878906 35.241209030151367)" style="font-family: Roboto-Medium, Roboto; font-size: 16px; font-weight: 500;"><tspan x="0" y="0">qtivcomposer composition</tspan></text>
      <text transform="translate(96.759376525878906 205.967092514038086)" style="font-family: Roboto-Medium, Roboto; font-size: 16px; font-weight: 500;"><tspan x="0" y="0">Video encoding</tspan></text>
      <g>
        <polyline points="96.158218490308172 145.894473718914014 81.38018872343946 145.894473718914014 81.38018872343946 77.431835419392883 96.158218490308172 77.431835419392883" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></polyline>
        <line x1="63.641058288656495" y1="111.663154569152539" x2="81.38018872343946" y2="111.663154569152539" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <g>
          <path d="M46.098299074141323,93.202684360465355h-11.537793880430399l-5.768896940212471,6.922676328260422h-6.922676328256784c-2.548858893807846,0-4.615117552170886,2.066258658360312-4.615117552170886,4.615117552170886v20.768028984769444c0,2.548861094466702,2.06625865836304,4.615117552173615,4.615117552170886,4.615117552173615h36.920940417372549c2.548861094464883,0,4.615117552169977-2.066256457706913,4.615117552169977-4.615117552173615v-20.768028984769444c0-2.548858893810575-2.066256457705094-4.615117552170886-4.615117552169977-4.615117552170886h-6.922676328258603l-5.76889694021429-6.922676328260422Z" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></path>
          <circle cx="40.329402133927033" cy="111.663154569153676" r="6.922676328258944" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></circle>
        </g>
      </g>
      <g>
        <polyline points="96.158218490308172 317.631581174457096 81.38018872343946 317.631581174457096 81.38018872343946 249.168942874937784 96.158218490308172 249.168942874937784" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></polyline>
        <line x1="63.641058288656495" y1="283.40026202469744" x2="81.38018872343946" y2="283.40026202469744" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <g>
          <path d="M46.098299074141323,264.939791816010256h-11.537793880430399l-5.768896940212471,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.615117552169977-2.066256457706913,4.615117552169977-4.615117552173615v-20.768028984770353c0-2.548858893809665-2.066256457705094-4.615117552169977-4.615117552169977-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="40.329402133927033" cy="283.40026202469835" r="6.922676328259057" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></circle>
        </g>
      </g>
    </g>
    <g>
      <g>
        <text transform="translate(885.674018859863281 378.537675857543945)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Qualcomm </tspan></text>
        <rect x="865.423020381766037" y="366.446181868486747" width="16" height="16" rx="2" ry="2" style="fill: #2a2aea;"></rect>
      </g>
      <g>
        <text transform="translate(984.255867004394531 378.537675857543945)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Open source</tspan></text>
        <rect x="964.00480179461556" y="366.446181868486747" width="16" height="16" rx="2" ry="2" style="fill: #007884;"></rect>
      </g>
    </g>
  </g>
</svg>

For information about the plugins used in this pipeline, see [Pipeline flow](https://docs.qualcomm.com/doc/80-70022-50/topic/multi-camera-streaming-python-sample-app.html#multi-camera-streaming-python-sample-app__section_vp3_hss_ndc).

## Run the application on the target device

1. Ensure that you complete the [Prerequisites](https://docs.qualcomm.com/doc/80-70022-50/topic/prerequisites-for-python-sample-applications.html).
2. Run any of the following use cases:
    - View the output (preview) on
                            display:

            gst-multi-camera-stream-example.py -D 1 --width=1920 --height=1080Copy to clipboard
    - View the encoder
                            output:

            gst-multi-camera-stream-example.py -D 0 --width=1920 --height=1080 --framerate=30/1Copy to clipboard
3. To display the available help options, run the following
                    command:

        gst-multi-camera-stream-example.py --helpCopy to clipboard

## Expected output

For the video composition
                pipeline, the output is displayed as preview.

Figure : Expected output for gst-multi-camera-example.py application–Preview
                
                ![](data:image/png;base64,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)

For video encoding pipeline, the output is saved to a file.

## Pipeline flow

The following table lists the plugins used in the multi-camera streaming
                    pipeline:| Pipeline | Description |
| --- | --- |
| Preview on display | <ol class="ol" id="multi-camera-streaming-python-sample-app__ol_xmx_cwx_nbc"><br>                                    <li class="li"><a href="https://docs.qualcomm.com/doc/80-70022-50/topic/qtiqmmfsrc.html">qtiqmmfsrc</a> captures video from both<br>                                        camera0 and camera1.</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/qtivcomposer.html">qtivcomposer</a> composites the video<br>                                        streams and sends the composited video data to Wayland<br>                                        display sink.</li><br><br>                                    <li class="li"><a href="https://docs.qualcomm.com/doc/80-70022-50/topic/waylandsink.html">Waylandsink</a> shows the live preview.</li><br><br>                                </ol> |
| Encoder dump on the device | <ol class="ol" id="multi-camera-streaming-python-sample-app__ol_amf_5wx_nbc"><br>                                    <li class="li"><a href="https://docs.qualcomm.com/doc/80-70022-50/topic/qtiqmmfsrc.html">qtiqmmfsrc</a> captures video from both<br>                                        camera0 and camera1.</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 video<br>                                        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> |

## Related information

[Multi-camera streaming](https://docs.qualcomm.com/doc/80-70022-50/topic/gst-multi-camera-stream-example.html)

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

Last Published: Feb 20, 2026

[Previous Topic
Concurrent video playback (video wall) using Python](https://docs.qualcomm.com/bundle/publicresource/80-70022-50/topics/video-wall-using-python.md) [Next Topic
Object detection and display](https://docs.qualcomm.com/bundle/publicresource/80-70022-50/topics/camera-detection-display.md)