The rtsp-simple-server README instructions on https://github.com/aler9/rtsp-simple-server is a little sparse on publishing as a systemd service using Gstreamer and the vaapi plugin. I spent some time trying to get the service to run properly. This post documents the steps I used on an Intel system board running Ubuntu 20.
- Optional. If Gstreamer has not been installed, then follow the instructions on https://gstreamer.freedesktop.org/documentation/installing/on-linux.html?gi-language=c.
- If the GStreamer VAAPI plugin has not been installed, run the following command in a Terminal:
$ sudo apt install gstreamer1.0-vaapi
Download and install rtsp-simple-server
- Using a browser, download and extract the rtsp-simple-server binary from the github repo https://github.com/aler9/rtsp-simple-server into a folder, e.g. /path/to/rtsp/
The files rtsp-simple-server and the rtsp-simple-server.yml are extracted out into the directory /path/to/rtsp/.
- Open up a Terminal. At the prompt, change directory to the extracted location.
$ cd /path/to/rtsp/
- Move the binary to the folder /usr/local/bin/
$ sudo mv rtsp-simple-server /usr/local/bin/
- Move the configuration file to the folder /usr/local/etc/
$ sudo mv rtsp-simple-server.yml /usr/local/etc/
Configure rtsp-simple-server to publish from gstreamer
- Open up a Terminal. At the prompt, change directory to the directory /usr/local/etc/.
$ cd /usr/local/etc/
- Using a text editor, edit the configuration file rtsp-simple-server.yml. Create a new path name e.g. mystream under the paths key.
- In the runOnDemand key, type in the Gstreamer pipeline to read from a video source, perform encoding and finally to publish to the rtsp server.
Note 1: device points to the video source.
Note 2: video/x-raw line specifies the video format, frame rate, and resolutions to use
Note 3: videoconvert converts the color space
Note 4: vaapih264 performs the video encoding using the Intel GPU
Note 5: rtspclientsink publishes the video to the rtsp server
- Save and close the configuration file.
Create and start the rtsp-simple-server service
- Open up a Terminal. Type in the following to create the systemd service.
- To enable and start the service, run the following:
$ sudo systemctl enable rtsp-simple-server
$ sudo systemctl start rtsp-simple-server
Optional. Define LIBVA environment variables
On some boards, when using the vaapi encoding plugin, gstreamer may not run with the error message:
WARNING: erroneous pipeline: no element "vaapih264enc"
In this case, setting the environment variables LIBVA_DRIVERS_PATH and LIBVA_DRIVER_NAME for the service may solve the problem. An example of the command to create the rtsp-simple-server service with the environment variables is shown below: