Maker.io main logo

Stream Live Video Over RTSP From Your Raspberry Pi

2023-03-23 | By Nate_Larson

License: See Original Project Raspberry Pi

A recent project of mine was to get Frigate NVR set up and running. With the NVR setup complete, my ‎next step was to get some more camera feeds set up. Since I already had some Pi’s running around my ‎house, such as my Raspberry Pi flight tracker‎, and Raspberry Pi recently launched their new ‎camera module 3 product series, it was a no-brainer to make use of the Pi I already had for this.‎

RTSP From Your Raspberry Pi

In this project, I’ll explain how I was able to use various Raspberry Pi’s and cameras to create RTSP ‎‎(Real Time Streaming Protocol) camera feeds that I could integrate with Frigate. This process works on ‎essentially all modern Pi’s that have wifi, from the original Zero W to the most recent Raspberry Pi 4, ‎and operates minimal CPU load, so you likely won’t need any heatsinks or fans for processor cooling. ‎Additionally, this works with the official v2, v3, and HQ cameras (I don’t have an original v1 camera ‎module to test) as well as third-party cameras that connect via the CSI port, such as the Arducam 16MP ‎autofocus camera.‎

Setup the Operating System

Like most Raspberry Pi projects, you begin by flashing your microSD card with the Raspberry Pi ‎operating system using the Raspberry Pi Imager. For this project, we will use the Raspberry Pi OS Lite ‎‎(32-bit) operating system found under the Raspberry Pi OS (other) category.‎

system_1

system_2

Before flashing the SD card, open the advanced options by clicking the gear icon.‎

gear_3

From the advanced options window, set your device’s hostname and password, enable SSH, configure ‎your wireless LAN, and select your locale settings. Then write the operating system to your SD card.‎

options_4

Once the software is written to the microSD card, remove the card from the PC and install it 0n the Pi. ‎Connect the flat flex cable of your camera to the Pi’s CSI connector, and power up the Pi.‎

written_5

Install and Configure RTSP Simple Server

With your Pi booted, we need to connect to the Pi via SSH to install the camera server software. Using ‎a program such as PuTTY or Tera Term, open an SSH connection to your Pi using the hostname you ‎previously assigned followed by “.local”. In my case, I can connect to my Pi at PiFrontyardCam.local.‎

connect_6

connect_7

Once logged in, use the following command to update the package database, install any new packages ‎that are available, and reboot the Pi.‎

Copy Code
sudo apt update && sudo apt -y full-upgrade && sudo reboot

When the Pi finishes updating and reboots, reconnect via SSH and verify your camera is recognized:‎

Copy Code
v4l2-ctl --list-devices

If your camera is recognized, you should see an output similar to the below image.‎

output_8

If you don’t see something along these lines, your camera was not recognized. Ensure the camera ‎cable is properly seated in the flat flex connectors on the Pi and camera board and that the cable is ‎oriented correctly so the contacts of the cable are in proper contact with those of the connector. The ‎blue backer should face the connector latch.‎

latch_9

With your camera properly recognized by the Pi, we can download the latest release of rtsp-simple-‎server from the official GitHub repository. You can download the 32-bit version for Raspberry Pi OS Lite ‎by running the following. If using a Raspberry Pi 3, 4, or Zero 2W, use the ARM v7 as shown below, but ‎if using the original Pi Zero W, you should download and install the package for ARM v6. Note that at ‎the time of writing, the current version is 0.21.4. If a newer version is available to you, you should ‎update the following commands to install the latest version. ‎

Copy Code
wget https://github.com/aler9/rtsp-simple-server/releases/download/v0.21.4/rtsp-simple-‎server_v0.21.4_linux_armv7.tar.gz

Extract the contents of the downloaded archive:‎

Copy Code
tar -xzf rtsp-simple-server_v0.21.4_linux_armv7.tar.gz

Create a directory in a suitable location to house the binary, such as /usr/local/bin:‎

Copy Code
sudo mkdir /usr/local/bin/‎

Move the rtsp-simple-server binary to the newly created directory:‎

Copy Code
sudo mv rtsp-simple-server /usr/local/bin/‎

Make the rtsp-simple-server binary executable:‎

Copy Code
sudo chmod +x /usr/local/bin/rtsp-simple-server

Configure rtsp-simple-server to receive the RTSP feed from the Raspberry Pi:‎

Copy Code
nano rtsp-simple-server.yml

Edit the source within the paths section of the file, change “all:” to “cam:” and the source to ‎rpiCamera.‎

