Video TCP server sink

Browse source code on GitHub

Description

This sample application gets frames from a video capture device and sends them over the network to the connected TCP client.

Requirements

This samples requires a video capture device and network support.

Wiring

On MIMXRT1064-EVK, The MT9M114 camera module should be plugged in the J35 camera connector. A USB cable should be connected from a host to the micro USB debug connector (J41) in order to get console output via the freelink interface. Ethernet cable must be connected to RJ45 connector.

On STM32N6570-DK, the MB1854 IMX335 camera module must be plugged in the CSI-2 camera connector. A RJ45 ethernet cable must be plugged in the ethernet CN6 connector. For an optimal image experience, it is advice to embed STM32 image signal processing middleware: https://github.com/stm32-hotspot/zephyr-stm32-mw-isp.

Building and Running

For MIMXRT1064-EVK, the sample can be built with the following command. If a mt9m114 camera shield is missing, video software generator will be used instead.

west build -b mimxrt1064_evk --shield dvp_fpc24_mt9m114 samples/drivers/video/tcpserversink

For testing purpose and without the need of any real video capture hardware, a video software pattern generator is supported by using Video Software Generator Snippet (video-sw-generator):

west build -b native_sim/native/64 -S video-sw-generator samples/drivers/video/capture

For STM32N6570-DK, the sample can be built with H264 video compression support using the venc file_suffix at the end of the following command:

west build -b stm32n6570_dk --shield st_b_cams_imx_mb1854 samples/drivers/video/tcpserversink -- -DFILE_SUFFIX=venc

Sample Output

Video device detected, format: RGBP 480x272
TCP: Waiting for client...

Then from a peer on the same network you can connect and grab frames.

Example with gstreamer:

gst-launch-1.0 tcpclientsrc host=192.0.2.1 port=5000 \
    ! videoparse format=rgb16 width=480 height=272 \
    ! queue \
    ! videoconvert \
    ! fpsdisplaysink sync=false

For video software generator, the default resolution should be width=320 and height=160.

When using video compression support, use this GStreamer command line:

gst-launch-1.0 tcpclientsrc host=192.0.2.1 port=5000 \
    ! queue ! decodebin ! queue ! fpsdisplaysink sync=false

References

See also

Video
BSD Sockets compatible API