# Multi-camera/Multi-client use cases Source: [https://docs.qualcomm.com/doc/80-70020-50/topic/multi-camera-multi-client-use-cases.html](https://docs.qualcomm.com/doc/80-70020-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-70020-50/topic/multimedia-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. | | Dragonwing IQ-8275 | Ensure that you connect the GMSL camera sensors to the Ride SX
device.
| | Dragonwing IQ-9075 | | ## 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-70020-50/topic/multi-camera-multi-client-use-cases.html](https://docs.qualcomm.com/doc/80-70020-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 | | | Preview | | 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,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 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-70020-50/topic/multi-camera-multi-client-use-cases.html](https://docs.qualcomm.com/doc/80-70020-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-70020-50/topic/multi-camera-multi-client-use-cases.html](https://docs.qualcomm.com/doc/80-70020-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-70020-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-70020-50/topic/multi-camera-multi-client-use-cases.html](https://docs.qualcomm.com/doc/80-70020-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-70020-50/topic/multi-camera-multi-client-use-cases.html](https://docs.qualcomm.com/doc/80-70020-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-70020-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-70020-50/topic/gst-multi-camera-stream-example.html) - [Multi-camera streaming using Python](https://docs.qualcomm.com/doc/80-70020-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-70020-50/topics/camera-and-video-encode.md) [Next Topic Transform and Transcode use cases](https://docs.qualcomm.com/bundle/publicresource/80-70020-50/topics/transform-and-transcode-use-cases.md)