# Single camera streaming

Source: [https://docs.qualcomm.com/doc/80-80020-50/topic/gst-camera-single-stream-example.html](https://docs.qualcomm.com/doc/80-80020-50/topic/gst-camera-single-stream-example.html)

The **gst-camera-single-stream-example** application allows you to use a single
        camera with various outputs, including preview, encode, YUV dump, and RTSP
        streaming.

For example, you can use this application in a security system where the goal is to
            capture a video from one camera and stream it across a network. You can either view it
            or archive it for future review.

The following figure shows the pipeline flow for various single camera stream use cases.
            For more information, see Pipeline flow.

Figure : gst-camera-single-stream-example pipeline
            
            <?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_2" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" width="1080" height="413.405044555664062" viewbox="0 0 1080 413.405044555664062">
  <g>
    <rect x=".5" y=".499954223632812" width="1079" height="412.4052734375" rx="7.499999999999999" ry="7.499999999999999" style="fill: #fafafa;"></rect>
    <path d="M1072,1c3.85986328125,0,7,3.14013671875,7,7v397.405044555664062c0,3.85986328125-3.14013671875,7-7,7H8c-3.85986328125,0-7-3.14013671875-7-7V8c0-3.85986328125,3.14013671875-7,7-7h1064M1072,0H8C3.581733703613281,0,0,3.58172607421875,0,8v397.405044555664062c0,4.41827392578125,3.581733703613281,8,8,8h1064c4.41845703125,0,8-3.58172607421875,8-8V8c0-4.41827392578125-3.58154296875-8-8-8h0Z" style="fill: #d2d7e1;"></path>
  </g>
  <g>
    <rect x="256.962640708457911" y="129.95824269620789" width="140" height="46.666666666667879" rx="4" ry="4" style="fill: #007884;"></rect>
    <rect x="422.584920708744903" y="129.95824269620789" width="140.000000000001819" height="46.666666666667879" rx="4" ry="4" style="fill: #007884;"></rect>
    <rect x="918.076914831375689" y="129.95824269620789" width="139.999999999994543" height="46.666666666667879" rx="3.999999999990905" ry="3.999999999990905" style="fill: #007884;"></rect>
    <rect x="92.090554234808224" y="129.95824269620789" width="140" height="46.666666666667879" rx="4" ry="4" style="fill: #2a2aea;"></rect>
    <text transform="translate(120.621826171875 157.383545875549316)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtiqmmfsrc</tspan></text>
    <text transform="translate(293.591064453125 157.382569313049316)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">capsfilter</tspan></text>
    <text transform="translate(447.061767578125 157.383545875549316)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">v4l2h264enc</tspan></text>
    <rect x="587.782557109774643" y="129.95824269620789" width="140" height="46.666666666667879" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(619.989013671875 157.383545875549316)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
    <rect x="752.890673705302106" y="129.95824269620789" width="140" height="46.666666666667879" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(791.511474609375 157.383545875549316)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">mp4mux</tspan></text>
    <text transform="translate(962.643310546875 157.383545875549316)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesink</tspan></text>
    <g>
      <line x1="232.69171142578125" y1="153.291580200195312" x2="251.001678466796875" y2="153.291580200195312" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="249.98040771484375 156.781997680664062 256.025054931640625 153.291580200195312 249.98040771484375 149.801132202148438 249.98040771484375 156.781997680664062"></polygon>
    </g>
    <g>
      <line x1="397.900238037109375" y1="153.291580200195312" x2="416.210205078125" y2="153.291580200195312" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="415.18890380859375 156.781997680664062 421.233551025390625 153.291580200195312 415.18890380859375 149.801132202148438 415.18890380859375 156.781997680664062"></polygon>
    </g>
    <g>
      <line x1="563.5284423828125" y1="153.291580200195312" x2="581.83843994140625" y2="153.291580200195312" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="580.817138671875 156.781997680664062 586.86181640625 153.291580200195312 580.817138671875 149.801132202148438 580.817138671875 156.781997680664062"></polygon>
    </g>
    <g>
      <line x1="728.6290283203125" y1="153.291580200195312" x2="746.93896484375" y2="153.291580200195312" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="745.917724609375 156.781997680664062 751.96234130859375 153.291580200195312 745.917724609375 149.801132202148438 745.917724609375 156.781997680664062"></polygon>
    </g>
    <g>
      <line x1="893.846435546875" y1="153.291580200195312" x2="912.1563720703125" y2="153.291580200195312" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="911.13507080078125 156.781997680664062 917.17974853515625 153.291580200195312 911.13507080078125 149.801132202148438 911.13507080078125 156.781997680664062"></polygon>
    </g>
    <text transform="translate(107.008544921875 124.958247184753418)" style="font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">Video encoding</tspan></text>
    <rect x="92.090554234808224" y="42.446845794734145" width="140" height="46.666666666665151" rx="4" ry="4" style="fill: #2a2aea;"></rect>
    <text transform="translate(120.621597290039062 69.872024536132812)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtiqmmfsrc</tspan></text>
    <text transform="translate(104.742919921875 37.446815490722656)" style="font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">Camera preview</tspan></text>
    <rect x="256.962640708457911" y="41.307956134980486" width="140" height="46.66666666666606" rx="4" ry="4" style="fill: #007884;"></rect>
    <rect x="422.584920708744903" y="41.307956134980486" width="140.000000000001819" height="46.66666666666606" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(293.591064453125 68.7325439453125)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">capsfilter</tspan></text>
    <text transform="translate(448.682861328125 68.7325439453125)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">waylandsink</tspan></text>
    <g>
      <line x1="232.69171142578125" y1="64.641281127929688" x2="251.001678466796875" y2="64.641281127929688" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="249.98040771484375 68.131729125976562 256.025054931640625 64.641281127929688 249.98040771484375 61.150863647460938 249.98040771484375 68.131729125976562"></polygon>
    </g>
    <line x1="68.309293322602571" y1="65.780179128067175" x2="91.642626655935601" y2="65.780179128067175" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <g>
      <line x1="397.900238037109375" y1="64.641281127929688" x2="416.210205078125" y2="64.641281127929688" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="415.18890380859375 68.131729125976562 421.233551025390625 64.641281127929688 415.18890380859375 61.150863647460938 415.18890380859375 68.131729125976562"></polygon>
    </g>
    <rect x="256.962640708457911" y="216.804333700001735" width="140" height="46.66666666666606" rx="4" ry="4" style="fill: #007884;"></rect>
    <rect x="422.584920708744903" y="216.804333700001735" width="140.000000000001819" height="46.66666666666606" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(293.591064453125 244.228935241699219)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">capsfilter</tspan></text>
    <text transform="translate(467.151611328125 244.228935241699219)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesink</tspan></text>
    <g>
      <line x1="232.69171142578125" y1="240.137680053710938" x2="251.001678466796875" y2="240.137680053710938" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="249.98040771484375 243.628097534179688 256.025054931640625 240.137680053710938 249.98040771484375 236.647232055664062 249.98040771484375 243.628097534179688"></polygon>
    </g>
    <g>
      <line x1="397.900238037109375" y1="240.137680053710938" x2="416.210205078125" y2="240.137680053710938" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="415.18890380859375 243.628097534179688 421.233551025390625 240.137680053710938 415.18890380859375 236.647232055664062 415.18890380859375 243.628097534179688"></polygon>
    </g>
    <rect x="92.090554234808224" y="217.469146770650696" width="140" height="46.666666666664241" rx="4" ry="4" style="fill: #2a2aea;"></rect>
    <text transform="translate(120.621597290039062 244.893610000610352)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtiqmmfsrc</tspan></text>
    <text transform="translate(94.758544921875 212.469633102416992)" style="font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">Camera YUV dump</tspan></text>
    <rect x="256.962640708457911" y="304.980459160537066" width="140" height="46.66666666666606" rx="4" ry="4" style="fill: #007884;"></rect>
    <rect x="422.584920708744903" y="304.980459160537066" width="140.000000000001819" height="46.66666666666606" rx="4" ry="4" style="fill: #007884;"></rect>
    <rect x="918.076914831375689" y="304.980459160537066" width="139.999999999994543" height="46.66666666666606" rx="3.999999999990905" ry="3.999999999990905" style="fill: #007884;"></rect>
    <rect x="92.090554234808224" y="304.980459160537066" width="140" height="46.66666666666606" rx="4" ry="4" style="fill: #2a2aea;"></rect>
    <text transform="translate(120.621826171875 332.406028747558594)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtiqmmfsrc</tspan></text>
    <text transform="translate(293.591064453125 332.405052185058594)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">capsfilter</tspan></text>
    <text transform="translate(447.061767578125 332.405052185058594)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">v4l2h264enc</tspan></text>
    <rect x="587.782557109774643" y="304.980459160537066" width="140" height="46.66666666666606" rx="3.99999999999999" ry="3.99999999999999" style="fill: #007884;"></rect>
    <text transform="translate(619.989013671875 332.405052185058594)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
    <rect x="752.890673705302106" y="304.980459160537066" width="140" height="46.66666666666606" rx="3.99999999999999" ry="3.99999999999999" style="fill: #007884;"></rect>
    <text transform="translate(782.573974609375 332.405052185058594)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">rtph264pay</tspan></text>
    <text transform="translate(960.131591796875 332.405052185058594)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">udpsink</tspan></text>
    <g>
      <line x1="232.69171142578125" y1="328.313796997070312" x2="251.001678466796875" y2="328.313796997070312" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="249.98040771484375 331.804214477539062 256.025054931640625 328.313796997070312 249.98040771484375 324.823379516601562 249.98040771484375 331.804214477539062"></polygon>
    </g>
    <g>
      <line x1="397.900238037109375" y1="328.313796997070312" x2="416.210205078125" y2="328.313796997070312" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="415.18890380859375 331.804214477539062 421.233551025390625 328.313796997070312 415.18890380859375 324.823379516601562 415.18890380859375 331.804214477539062"></polygon>
    </g>
    <g>
      <line x1="563.5284423828125" y1="328.313796997070312" x2="581.83843994140625" y2="328.313796997070312" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="580.817138671875 331.804214477539062 586.86181640625 328.313796997070312 580.817138671875 324.823379516601562 580.817138671875 331.804214477539062"></polygon>
    </g>
    <g>
      <line x1="728.6290283203125" y1="328.313796997070312" x2="746.93896484375" y2="328.313796997070312" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="745.917724609375 331.804214477539062 751.96234130859375 328.313796997070312 745.917724609375 324.823379516601562 745.917724609375 331.804214477539062"></polygon>
    </g>
    <g>
      <line x1="893.846435546875" y1="328.313796997070312" x2="912.1563720703125" y2="328.313796997070312" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="911.13507080078125 331.804214477539062 917.17974853515625 328.313796997070312 911.13507080078125 324.823379516601562 911.13507080078125 331.804214477539062"></polygon>
    </g>
    <text transform="translate(104.727294921875 299.980277061462402)" style="font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">RTSP streaming</tspan></text>
    <path d="M50.04808516862613,42.284301757809772h-11.250000000001819l-5.625000000001819,6.750000000001819h-6.749999999998181c-2.485281229020984,0-4.5,2.014718770979016-4.5,4.499999999998181v20.250000000000909c0,2.485283374786377,2.014718770979016,4.500000000003638,4.5,4.500000000003638h36.000000000003638c2.485283374785467,0,4.499999999998181-2.014716625217261,4.499999999998181-4.500000000003638v-20.250000000000909c0-2.485281229019165-2.014716625212714-4.499999999998181-4.499999999998181-4.499999999998181h-6.750000000001819l-5.625-6.750000000001819Z" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></path>
    <circle cx="44.423085168624311" cy="60.284301757812273" r="6.750000000001932" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></circle>
    <line x1="68.309293322602571" y1="153.291576029541829" x2="91.642626655935601" y2="153.291576029541829" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <path d="M50.04808516862613,135.29157602954001h-11.250000000001819l-5.625000000001819,6.750000000003638h-6.749999999998181c-2.485281229020984,0-4.5,2.014718770977197-4.5,4.499999999996362v20.25c0,2.485283374786377,2.014718770979016,4.500000000003638,4.5,4.500000000003638h36.000000000003638c2.485283374785467,0,4.499999999998181-2.014716625217261,4.499999999998181-4.500000000003638v-20.25c0-2.485281229019165-2.014716625212714-4.499999999996362-4.499999999998181-4.499999999996362h-6.750000000001819l-5.625-6.750000000003638Z" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></path>
    <circle cx="44.423085168624311" cy="153.291576029542739" r="6.750000000001363" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></circle>
    <line x1="68.309293322602571" y1="240.802480103982816" x2="91.642626655935601" y2="240.802480103982816" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <path d="M50.04808516862613,222.802480103980997h-11.250000000001819l-5.625000000001819,6.750000000003638h-6.749999999998181c-2.485281229020984,0-4.5,2.014718770977197-4.5,4.499999999996362v20.25c0,2.485283374786377,2.014718770979016,4.500000000003638,4.5,4.500000000003638h36.000000000003638c2.485283374785467,0,4.499999999998181-2.014716625217261,4.499999999998181-4.500000000003638v-20.25c0-2.485281229019165-2.014716625212714-4.499999999996362-4.499999999998181-4.499999999996362h-6.750000000001819l-5.625-6.750000000003638Z" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></path>
    <circle cx="44.423085168624311" cy="240.802480103983726" r="6.750000000001363" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></circle>
    <line x1="68.309293322602571" y1="328.313792493871006" x2="91.642626655935601" y2="328.313792493871006" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <path d="M50.04808516862613,310.313792493867368h-11.250000000001819l-5.625000000001819,6.750000000003638h-6.749999999998181c-2.485281229020984,0-4.5,2.014718770977197-4.5,4.499999999996362v20.25c0,2.485283374786377,2.014718770979016,4.500000000003638,4.5,4.500000000003638h36.000000000003638c2.485283374785467,0,4.499999999998181-2.014716625217261,4.499999999998181-4.500000000003638v-20.25c0-2.485281229019165-2.014716625212714-4.499999999996362-4.499999999998181-4.499999999996362h-6.750000000001819l-5.625-6.750000000003638Z" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></path>
    <circle cx="44.423085168624311" cy="328.313792493870096" r="6.750000000001363" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></circle>
    <g>
      <g>
        <text transform="translate(881.004974365234375 389.940109252929688)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Qualcomm </tspan></text>
        <rect x="860.753952976559958" y="377.848617891824688" width="16" height="16" rx="2" ry="2" style="fill: #2a2aea;"></rect>
      </g>
      <g>
        <text transform="translate(979.586761474609375 389.940109252929688)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Open source</tspan></text>
        <rect x="959.335734389409481" y="377.848617891824688" width="16" height="16" rx="2" ry="2" style="fill: #007884;"></rect>
      </g>
    </g>
  </g>
</svg>

## Run the application

1. Ensure that you complete the Prerequisites.
2. In the terminal of the target device, select any of the following use cases and
                    run the respective command:
    - **Live camera use case**: View the live camera on
                            Waylandsink:

            gst-camera-single-stream-example -o 0 -w 1920 -h 1080Copy to clipboard
    - **MP4 use case**: Dump the MP4 to the
                                /etc/media/
                            folder:

            gst-camera-single-stream-example -o 1 -w 1920 -h 1080Copy to clipboard
    - **YUV use case**: Dump the YUV data to the
                                `/etc/media/`
                            folder:

            gst-camera-single-stream-example -o 2 -w 1920 -h 1080Copy to clipboard
    - **RTSP use case**: View the RTSP stream (run the RTSP server) on the
                            Linux host computer:
        1. Run the 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 -a <ip_address> -p 8900 -m /live "( udpsrc name=pay0 port=<port_num> caps=\"application/x-rtp,media=video,clock-rate=90000,encoding-name=H264,payload=96\" )"Copy to clipboard

            For
                                        example:

                gst-rtsp-server -p 8900 -a 10.92.182.47 -m /live "( udpsrc name=pay0 port=8554 caps=\"application/x-rtp,media=video,clock-rate=90000,encoding-name=H264,payload=96\" )"Copy to clipboard
        2. Run the following
                                    command:

                gst-camera-single-stream-example -o 3 -w 1280 -h 720 -i <ip_address> -p <port_num>Copy to clipboard
3. In the terminal of the host computer, run the following commands to view the
                        stream on the VLC player or FFplay respectively:

**For VLC:**

        vlc -vvv rtsp://<ip_address>:8900/liveCopy to clipboard

**For                        FFplay:**

        ffplay rtsp://<ip_address>:8900/liveCopy to clipboard
4. To stop the use case, use CTRL + C.
5. In the terminal of the target device, run the following command in the SSH shell
                    to display the available help
                    options:

        gst-camera-single-stream-example --helpCopy to clipboard
6. In the terminal of the host computer, run the following command to pull the
                    files from the target
                    device:

        scp root@<IP address of target device>:/etc/media/<filename to pull> <destination directory>Copy to clipboard

## Expected output

The following table lists the expected output based on the selected output type.

Table : Expected output for gst-camera-single-stream-example

| Output | Description |
| :--- | :--- |
| Display | Preview the stream. |
| Dump the MP4 and YUV data | Save the output to a file at /etc/media/. |
| RTSP | View the output on a remote display. |

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

## Pipeline flow

The following table lists the plugins used in the single camera streaming
                        pipeline:| Pipeline | Description |
| --- | --- |
| Live camera preview on display | <ol class="ol" id="gst-camera-single-stream-example__ol_njk_nls_nbc"><br>                                        <li class="li"><a title="The qtiqmmfsrc plugin captures the video frames through Qualcomm Camera Service." class="xref cursorpointer" onclick="Window.BookmapComponent.navigateFile('qtiqmmfsrc.html')">qtiqmmfsrc</a> captures the camera live<br>                                            stream.</li><br><br>                                        <li class="li">Capsfilter is applied to enforce constraints on the raw<br>                                            video data.</li><br><br>                                        <li class="li">The data is sent to the Wayland display sink (<a title="The waylandsink plugin uses the GstVideoSink GStreamer class. It's based on the Wayland Weston compositor, which creates its own window and renders the incoming video frames in the window." class="xref cursorpointer" onclick="Window.BookmapComponent.navigateFile('waylandsink.html')">Waylandsink</a>) for live preview.</li><br><br>                                    </ol> |
| Video encoding | <ol class="ol" id="gst-camera-single-stream-example__ol_fhg_wls_nbc"><br>                                        <li class="li"><a title="The qtiqmmfsrc plugin captures the video frames through Qualcomm Camera Service." class="xref cursorpointer" onclick="Window.BookmapComponent.navigateFile('qtiqmmfsrc.html')">qtiqmmfsrc</a> captures the camera live<br>                                            stream.</li><br><br>                                        <li class="li">Capsfilter is applied to enforce constraints on the raw<br>                                            video data.</li><br><br>                                        <li class="li">The data is sent to the Wayland display sink (<a title="The waylandsink plugin uses the GstVideoSink GStreamer class. It's based on the Wayland Weston compositor, which creates its own window and renders the incoming video frames in the window." class="xref cursorpointer" onclick="Window.BookmapComponent.navigateFile('waylandsink.html')">Waylandsink</a>) for live preview.</li><br><br>                                        <li class="li"><a title="The v4l2h264enc plugin uses the V4L2 APIs to encode the video stream." class="xref cursorpointer" onclick="Window.BookmapComponent.navigateFile('v4l2h264enc.html')">v4l2h264enc</a> is used to encode the<br>                                            video 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> |
| Dump the camera YUV to a filesink | <ol class="ol"><br>                                        <li class="li"><a title="The qtiqmmfsrc plugin captures the video frames through Qualcomm Camera Service." class="xref cursorpointer" onclick="Window.BookmapComponent.navigateFile('qtiqmmfsrc.html')">qtiqmmfsrc</a> captures the camera live<br>                                            stream.</li><br><br>                                        <li class="li">Capsfilter is applied to enforce constraints on the raw<br>                                            video data.</li><br><br>                                        <li class="li">Filesink is used to dump the YUV data into a file.</li><br><br>                                    </ol> |
| RTSP streaming | <ol class="ol"><br>                                        <li class="li"><a title="The qtiqmmfsrc plugin captures the video frames through Qualcomm Camera Service." class="xref cursorpointer" onclick="Window.BookmapComponent.navigateFile('qtiqmmfsrc.html')">qtiqmmfsrc</a> captures the camera live<br>                                            stream.</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 title="The v4l2h264enc plugin uses the V4L2 APIs to encode the video stream." class="xref cursorpointer" onclick="Window.BookmapComponent.navigateFile('v4l2h264enc.html')">v4l2h264enc</a> is used to encode the<br>                                            video using the H.264 format.</li><br><br>                                        <li class="li">H264parse is used to parse the video, rtph264pay is used<br>                                            to load the stream to RTSP, and then the stream is sent<br>                                            to a UDP sink for RTSP streaming.</li><br><br>                                    </ol> |

## Related information

Camera streaming using OpenCV

**Parent Topic:** Run sample applications for a camera

Last Published: Mar 02, 2026

Previous Topic
 
Run sample applications for a camera Next Topic

USB camera