Live Schedule Service


The Live Schedule Service manages a live event in the Search index on the engage server.

When an event is scheduled and the publishLive configuration is set, a live media package is published to the Search index. The live media package contains track(s) with live streaming urls.

The live media package is retracted from the Search index when the capture finishes or if it fails.

If event metadata, such as title or duration, are updated, the live media package in the Search index is updated accordingly.


To use this service, you need to have:

  1. A streaming server (Wowza, Adobe Media Server) or CDN already set up to stream live content
  2. A capture agent capable of streaming to it
  3. A player capable of playing live streams. The Paella player using the Flash component supports the rtmp protocol. Other players/protocols have not been tested.


Step 1: Configure the service

Edit etc/org.opencastproject.liveschedule.impl.LiveScheduleServiceImpl.cfg.

If your capture agent does not register a property, it's mandatory to configure the live.streamingUrl.

The live.streamingUrl should be set to your streaming server url (or the subscriber url specified by your CDN).

This is the url that the player will use to play the live stream. For instance, if using rtmp, set it to something like: rtmp://STREAMING_SERVER_HOST:PORT/STREAMING_APPLICATION/

# Configuration for the Live Schedule Service

# If the capture agent doesn't register the property,
# specify live.streamingUrl, live.resolution, and live.streamName below:
# -----------------------------

# The streaming base url e.g. rtmp://streaming.server/live/

# If a comma-separated list is provided, several resolutions will be generated for each flavor

# Possible variable substitutions:
# #{id} = media package id
# #{flavor} = type-subtype of flavor
# #{caName} = capture agent name
# #{resolution} = video resolution e.g. 1920x1080

# -----------------------------

# The same mime-type applies to all flavors and resolutions

# If a comma-separated list is provided, several streams links will be generated, one for each
# resolution-targetFlavor combination.
# Default is presenter/delivery

# The distribution service to use: download or aws.s3

Step 2: Configure the capture agent

Capture agent does not register the property

Configure the capture agent to stream to your streaming server (or the publisher url specified by your CDN), using the same stream name specified in live.streamName.

Capture agent registers the property

If your capture agent supports configuring custom capture agent properties, instead of configuring the live.streamingUrl, live.resolution, live.streamName, you can update the capture agent firmware to pass the following when registering to Opencast:

  • capture.device.names: add 'live' to the current list of devices
  • one for each desired stream

Then, the LiveScheduleService will generate as many live tracks as the resolutions registered, with their streaming urls, using 'presenter/delivery' (or the flavor configured, but only one flavor can be used).

If a property was registered, it will take precedence over the LiveScheduleService configuration.

Example 1:

Capture agent does not register with


  • live.streamName=#{caName}-#{flavor}.stream
  • live.targetFlavors=presenter/delivery
  • capture agent name: ca01

Then, the capture agent should stream to ('/' is replaced by '_'): rtmp://STREAMING_SERVER_HOST:PORT/STREAMING_APPLICATION/

Note: Please refer to your streaming server or CDN documentation for the correct syntax of the streaming url. The live.streamingUrl may be very different from the url the capture agent streams to. For instance, with Akamai, the url used by the player will be something like live.streamingUrl=rtmp:// and the capture agent's publish url something like rtmp:// The stream name should always match.

Example 2:

Capture agent registers with

If the capture agent registers itself with:

property key value
capture.device.names presentation,presenter,live
capture.device.presentation.flavor presentation/source
capture.device.presenter.flavor presenter/source rtmp:// rtmp://

The LiveScheduleService will generate a media package with two live tracks having the following urls:

  • rtmp://
  • rtmp://

Step 3: Configure the Workflow

When scheduling a live event via the admin UI, the workflow needs to have the publishLive configuration set to true (this is already included in the sample workflows). If not using the sample Opencast workflows, add to the <configuration_panel>:

          <legend>Publish live stream:</legend>
              <input id="publishLive" name="publishLive" type="checkbox" class="configField" value="false" />
              <label for="publishLive">Add live event to Opencast Media Module</label>

And to the defaults operation:

      description="Applying default configuration values">
        <configuration key="comment">false</configuration>
        <configuration key="publishToMediaModule">true</configuration>
        <configuration key="publishToOaiPmh">true</configuration>
        <configuration key="uploadedSearchPreview">false</configuration>
        <configuration key="publishLive">false</configuration>