RpiStreamer template app. Video capture, stabilization and RTSP server pipeline for Raspberry PI4 and RPI5

€9,500.00

RpiStreamer version 3.0.0 is a application template which users can use as basement of their applications. This application implements basic video processing pipeline: video capture > video stabilization > RTSP server.

LICENSE: We sell compiled version of this library as is, without future updates and technical support according to perpetual non-exclusive royalty-free license. You pay once and can use this library in your software and hardware products without limits. List of files of the compiled version of the library can be found in programmer’s manual. Please read the license agreement before purchasing: DOWNLOAD LICENSE. You can buy technical support service for this product.

Add To Cart
Technical support service
Options:

Overview

RpiStreamer is a application template which users can use as basement of their applications. This application implements basic video processing pipeline: video capture > video stabilization > RTSP server for Raspberry PI4 and PI5. The application combines libraries: VSourceV4L2 (video capture from V4L2 compatible devices), VSourceLibCamera (video capture from Libcamera API compatible devices), VSourceOpenCv (video capture based on OpenCV, supports all video sources which implemented in OpenCV), VCodecV4L2 (H264 and JPEG video encoder for Raspberry PI4 based on V4L2 API), VCodecLibav (H264, H265 and JPEG encoders for RPI5 since it does not have any hardware codec), VStabiliserOpenCv (video stabilization library) and RtspServerLive555 (RTSP server library based on LIVE555 Streaming Media API). The applications shows how to use combination of the libraries listed above. It is built for Raspberry PI4 (Debian Bulleye 11 x64) and PI5 (Debian Bookworm 12 x64) but can be used on any other Linux platform by providing VCodecXXX library with platform compatible VCodec implementation. It supports different video sources and provides real-time video processing. Structure of video processing pipeline:

After start application reads JSON config file which includes video capture parameters, video stabilizer parameters and RTSP server parameters. If there is no config file the application will create new one with default parameters. When the config file is read the application initializes the video source. Depends on configuration params the application creates VSourceV4L2 class object (to capture video from V4L2 compatible cameras) or VSourceLibCamera class object (to capture video from Libcamera API compatible cameras) or VSourceOpenCV (to capture video from video files or from RTSP streams). After the application creates and initializes VStabiliserOpenCv class object (video stabilization) by parameters from JSON config file. Then the application creates board compatible codec and then initializes RtspServerLive555 class object (RTSP server) by parameters from JSON config file and previously created codec. When all modules are initialized the application executes the video processing pipeline: capture video frame from video source - video stabilization - send stabilized video frame to RTSP server. User can connect to RTSP server by any client (ffmpeg, gstreamer, VLC, Milestone etc.). Additionally the application creates folder "Log" to write log information.

The application chooses the right VCodec implementation on its own, based on the board it's compiled on. If it's on a Raspberry Pi 4, it picks VCodecV4L2 because this board supports hardware codecs. However, for Raspberry Pi 5, it goes for VCodecLibav since this board doesn't have hardware codecs and needs a software-based solution.

Purchase options

You can by this software online by card or you can buy the software by bank transfer. Bank transfer available only for companies. To buy software by bank transfer please send us request to info@constantrobotics.com. Also, you can buy technical support service for this product.

Downloads

Application manual: DOWNLOAD

Application for RaspberryPI4B and RPI5: DOWNLOAD

Simple pipeline structure

// Main loop.
while (true)
{
    // Wait new video frame 1000 msec.
    if (!videoSource->getFrame(frame, 1000))
    {
        g_log.print(PrintColor::RED, g_logFlag) <<
        "[" << __LOGFILENAME__ << "][" << __LINE__ << "] ERROR: " <<
        "No input video frame" << endl;
        continue;
    }

    // Stabilize frame.
    if (videoStabiliser->stabilise(frame, stabilizedFrame))
    {
        g_log.print(PrintColor::RED, g_logFlag) <<
        "[" << __LOGFILENAME__ << "][" << __LINE__ << "] ERROR: " <<
        "Can't stabilize frame" << endl;
    }

    // Send frame to RTSP server.
    if(!server.sendFrame(stabilizedFrame))
    {
        g_log.print(PrintColor::RED, g_logFlag) <<
        "[" << __LOGFILENAME__ << "][" << __LINE__ << "] ERROR: " <<
        "Can't add frame to rtsp" << endl;
    }
}
VStabiliserOpenCv C++ lib. Fast cross-platform video stabilisation library
€4,000.00