Video Moderation / Livestream Moderation

Live stream and Live video Moderation

Introduction

If your application or site supports live streaming, you will probably want to monitor and moderate in real-time the content that is being streamed.

This is possible with Sightengine's Live streaming Moderation API. The Moderation API is entirely automated — which makes it very fast and scalable — and it is completely customizable, so that you can define your own moderation rules.

Here are the steps to moderate live streams:

  1. Your back-end submits a live stream to the Sightengine API
  2. Sightengine analyzes the live stream, and creates alerts each time unwanted content is detected
  3. Your back-end receives callbacks (a.k.a. webhooks) to inform you of any unwanted content. You can also poll Sightengine to ask for status updates, moderation progress and results

Get API access credentials

The Sightengine API uses a key pair that consists of an API user id and an API secret for authentication. To get your own API credentials, create an account and go the the API key page to retrieve them.

Pick your Moderation Models

Sightengine has a long list of moderation models that you can pick and choose from. A model is a video recognition engine that has been designed to spot certain types of unwanted content.

Here are our most popular models for live stream moderation:

nudity

Detect all types of nudity and sexual content. Pornography, X-rated nudity, partial nudity, suggestive scenes and poses, lingerie... More

offensive

Detect offensive and hateful signs, symbols, flags and gestures. More

wad

Detect weapons, alcoholic beverages, recreational drugs and medical drugs. More

face-attributes

Detect faces along with their main attributes: gender, age...

properties

Detect blurry or low-quality content. Extract dominant and secondary colors. More

The full list of models along with details is available in the Model Reference.

Submit a Live Stream to Sightengine

Once a live stream has started, you need to send the URL of your live-stream to the Sightengine API along with your list of moderation models.

Sightengine supports the following protocols for live video ingestion:

  • HLS also known as HTTP Live streaming, over HTTPS or HTTP
  • RTMP and RTMPS, Real-Time Messaging Protocol
  • RTSP and RTP, Real Time Streaming Protocol
  • MPEG-DASH MPEG Dynamic Adaptive Streaming over HTTP

Send it through a GET request to Sightengine, along with the list of models.


curl -X GET -G 'https://api.sightengine.com/1.0/video/check.json' \
    --data-urlencode 'stream_url=https://yourvideo/path' \
    -d 'models=nudity' \
    -d 'callback_url=https://your.callback.url/path' \
    -d 'api_user={api_user}' \
    -d 'api_secret={api_secret}'


# if you haven't already, install the SDK with 'pip install sightengine'
from sightengine.client import SightengineClient
client = SightengineClient('{api_user}','{api_secret}')
output = client.check('nudity').video('https://yourvideo/path', 'https://your.callback.url/path')


// if you haven't already, install the SDK with 'composer require sightengine/client-php'
use \Sightengine\SightengineClient;
$client = new SightengineClient('{api_user}','{api_secret}');
$output = $client->check(['nudity'])->video('https://yourvideo/path', 'https://your.callback.url/path');


// if you haven't already, install the SDK with 'npm install sightengine --save'
var sightengine = require('sightengine')('{api_user}', '{api_secret}');
sightengine.check(['nudity']).video('https://yourvideo/path', 'https://your.callback.url/path').then(function(result) {
    // The API response (result)
}).catch(function(err) {
    // Handle error
});

The JSON response contains the media id for your stream. The media id is a string that starts with med_

            
            
{
    "status": "success",
    "request": {
        "id": "req_1ML249NoEZ8j12op9Lipg",
        "timestamp": 1508774201.3177
    },
    "media": {
        "id": "med_1ML2wKmVgucuNPBN6xT33",
        "uri": "https://yourvideo/path"
    },
    "callback": "https://yourcallback/path"
}
            
        

In the above example, med_1ML2wKmVgucuNPBN6xT33 is the media id you should store to monitor the progress of this moderation job.

Next steps

Once Sightengine starts analyzing a live stream, you can retrieve moderation results in realtime through two separate channels: either through callbacks (this is the recommended approach as it is more efficient and faster) or by polling the API.

Did you find this page helpful?

We're always looking for advice to help improve our documentation!

Let us know what you think

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more

OK