# Multi-camera/Multi-client use cases 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-80021-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. 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.
| | 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) 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. 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_0::type=video video_1::type=preview ! video/x-raw,format=NV12,width=1920,height=1080,framerate=30/1 ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! h264parse ! queue ! mp4mux ! filesink location="/opt/mux1.mp4" \ camsrc_0.video_1 ! video/x-raw,format=NV12_Q08C,width=1280,height=720,framerate=30/1 ! waylandsink qtiqmmfsrc name=camsrc_1 video_0::type=video video_1::type=preview ! video/x-raw,format=NV12,width=1920,height=1080,framerate=30/1 ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! h264parse ! queue ! mp4mux ! filesink location="/opt/mux2.mp4" \ camsrc_1.video_1 ! video/x-raw,format=NV12_Q08C,width=1280,height=720,framerate=30/1 ! waylandsink Copy 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]:/workspace Copy to clipboard scp -r root@[DEVICE IP-ADDR]:/opt/mux2.mp4 user1@[HOST IP-ADDR]:/workspace Copy 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: camsrc v4l2h264enc h264parse mp4mux filesink waylandsink camsrc v4l2h264enc h264parse mp4mux filesink waylandsink Open source **Figure : Pipeline for two camera clients–encoding and preview** ## Two 720p streams—one from each camera with side by side stitching for display 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: Qualcomm Open source qtivcomposer waylandsink camsrc camsrc **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 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 ! queue ! qtirtspbin address= 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-80021-50/topic/camera-and-video-encode.html#section-ayq-2nh-pyb). The following figure shows the flow of the pipeline execution: Qualcomm Open source h264parse mp4mux filesink v4l2h264enc v4l2h264enc h264parse rtph264pay udpsink qtivcomposer tee camsrc camsrc **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 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: Qualcomm Open source qtivcomposer waylandsink camsrc camsrc **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 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 ! queue ! qtirtspbin address= 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-80021-50/topic/camera-and-video-encode.html#section-ayq-2nh-pyb). The following figure shows the flow of the pipeline execution: Qualcomm Open source h264parse mp4mux filesink v4l2h264enc v4l2h264enc h264parse rtph264pay udpsink qtivcomposer tee camsrc camsrc **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-80021-50/topic/gst-multi-camera-stream-example.html) - [Multi-camera streaming using Python](https://docs.qualcomm.com/doc/80-80021-50/topic/multi-camera-streaming-python-sample-app.html) Last Published: Mar 26, 2026 [Previous Topic Video encode and decode](https://docs.qualcomm.com/bundle/publicresource/80-80021-50/topics/camera-and-video-encode.md) [Next Topic Transform and Transcode use cases](https://docs.qualcomm.com/bundle/publicresource/80-80021-50/topics/transform-and-transcode-use-cases.md)