# Multi-camera/Multi-client use cases
Source: [https://docs.qualcomm.com/doc/80-70018-50/topic/multi-camera-multi-client-use-cases.html](https://docs.qualcomm.com/doc/80-70018-50/topic/multi-camera-multi-client-use-cases.html)
The multi-camera/multi-client use cases show scenarios where several camera streams
are displayed in modes such as picture-in-picture and side by side.
Before you run the use cases, ensure that you complete the preconditions mentioned in
[Run multimedia use cases](https://docs.qualcomm.com/doc/80-70018-50/topic/multimedia-use-cases.html).
### GMSL camera limitation for QCS8275 and QCS9075
With the existing software configuration, a single GMSL port supports connection to
only one GMSL camera on any of its four slots.
- The GMSL Port-0 supports a single Bayer camera.
- The current release supports the OX03f10 Bayer GMSL and OX03f10 YUV GMSL
cameras.
Table : QCS8275 and QCS9075–GSML port support and limitation
| SoC | GMSL port connection |
| :--- | :--- |
| QCS6490 | Ensure that you connect the MIPI cameras to the CSI slots on the
RB3 Gen 2 device.
- Connect the OV9282 MIPI camera to the CAM 0A slot.
- Connect the IMX577 MPI camera to the CAM3 slot.
|
| QCS8275 | Ensure that you connect the GMSL camera sensors to the Ride SX
device.
- Connect the OX03F10 Bayer GMSL camera to GMSL port 0.
- Connect the OX03F10 YUV GMSL cameras to port 1 and port
2.
|
| QCS9075 |
- MIPI: Connect four OV9282 MIPI cameras to the CSI
slots.
- GMSL: Connect the OX03F10 Bayer GMSL camera to GMSL port 0
and OX03F10 YUV GMSL cameras to port 2 and port 3.
|
## Two streams—4k AVC MP4, 1080p YUV preview as Client 1 (main camera) and 720p AVC, 720p
YUV as Client 2 (secondary camera)
Source: [https://docs.qualcomm.com/doc/80-70018-50/topic/multi-camera-multi-client-use-cases.html](https://docs.qualcomm.com/doc/80-70018-50/topic/multi-camera-multi-client-use-cases.html)
The use cases use two (4k and 1080p) streams from the main camera, and two 720p
streams from the secondary camera. One stream from each camera is multiplexed and encoded
while the other pair is displayed.
Table : Multi camera client use cases for encoding and preview
| Use case | Camera (client) |
| :--- | :--- |
| Multiplexed and encoded |
- Main camera–4k AVC MP4
- Secondary camera–720p AVC
|
| Preview |
- Main camera–1080p YUV
- Secondary camera–720p YUV
|
Run the
pipeline:
gst-launch-1.0 -e qtiqmmfsrc name=camsrc_0 video_1::type=preview ! video/x-raw,format=NV12,width=3840,height=2160,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! queue ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! queue ! h264parse ! mp4mux ! queue ! filesink location="/opt/mux1.mp4" camsrc_0. ! video/x-raw,format=NV12,width=1920,height=1080,framerate=30/1 ! waylandsink sync=false qtiqmmfsrc name=camsrc_1 camera=1 video_1::type=preview ! video/x-raw,format=NV12,width=1280,height=720,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! queue ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! queue ! h264parse ! mp4mux ! queue ! filesink location="/opt/mux2.mp4" camsrc_1. ! video/x-raw, format=NV12, width=1280, height=720, framerate=30/1 ! waylandsink sync=falseCopy to clipboard
To stop the use case, use CTRL + C.
Pull recorded content from the device using the following scp
commands and play content on the host
computer.
scp -r root@[DEVICE IP-ADDR]:/opt/mux1.mp4 user1@[HOST IP-ADDR]:/workspaceCopy to clipboard
scp -r root@[DEVICE IP-ADDR]:/opt/mux2.mp4 user1@[HOST IP-ADDR]:/workspaceCopy to clipboard
You can play the MP4 file and snapshots on a media player and view the preview stream on
the screen.
The figure shows the flow of pipeline execution:
Figure : Pipeline for two camera clients–encoding and preview

## Two 720p streams—one from each camera with side by side stitching for display
Source: [https://docs.qualcomm.com/doc/80-70018-50/topic/multi-camera-multi-client-use-cases.html](https://docs.qualcomm.com/doc/80-70018-50/topic/multi-camera-multi-client-use-cases.html)
The pipeline shows two 720p streams from the main camera and secondary camera
respectively. Both the streams are composed side by side and displayed.
Run the
pipeline:
gst-launch-1.0 -e qtivcomposer name=mixer sink_0::position="<0, 0>" sink_0::dimensions="<640, 360>" sink_1::position="<640, 0>" sink_1::dimensions="<640, 360>" mixer. ! queue ! waylandsink enable-last-sample=false fullscreen=true qtiqmmfsrc name=camsrc_0 camera=0 ! video/x-raw, format=NV12, width=1280, height=720, framerate=30/1 ! mixer. qtiqmmfsrc name=camsrc_1 camera=1 ! video/x-raw, format=NV12, width=1280, height=720, framerate=30/1 ! mixer.Copy to clipboard
The composed streams from the camera are displayed.
To stop the use case, use CTRL + C.
The figure shows the flow of pipeline execution:
Figure : Two streams from primary and secondary cameras–side by side display

## Two 720p streams—one from each camera with side by side stitching for encode and RTSP
streaming
Source: [https://docs.qualcomm.com/doc/80-70018-50/topic/multi-camera-multi-client-use-cases.html](https://docs.qualcomm.com/doc/80-70018-50/topic/multi-camera-multi-client-use-cases.html)
The pipeline shows two 720p streams from the main camera and secondary camera
respectively. Both are composed side by side, and then duplicated and encoded. One is
multiplexed and saved to a file while the other is streamed through RTSP.
Run the RTSP server in a separate console on target with udpsrc. You can also run it in
the background as a service:
gst-rtsp-server -p 8900 -a -m /live "( udpsrc name=pay0 port=8554 caps=\"application/x-rtp,media=video,clock-rate=90000,encoding-name=H264,payload=96\" )"Copy to clipboard
Run the pipeline in the same or another console on
target:
gst-launch-1.0 -e qtivcomposer name=mixer sink_0::position="<0, 0>" sink_0::dimensions="<640, 360>" sink_1::position="<640, 0>" sink_1::dimensions="<640, 360>" mixer. ! queue ! tee name=t_split t_split. ! queue ! video/x-raw,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! h264parse ! queue ! mp4mux ! queue ! filesink location=/opt/mux.mp4 t_split. ! queue ! video/x-raw,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! h264parse config-interval=-1 ! rtph264pay pt=96 ! udpsink host=127.0.0.1 port=8554 qtiqmmfsrc name=camsrc_0 camera=0 ! video/x-raw, format=NV12, width=1280, height=720, framerate=30/1 ! mixer. qtiqmmfsrc name=camsrc_1 camera=1 ! video/x-raw, format=NV12, width=1280, height=720, framerate=30/1 ! mixer.Copy to clipboard
To stop the use case, use CTRL + C.
Pull the recorded content from the device using the `scp` command, and
play content on host computer.
scp root@:/opt/mux.mp4 Copy to clipboard
You can play the MP4 file on a media player. The streamed video is displayed as an RTSP
stream on the host computer. See [View RTSP stream on host computer](https://docs.qualcomm.com/doc/80-70018-50/topic/camera-and-video-encode.html#one_stream_1080p_avc_rtsp_from_live_source__section_ayq_2nh_pyb).
The figure shows the flow of the pipeline execution:
Figure : Pipeline for two 720p camera streams–side by side display, encoded, and streamed
through RTSP

## Two 720p streams—one from each camera with picture-in-picture composition and sent to
display
Source: [https://docs.qualcomm.com/doc/80-70018-50/topic/multi-camera-multi-client-use-cases.html](https://docs.qualcomm.com/doc/80-70018-50/topic/multi-camera-multi-client-use-cases.html)
The use case uses two 720p streams from the main camera and secondary camera
respectively. Both are composed as picture-in-picture and displayed.
Run the
pipeline:
gst-launch-1.0 -e qtivcomposer name=mixer sink_0::position="<0, 0>" sink_0::dimensions="<1280, 720>" sink_1::position="<590, 310>" sink_1::dimensions="<640, 360>" mixer. ! queue ! waylandsink enable-last-sample=false fullscreen=true qtiqmmfsrc name=camsrc_0 camera=0 ! video/x-raw, format=NV12, width=1280, height=720, framerate=30/1 ! mixer. qtiqmmfsrc name=camsrc_1 camera=1 ! video/x-raw, format=NV12, width=1280, height=720, framerate=30/1 ! mixer.Copy to clipboard
The composed streams from the camera (picture-in-picture) are displayed.
To stop the use case, use CTRL + C.
The figure shows the flow of the pipeline execution:
Figure : Pipeline for two 720p streams–picture-in-picture display

## Two 720p streams—one from each camera with picture-in-picture composition for encode and
RTSP streaming
Source: [https://docs.qualcomm.com/doc/80-70018-50/topic/multi-camera-multi-client-use-cases.html](https://docs.qualcomm.com/doc/80-70018-50/topic/multi-camera-multi-client-use-cases.html)
The use case uses two 720p streams from the main camera and secondary camera
respectively. Both are composed as picture-in-picture, and then duplicated and encoded. One
stream is multiplexed and saved to a file and the other is streamed through
RTSP.
Run the pipeline:
- Run RTSP server in a separate console on target with udpsrc. You can run it in
the background as a
service:
gst-rtsp-server -p 8900 -a -m /live "( udpsrc name=pay0 port=8554 caps=\"application/x-rtp,media=video,clock-rate=90000,encoding-name=H264,payload=96\" )"Copy to clipboard
- Run the pipeline in same or another console on
target:
gst-launch-1.0 -e qtivcomposer name=mixer sink_0::position="<0, 0>" sink_0::dimensions="<1280, 720>" sink_1::position="<590, 310>" sink_1::dimensions="<640, 360>" mixer. ! queue ! tee name=t_split t_split. ! queue ! video/x-raw,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! h264parse ! queue ! mp4mux ! queue ! filesink location=/opt/mux.mp4 t_split. ! queue ! video/x-raw,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! h264parse config-interval=-1 ! rtph264pay pt=96 ! udpsink host= port=8554 qtiqmmfsrc name=camsrc_0 camera=0 ! video/x-raw, format=NV12, width=1280, height=720, framerate=30/1 ! mixer. qtiqmmfsrc name=camsrc_1 camera=1 ! video/x-raw, format=NV12, width=1280, height=720, framerate=30/1 ! mixer.Copy to clipboard
- To stop the use case, use CTRL + C.
Pull the recorded content from the device using the `scp` command,
and play content on host computer.
scp root@:/opt/ Copy to clipboard
You can play the MP4 file on a media player. The video is streamed over RTSP on a host
computer. See [View RTSP stream on host computer](https://docs.qualcomm.com/doc/80-70018-50/topic/camera-and-video-encode.html#one_stream_1080p_avc_rtsp_from_live_source__section_ayq_2nh_pyb).
The figure shows the flow of the pipeline execution:
Figure : Pipeline for two 720p camera streams–picture-in-picture display, encoded, and
streamed through RTSP

**Related Resources**
- [Multi-camera streaming](https://docs.qualcomm.com/doc/80-70018-50/topic/gst-multi-camera-stream-example.html)
- [Multi-camera streaming using Python](https://docs.qualcomm.com/doc/80-70018-50/topic/multi-camera-streaming-python-sample-app.html)
Last Published: Jan 30, 2026
[Previous Topic
Video encode and decode](https://docs.qualcomm.com/bundle/publicresource/80-70018-50/topics/camera-and-video-encode.md) [Next Topic
Transform and Transcode use cases](https://docs.qualcomm.com/bundle/publicresource/80-70018-50/topics/transform-and-transcode-use-cases.md)