RTSP Stream Setup#
Steps to serve the intersection .ts video files over RTSP using mediamtx and ffmpeg.
Prerequisites#
<rtsp-server-IP>: Machine IP that runs mediamtx (Check withhostname -I)Port
8554must not be blocked by firewall
1. Download mediamtx#
wget https://github.com/bluenviron/mediamtx/releases/download/v1.9.0/mediamtx_v1.9.0_linux_amd64.tar.gz
tar xzf mediamtx_v1.9.0_linux_amd64.tar.gz
This extracts mediamtx binary and mediamtx.yml config.
2. Start mediamtx RTSP server#
nohup ./mediamtx &
By default it listens on :8554 (all interfaces).
3. Install ffmpeg#
sudo apt-get install -y ffmpeg
4. Download the video file#
curl -k -L -o 1122north_h264.ts \
"https://github.com/open-edge-platform/edge-ai-resources/raw/refs/heads/main/videos/1122north_h264.ts"
Other available videos:
1122east_h264.ts1122west_h264.ts1122south_h264.ts
5. Publish the stream#
ffmpeg -stream_loop -1 -re -i 1122north_h264.ts -c copy -f rtsp rtsp://localhost:8554/north
To run in background:
nohup ffmpeg -stream_loop -1 -re -i 1122north_h264.ts -c copy -f rtsp rtsp://localhost:8554/north > /tmp/ffmpeg_rtsp.log 2>&1 &
6. Verify the stream#
ffprobe rtsp://localhost:8554/north
Expected output: H.264 High profile, 1280x720, 30fps.
Access#
Local:
rtsp://localhost:8554/northRemote:
rtsp://<rtsp-server-IP>:8554/north
Multiple streams#
To serve all four cameras:
ffmpeg -stream_loop -1 -re -i 1122north_h264.ts -c copy -f rtsp rtsp://localhost:8554/north &
ffmpeg -stream_loop -1 -re -i 1122south_h264.ts -c copy -f rtsp rtsp://localhost:8554/south &
ffmpeg -stream_loop -1 -re -i 1122east_h264.ts -c copy -f rtsp rtsp://localhost:8554/east &
ffmpeg -stream_loop -1 -re -i 1122west_h264.ts -c copy -f rtsp rtsp://localhost:8554/west &
7. Configure the DL Streamer pipeline#
Edit smart-intersection/src/dlstreamer-pipeline-server/config.json to switch a camera from the local video file to the RTSP source.
Replace the multifilesrc source element in the pipeline string:
Before (local file):
multifilesrc loop=true location=/home/pipeline-server/videos/1122north_h264.ts
After (RTSP source):
urisourcebin uri=rtsp://<rtsp-server-IP>:8554/north
Replace <rtsp-server-IP> with the IP of the machine running mediamtx.
To use all four RTSP streams, update each camera pipeline accordingly:
Pipeline |
RTSP URI |
|---|---|
|
|
|
|
|
|
|
|
8. Restart the pipeline server#
After editing config.json, recreate the container to pick up the changes:
cd smart-intersection/src
docker compose up -d --force-recreate dlstreamer-pipeline-server
Verify the RTSP source is active in the logs:
docker logs metro-vision-ai-app-recipe-dlstreamer-pipeline-server-1 2>&1 | grep "element"
You should see 'element': 'urisourcebin' for the cameras configured with RTSP, confirming the stream is being consumed from the remote source.