# Multi-camera/Multi-client use cases
Source: [https://docs.qualcomm.com/doc/80-70022-50/topic/multi-camera-multi-client-use-cases.html](https://docs.qualcomm.com/doc/80-70022-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
[GStreamer command-line use cases](https://docs.qualcomm.com/doc/80-70022-50/topic/gstreamer-application-use-cases.html).
### GMSL camera limitation for Dragonwing IQ-8275 and Dragonwing IQ-9075
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 : Dragonwing IQ-8275 and Dragonwing IQ-9075–GSML port support and
limitation
| SoC | GMSL port connection |
| :--- | :--- |
| QCS6490 | Ensure that you connect the MIPI cameras to the CSI slots on the Qualcomm Dragonwing™ RB3 Gen 2 Development Kit.
Connect the OV9282 MIPI camera to the CAM 0A slot.
Connect the IMX577 MPI camera to the CAM3 slot.
|
| Dragonwing IQ-8275 | 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 3.
|
| Dragonwing IQ-9075 |
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-70022-50/topic/multi-camera-multi-client-use-cases.html](https://docs.qualcomm.com/doc/80-70022-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 use case on the target
device:
gst-launch-1.0 -e qtiqmmfsrc name=camsrc_0 video_1::type=preview ! video/x-raw,format=NV12_Q08C,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_Q08C,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_Q08C,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_Q08C, 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 and play content on the Linux host computer.
In the terminal of the host computer, run the following
commands:
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 following 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-70022-50/topic/multi-camera-multi-client-use-cases.html](https://docs.qualcomm.com/doc/80-70022-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 use case on the target
device:
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 following 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-70022-50/topic/multi-camera-multi-client-use-cases.html](https://docs.qualcomm.com/doc/80-70022-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 the target device 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 the target
device:
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 and play content on the Linux host
computer.
In the terminal of the host computer, run the following command:
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 [RTSP stream on host computer](https://docs.qualcomm.com/doc/80-70022-50/topic/camera-and-video-encode.html#one_stream_1080p_avc_rtsp_from_live_source__section_ayq_2nh_pyb).
The following 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-70022-50/topic/multi-camera-multi-client-use-cases.html](https://docs.qualcomm.com/doc/80-70022-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 use case on the target
device:
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 following 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-70022-50/topic/multi-camera-multi-client-use-cases.html](https://docs.qualcomm.com/doc/80-70022-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 use case:
- Run RTSP server in a separate console on the target device 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 the target
device:
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 and play content on the Linux host
computer.
In the terminal of the host computer run the following command:
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 [RTSP stream on host computer](https://docs.qualcomm.com/doc/80-70022-50/topic/camera-and-video-encode.html#one_stream_1080p_avc_rtsp_from_live_source__section_ayq_2nh_pyb).
The following 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 information
- [Multi-camera streaming](https://docs.qualcomm.com/doc/80-70022-50/topic/gst-multi-camera-stream-example.html)
- [Multi-camera streaming using Python](https://docs.qualcomm.com/doc/80-70022-50/topic/multi-camera-streaming-python-sample-app.html)
Last Published: Feb 20, 2026
[Previous Topic
Video encode and decode](https://docs.qualcomm.com/bundle/publicresource/80-70022-50/topics/camera-and-video-encode.md) [Next Topic
Transform and Transcode use cases](https://docs.qualcomm.com/bundle/publicresource/80-70022-50/topics/transform-and-transcode-use-cases.md)