๐ Role-Based Access Control - Enterprise-grade permission system with user roles
๐ฅ Modern Streaming - WebRTC, Go2RTC, RTSP2Web support with hardware acceleration
โ๏ธ Monitor Function Redesign - Granular control with separate Capturing, Analysing, and Recording settings
๐ก Enhanced Protocols - ONVIF Events, MQTT, Amcrest API integration
๐ท๏ธ Event Tagging - Flexible labeling and organization system
๐ Server Monitoring - Real-time CPU, memory, and performance metrics
๐ Geolocation - Geographic tracking for events and servers
โก Hardware Encoding - GPU acceleration for video encoding
Overview
ZoneMinder 1.38.x represents a major evolution from version 1.36.x, introducing significant architectural improvements, new streaming capabilities, enhanced security features, and extensive monitoring enhancements. This release focuses on modernizing the platform with support for contemporary streaming protocols, implementing enterprise-grade access control, and improving performance and scalability.
Major Feature Areas
1. Advanced User Access Control & Security
Role-Based Access Control (RBAC)
Introduced comprehensive role-based permission system with reusable role templates
New database tables: User_Roles, Role_Groups_Permissions, Role_Monitors_Permissions
Replaced legacy comma-separated monitor ID strings with normalized permission tables
Fine-grained permissions for both monitor groups and individual monitors
Enhanced User Management
Added user profile fields: Name, Email, Phone
User-specific montage layouts for personalized dashboards
Improved security controls with private and system configuration flags
2. Modern Streaming & Multi-Protocol Support
WebRTC Integration
Janus WebRTC Gateway support with audio streaming capabilities
Go2RTC protocol support for alternative streaming
RTSP2Web streaming with WebRTC/MSE/HLS options
Configurable codec selection and stream profiles
Hardware-Accelerated Encoding
Hardware acceleration support for video encoding (GPU encoding)
New encoder configuration options: EncoderHWAccelName and EncoderHWAccelDevice
One of the most significant architectural changes in 1.38.x is the redesign of the monitor Function field into three independent control parameters. This provides much more granular control over monitor behavior.
Legacy Function Field (1.36.x and earlier)
The traditional Function field was a single enum that controlled all aspects of a monitor's operation:
None - Monitor disabled
Monitor - Capture video only (no recording, no motion detection)
Modect - Motion detection with recording on motion
Record - Continuous recording without motion detection
Mocord - Continuous recording with motion detection
Nodect - Recording on external trigger, no built-in motion detection
New Granular Control (1.38.x)
The Function field has been split into three independent settings, allowing fine-grained control:
Capturing enum (None/Ondemand/Always)
Controls whether the monitor captures video from the camera
None - No video capture (monitor effectively disabled)
Ondemand - Capture only when needed (e.g., when viewing live or triggered by events)
Always - Continuous video capture from the camera
Analysing enum (None/Always)
Controls whether motion detection and analysis is performed
None - No motion detection or analysis (equivalent to Monitor or Record modes)
Always - Perform motion detection and analysis (equivalent to Modect or Mocord modes)
Recording enum (None/OnMotion/Always)
Controls when video is saved to disk
None - No recording (live viewing only)
OnMotion - Record only when motion is detected or triggered
Always - Continuous recording
Migration from Legacy Functions
The database automatically migrates old Function values to the new settings:
User-specific montage layouts with personalized views
options to locate/hide status information to fully use space
Playback Improvements
Default player selection for preferred streaming client
Enhanced video playback controls
Improved event viewing experience
Optimal mjpeg scaling to reduce cpu/bandwidth use while maintaining fidelity
** New file explorer view **
limited to defined storage areas
** Watch and Cycle views merged **
PTZ controls improved, with toggling of visibility
8. Storage & Recording
Granular Recording Control
With the redesign of the monitor Function field (see section 3), recording behavior is now controlled independently through the Recording, Capturing, and Analysing settings. This provides much greater flexibility:
Recording modes: None/OnMotion/Always
Capturing modes: None/Ondemand/Always
Analysis modes: None/Always
This allows configurations that weren't possible with the old Function field, such as:
Capture and analyze without recording (for alerting only)
Record without analysis (for compliance/archival)
On-demand capture with triggered recording
Email Notifications
Email format options: Individual or Summary
Improved event notification formatting
Configurable alert delivery
9. Geographic & Metadata Features
Geolocation Support
Geographic coordinates for monitors, events, and servers
Location-based event tracking and analysis
10. Development & Integration
Database Schema Evolution
The 1.37.x series includes approximately 79 database schema updates from 1.37.1 through 1.37.79, each introducing targeted improvements and new capabilities. Key architectural changes include:
Migration from string-based configuration to normalized relational tables
Introduction of extensible metadata storage systems
Enhanced foreign key relationships for referential integrity
Improved indexing for query performance
Upgrade Considerations
Breaking Changes
Permission system migration from comma-separated strings to normalized tables
Some configuration parameters have been renamed or restructured
Monitor soft delete may require updates to custom scripts that query monitor data
Compatibility
Version 1.36.x is still supported alongside 1.38.x (see SECURITY.md)
Database upgrades are handled automatically via update scripts
Backup your database before upgrading
System Requirements
Hardware acceleration features require compatible GPU and drivers
WebRTC streaming may require additional server configuration
MQTT integration requires MQTT broker setup
Community & Support
For detailed documentation, visit: https://zoneminder.readthedocs.org
This release represents the collaborative effort of the ZoneMinder development team and community contributors. Special thanks to all who submitted patches, reported bugs, provided testing, and contributed to making ZoneMinder better.
Note: This is a high-level overview of changes from version 1.36.0 to 1.38.x. For a complete list of all changes, bug fixes, and minor improvements, please refer to the git commit history and closed issues on GitHub.