Skip to content

Troubleshooting

This section covers common issues encountered when operating Meridian VMS and provides diagnostic steps and solutions for each.

Symptoms: The camera appears as “offline” in the dashboard or live view, but you can access its web interface and RTSP stream directly.

Likely causes:

  1. Stream relay failure — The stream relay on the recording server may have crashed or failed to establish the RTSP connection to the camera. Check the MediaMTX logs:

    Terminal window
    sudo journalctl -u meridian-mediamtx -f
  2. Sub-stream unavailability — If the camera is configured to use a sub-stream for detection or live view and the sub-stream is not available (some cameras disable the sub-stream by default), the relay will fail. Verify the sub-stream URL is valid or switch to main-stream only.

  3. Heartbeat timeout — The recording server may not be sending heartbeats. Check the recorder daemon is running and the MQTT connection is active:

    Terminal window
    sudo systemctl status meridian-recorder
    sudo journalctl -u meridian-recorder --since "5 minutes ago"
  4. Network connectivity — Verify the recording server can reach the camera on the RTSP port:

    Terminal window
    ffprobe -rtsp_transport tcp rtsp://{camera_ip}:{port}/stream1

Symptoms: Recording processes exit repeatedly with code 234. Recorder logs show "codec parameters not found" or "could not find codec parameters".

Cause: The recording engine cannot determine the codec parameters from the RTSP stream within the default analysis duration. This is common with cameras that have long keyframe intervals or non-standard stream configurations.

Solution: The recorder daemon automatically applies an increased analysis window for problematic streams. If the issue persists:

  1. Verify the camera’s stream settings — reduce the keyframe interval (GOP size) to 1-2 seconds
  2. Ensure the camera is outputting a supported codec (H.264 or H.265)
  3. Check that the RTSP URL is correct and the stream is accessible

Symptoms: Live view shows a black screen with console errors mentioning bufferAppendError or fragParsingError.

Cause: Certain camera manufacturers (notably Uniview) periodically change SPS/PPS parameters mid-stream. Chrome’s Media Source Extensions (MSE) cannot handle these changes.

Solution: This is a known browser limitation. Meridian VMS addresses it in two ways:

  • Live view: Use WebRTC instead of HLS for live streaming. WebRTC handles SPS/PPS changes natively. Meridian VMS defaults to WebRTC for all live views.
  • Event clips: Event clips are normalised for universal browser compatibility before delivery.

See Video Troubleshooting for more details on codec-related issues.


Symptoms: API requests fail with timeout errors or connection-related messages. Common in deployments with many concurrent streams and active detection.

Cause: The database connection pool may be exhausted when too many concurrent operations are in flight. This can happen with large camera counts (100+) when heartbeats, segment indexing, and event writes all compete for connections.

Solution:

  1. Check the database service is running and healthy
  2. Review the management server logs for connection errors: sudo journalctl -u meridian-management -f
  3. For large deployments (200+ cameras), consider increasing database connection limits — contact support for guidance

Symptoms: The MediaMTX process consumes excessive CPU, especially with many cameras.

Cause: If HLS remuxing is enabled, it forces continuous HLS segment generation for all streams, even when no one is watching. This is unnecessary when WebRTC is used for live viewing.

Solution: Disable HLS remuxing in the stream relay configuration if WebRTC is the primary live view protocol. This ensures HLS segments are only generated on demand, significantly reducing CPU usage on recording servers with many camera streams.

TopicDescription
LogsAccessing and interpreting service logs for management, recorder, and MediaMTX
Video & Codec IssuesH.265 support, SPS/PPS issues, event clip processing, and sub-stream fallback