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.

Moderator Plugin for Ant Media Server
Moderation Active
Scanning live frames...

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

Create User

Go to Security Credentials and click Create Access Key.

Security Credentials

Select Applications running outside AWS.

Applications Outside AWS

Then generate:

  • Access Key ID
  • Secret Access Key
Access Key Generated

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

Server:    rtmp://YOUR_SERVER_IP/LiveApp
Stream Key: test
Moderator Plugin Stream

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.rate to 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.