source_10

With the source changed, press CTRL+X to exit, “Y” to save changes, and ENTER to keep the original file ‎name.‎

Start the rtsp-simple-server by running:‎

Copy Code
rtsp-simple-server

If you are not presented with any errors, use VLC running on another device on the local network to ‎verify the stream is working properly. If you don’t have VLC installed, you can download and install it ‎from here: https://www.videolan.org/vlc/

Open VLC and press CTRL+N to open the network stream dialog. Type in the stream URL as ‎‎“rtsp://<hostname>.local:8554/cam” and click play.‎

dialog_11

After a couple seconds, you should be presented with the live video stream from your Raspberry Pi ‎camera.‎

While this works as intended, you will notice if you press CTRL+C in the Pi’s terminal, the stream will ‎stop. Obviously, this is not optimal - we need the RTSP server on the Pi to start automatically on boot, ‎so we don’t have to SSH in to start the stream whenever the Pi reboots. To do this, we will create a ‎service to launch the server automatically.‎

Run the RTSP Server as a Service

Move the rtsp-simple-server yaml configuration to a suitable location, such as /usr/local/etc:‎

Copy Code
sudo mv rtsp-simple-server.yml /usr/local/etc/‎

Create a new service unit file for rtsp-simple-server:‎

Copy Code
sudo nano /etc/systemd/system/rtsp-simple-server.service

Add the following to the file:‎

Copy Code
sudo tee /etc/systemd/system/rtsp-simple-server.service >/dev/null << EOF
‎[Unit]‎
Wants=network.target
‎[Service]‎
ExecStart=/usr/local/bin/rtsp-simple-server /usr/local/etc/rtsp-simple-server.yml
‎[Install]‎
WantedBy=multi-user.target
EOF

CTRL+X, “Y”, and ENTER will save our changes and close the file.‎

Reload the Systemd daemon to load the new service unit file:‎

Copy Code
sudo systemctl daemon-reload

Enable the rtsp-simple-server service to start on boot:‎

Copy Code
sudo systemctl enable rtsp-simple-server.service

Start the rtsp-simple-server service:‎

Copy Code
sudo systemctl start rtsp-simple-server.service

Verify that the rtsp-simple-server service is running by checking its status:‎

Copy Code
sudo systemctl status rtsp-simple-server.service

If you receive no errors, you can reopen the stream from VLC the same as before and view the stream ‎is working. Your Pi camera will now automatically start the video stream whenever it is booted. Use ‎the same network stream URL to add this new camera to Frigate NVR, or for any other application for ‎which you would use an IP camera.‎

If you notice your video stream is not working well with Frigate, you can try changing the fps (frames ‎per second) to 5 in your nano rtsp-simple-server.yml file, which is the fps recommendation for Frigate ‎video sources. You can also make adjustments to the rpiCameraWidth and rpiCameraHeight settings ‎within that same file. To check the default resolutions your camera supports:‎

Copy Code
libcamera-hello –list-cameras

Summary

Creating a streaming camera using a Raspberry Pi is relatively simple using the rtsp-simple-server ‎software. The software runs well, even on the relatively low-power Pi Zero line, and its low resource ‎usage means that a Pi typically does not require any additional cooling. The software works well with ‎CSI-compatible camera sources, including the newest Raspberry Pi Camera Module 3 line and the ‎video stream it creates can be easily integrated with an NVR or used for live web streaming.

制造商零件编号 SC0874
RASPBERRY PI CAMERA 3 WIDE
Raspberry Pi
制造商零件编号 SC0873
RASPBERRY PI CAMERA 3 NOIR
Raspberry Pi
制造商零件编号 SC0875
RASPBERRY PI CAMERA 3 WIDE NOIR
Raspberry Pi
制造商零件编号 B0371
RPI AUTOFOCUS CAMERA IMX519 16MP
Arducam
制造商零件编号 SC0073
SBC 1.4GHZ 4 CORE 1GB RAM
Raspberry Pi
制造商零件编号 SC0193(9)
RASPBERRY PI 4 B 2GB
Raspberry Pi
制造商零件编号 SC1223
RASPBERRY PI CAMERA 3
Raspberry Pi
制造商零件编号 SC1176
SBC 1.0GHZ 4 CORE 512MB RAM
Raspberry Pi
Add all DigiKey Parts to Cart
TechForum

Have questions or comments? Continue the conversation on TechForum, DigiKey's online community and technical resource.

Visit TechForum