Moderate Every Live Stream. Automatically.
No harmful content missed. No manual review backlog. No complex integrations.
Moderator analyzes video frames from your live streams in real time, detects nudity, violence, weapons, drugs, and other restricted visuals using AWS Rekognition, and can automatically stop unsafe streams, capture evidence screenshots, or trigger webhooks — so your platform stays safe without slowing your broadcast down.
Real-Time Detection and Moderation for Unsafe Live Content
Moderator Plugin is an AI-powered moderation plugin for live streaming platforms on Ant Media Server. It continuously analyzes live video streams and detects unsafe or restricted content in real time. The Moderator Plugin for Ant Media Server, developed by Streamtoolbox, enables continuous, automated content moderation directly inside your streaming workflow. Designed for scale and precision, it can identify content such as nudity, violence, weapons, drugs, and other harmful visuals.
When a violation is detected, the plugin can automatically stop the stream, capture screenshots, trigger webhooks, or notify moderators immediately — without human intervention or manual delays.
Key Features - Everything You Need for Live Stream Moderation
Scotty detects SCTE-35 markers and injects ad signaling into your streams in real time, enabling seamless SSAI and SGAI workflows.
Real-Time Detection
Continuously scans live streams and detects unsafe content instantly.
Nudity & Violence Detection
Identifies explicit, graphic, and violent content automatically.
Weapon & Drug Detection
Detects weapons, drugs, and restricted visuals in live streams.
Automatic Stream Blocking
Stops or blocks streams when moderation thresholds are exceeded.
Webhook & Alert Support
Trigger webhooks, notifications, and external workflows in real time.
Screenshot Capture
Capture and save evidence frames when a moderation event is triggered.
Moderator Plugin Installation
Getting started with Moderator only takes a few minutes. Install the plugin, configure AWS Rekognition, enable transcoding, and start monitoring live streams in real time.
1. Download the Moderator Plugin
SSH into your Ant Media server and download the plugin JAR into the plugins directory:
cd /usr/local/antmedia/plugins sudo wget https://streamtoolbox.com/download/ams-moderator-1.1.0.jar
NOTE: Check the StreamToolBox Products site for the latest plugin version.
2. Get Your AWS Rekognition Credentials
Before creating the Moderator configuration, create an IAM user in AWS with Amazon Rekognition permissions enabled.
- In AWS go to IAM → Users → Create User
- Assign the user programmatic access and attach permissions for Amazon Rekognition
Create User
Go to Security Credentials and click Create Access Key.
Select Applications running outside AWS.
Then generate:
- Access Key ID
- Secret Access Key
You will use these values in the moderator.conf file in the next step.
3. Create the Moderator Configuration File
Create the configuration file and open it for editing:
sudo touch /usr/local/antmedia/conf/moderator.conf sudo nano /usr/local/antmedia/conf/moderator.conf
Add the following configuration:
moderator.enabled=true moderator.aws.region="eu-west-2" moderator.aws.access.key.id="YOUR_ACCESS_KEY" moderator.aws.secret.access.key="YOUR_SECRET_KEY" moderator.frame.sampling.rate=25 moderator.labels="Smoking,Tobacco,Drugs & Tobacco,Alcohol,Violence,Nudity" moderator.action="notify" moderator.notify.webhook.url="http://localhost:9998/anything"
IMPORTANT:
- Moderator requires decoded video frames. Enable ABR (Adaptive Bitrate) in your Ant Media application settings and configure at least one transcoding resolution.
- After updating the configuration file, restart Ant Media Server for changes to take effect.
4. Configuration Loading Order
Moderator reads its settings from configuration files in the following order:
Global Configuration File
/usr/local/antmedia/conf/moderator.conf
Applies the same moderation settings across all Ant Media applications.
Application-Specific Configuration File
/usr/local/antmedia/conf/moderator-[application-name].conf # Example /usr/local/antmedia/conf/moderator-liveapp.conf
Application-specific configuration files always take priority over the global configuration file.
Custom Configuration Path (Optional)
Override the default config location by adding this JVM argument to the Ant Media service startup file:
-Dmoderator.config.file=/var/tmp/my.conf
NOTE: If no Moderator configuration file exists, the plugin automatically uses its default settings.
5. Configuration Reference
Quick reference for every available Moderator setting:
| Setting | Default | Description |
|---|---|---|
| moderator.enabled | true |
Enables or disables moderation functionality. |
| moderator.labels | No default | Labels that trigger actions. Example: Smoking Alcohol Violence Nudity |
| moderator.frame.sampling.rate | 30 |
Frames skipped before processing one. Lower values improve accuracy but may increase Rekognition costs. |
| moderator.aws.region | us-east-1 |
AWS region used for Amazon Rekognition. |
| moderator.aws.access.key.id | — | AWS access key ID used for authentication with Rekognition. |
| moderator.aws.secret.access.key | — | AWS secret access key used for authentication with Rekognition. |
| moderator.confidence.threshold | 0.7 |
Minimum confidence score required before a moderation result is treated as valid. |
| moderator.stream.ids | [] |
Limits moderation to specific stream IDs. If empty, all streams are monitored. |
| moderator.action | log |
Action when inappropriate content is detected. Options: log notify stop |
| moderator.notify.webhook.url | null |
Webhook URL that receives moderation events and detected labels. |
| moderator.notify.webhook.include.image | false |
Includes a base64-encoded JPEG screenshot in webhook notifications. |
| moderator.capture.image | false |
Saves a screenshot locally when inappropriate content is detected. Only applies when action is stop. |
| moderator.capture.image.directory | . |
Directory where captured screenshots are stored when image capture is enabled. |
6. (Optional) Start a Local Webhook Receiver
In Step 3, moderator.notify.webhook.url is configured for demonstration and testing.
When the Moderator plugin detects restricted content (smoking, alcohol, violence, nudity, etc.), it sends a notification to the URL you define. Think of a webhook as an automatic alert sent by the plugin to another system. Use cases:
- Trigger moderation workflows
- Notify your backend application
- Alert moderators instantly
- Stop streams automatically
- Store moderation events for audit logs
- Capture incident details for review
For quick local testing, run a webhook receiver using httpbin. This creates a temporary local endpoint that shows you exactly what the plugin is sending:
sudo docker run -p 9998:80 kennethreitz/httpbin
7. Add the License File and Restart Ant Media
If you have purchased a license for your Moderator Plugin, copy it into the conf directory and restart the service:
# Copy the Moderator license file sudo cp moderator-license.lic /usr/local/antmedia/conf/ # Restart Ant Media Server sudo systemctl restart antmedia.service
8. Publish a Stream and Verify Detection
You can publish a stream using OBS, vMix, ffmpeg, or any RTMP-compatible encoder.
Using OBS
Using FFMPEG
# Download the sample video wget https://streamtoolbox.com/download/big_buck_bunny_720p_h264.mov # Publish the stream with ffmpeg ffmpeg -re -i big_buck_bunny_720p_h264.mov -c copy -f flv rtmp://localhost:1935/LiveApp/myStream
Watch the logs via CLI or Ant Media Web Panel > Logs:
# Watch the Ant Media logs tail -f /usr/local/antmedia/log/ant-media-server.log # Plugin attached to the stream Registering Moderator frame listener in stream test AWS Rekognition service initialized for region: eu-west-2 # Matching content detected Detected moderation labels in test: Smoking, Drugs & Tobacco, Alcohol Detected moderation labels in test: Smoking (96.89), Drugs & Tobacco Paraphernalia & Use (96.89), Drugs & Tobacco (96.89), Pills (1.84), Products (1.84) Detected moderation labels in test: Smoking (98.63), Drugs & Tobacco Paraphernalia & Use (98.63), Drugs & Tobacco (98.63), Pills (0.72), Products (0.72) # No matching content found No bad content detected in test
✔ Success: Log entries showing Detected moderation labels with confidence scores confirm the plugin is analyzing frames and Rekognition is returning results.
If no labels are detected:
- Make sure adaptive bitrate transcoding is enabled. Moderator requires decoded video frames for analysis.
- Lower
moderator.frame.sampling.rateto 25. Helps the plugin analyze frames more frequently. - Use a clear test video. Smoking, alcohol, violence, or nudity scenes should be large and visible in the frame.
- Expand
moderator.labels. Include broader categories such as Tobacco, Drugs & Tobacco, Alcohol, Violence, and Nudity.
Take Control of Your Live Stream Safety Today
Deploy AI-powered moderation in minutes. Detect harmful content in real time, automate responses, and keep your platform safe, compliant, and scalable without manual monitoring.