Broadcast Live Events (SaaS)

Introduction

JW Player offers different types of live services:

  • Broadcast Live Events (With Broadcast Live Standalone)
  • Broadcast Live Events (With Broadcast Live SaaS)
  • Instant Live

This article describes how to implement Broadcast Live Events (SaaS) with Applicaster Zapp. The article describes how to build

  • a shelf with live and upcoming items
  • a shelf with historical streams: video on demand
  • a page that groups multiple events streams on a single screen

And takes into account transitioning feeds from upcoming to live to vod

Events as media in JW Player

Broadcast Live Events are available as media items in the JW Dashboard. Those media items can be grouped into JW Player playlists, and these playlists can be registered as feeds in Applicaster.

Broadcast Live will automatically add and update the media items with custom fields in JW Player. Manually added fields do not get overwritten by Broadcast Live.

The important fields are

  • VCH.EventState, which goes through the following states:
    1. PRE_LIVE
    2. LIVE_UNPUBLISHED 
    3. LIVE_PUBLISHED 
    4. INSTANT_VOD 
    5. VOD_PUBLIC
  • VCH.ScheduledStart and VCH.ScheduledEnd. These follow the ISO 8601 format.
  • Publish Date, which automatically is derived from VCH.ScheduledStart and a configurable offset in BCL. This will is used for sorting.

Important Note: When creating broadcast live events in SaaS these parameters will only appear when selecting a contentType. Also note the selection for contentType when creating a new BCL stream will only appear if at least one contentType exists with hosting_type = live_bcl

Event media types in Zapp

Zapp assigns a video type based on the fields. It takes a few minutes before changes to media item fields are available in Applicaster apps due to caching. Applicaster Zapp therefore also uses VCH.ScheduledStart and VCH.ScheduledEnd to determine when an event is live.

Zapp Video Type Conditions Comments
live-future VCH.ScheduledStart is in the future Link to a landing page WITHOUT a player
live-now (VCH.ScheduledStartis in the past
ANDVCH.ScheduledEndin the future)
OR VCH.EventState is LIVE_PUBLISHED
Link to a landingpage WITH a player
live-vod VCH.EventState is INSTANT_VOD or VOD_PUBLIC Link to a landing page WITH a player

With contentTypes

Where a contentType is defined in the JW platform the Zapp middleware will use this to replace the live- part of the Zapp video type. eg if a live asset has a content Type liveEvent Zapp will use the three video types: liveEvent-future liveEvent-now liveEvent-vod This can be used to manage live assets with content type metadata and allow for multiple live workflows and application logic.

Create a live and upcoming shelf

  1. Create a dynamic playlist that contains your live and upcoming events, with
    • Custom parameter filter ‘any’
    • Filter on parameter: VCH.EventState: PRE_LIVE
    • Filter on parameter: VCH.EventState: LIVE_UNPUBLISHED
    • Filter on parameter: VCH.EventState: LIVE_PUBLISHED
    • Have the list sorted by ‘Publish date’. This field automatically is derived from VCH.ScheduledStart and a configurable offset in Broadcast Live (publish_start_date_offset_hours)
  2. Register the playlist as a feed in Applicaster
  3. Add a list component in Applicaster and link it to the newly created feed
  4. Set autorefresh on 60 seconds to deal with VCH.EventState changes
  5. Ensure the videos with type live-future link to a target screen WITHOUT a player. Tip: show a message on the page: “Event is not live, come back when the event has started”
  6. Ensure the videos with type live-now link to a target screen WITH a player



Create a video-on-demand shelf

Live events will automatically become VOD streams in Broadcast Live

  1. Create a dynamic playlist in JW Player that contain your VOD events, with a custom parameter filter:
    • Custom parameter filter ‘any’
    • Filter on parameter: VCH.EventState: VOD_PUBLIC
    • Filter on parameter: VCH.EventState: INSTANT_VOD
    • Have the list sorted by ‘Publish date’. This field automatically is derived from VCH.ScheduledStart and a configurable offset in Broadcast Live.
  2. Register the playlist as a feed in Applicaster
  3. Add a list component in Applicaster and link it to the newly created feed
  4. Set autorefresh on 60 seconds to deal with VCH.EventState changes
  5. Ensure the videos with type live-vod link to a target screen WITH a player. See here

Creating an event page

  1. Create a JW Player playlist representing the grouped live streams
  2. Create a JW Player media item for the event to group the individual shows for an event together.
    • To create the dummy media item, upload a placeholder video into the JW Dashboard. For example, http://foo.com/bar.mp4. The actual URL is not important. Note: For DRM properties, you need a short (e.g., 1 second) video.
    • The title, thumbnail, and description set on this video will represent the event.
    • Add custom parameters that will contain the playlist ids. Prefered: playlistId
  3. Ensure your Live and VOD feeds take the playlist id as input ` { {playlistId} }`
  4. Assign the playlistId key to list components in Zapp. E.g. extensions.playlistId





Assigning a live now badge

Note: this will become available soon.

Broacast live events have a true/false field called extensions.isLive which can be used to assign a ‘live lock badge’. This field is automatically assigned by Applicaster Zapp and will not appear in JW Player media item fields.

Combine live streams with other videos in a shelf

You might want to promote a live event together with other videos in single shelf. E.g. in a ‘featured’ shelf in the top of the homepage.

You can achieve this by usingexclude custom paramters setting instead of the include custom parameters setting. Ensure you handle the live-now, live-future and live-vod video types as described above.

Handling delays and live stream issues

You want to inform viewers when the streams starts later or when you have an issue in the live stream. You can do this using a ‘slate’: an image stating something like “going live soon”, “we are experiencing issues, stay tuned’ . This can be configured in Broadcast Live using the API and the UI.

It will take about 30 seconds before the slates will be visible to the viewers. Please note that the images need to be uploaded before the stream starts.

The slate can also be updated using the API

PUT /event/stream/replacesource/{id}
{
  "sourceReplacementImage": "channel_unavailable.png"
}

Broadcast Live slates can be used in the Media Live and Media Excel Encoders.