Creating an Electronic Program Guide (EPG)

In this topic, you will learn how to create an Electronic Program Guide (EPG) for Brightcove Beacon.

Overview

An Electronic Program Guide (EPG) displays scheduling information for past, current and upcoming broadcast programming available on each of your Brightcove Beacon channels.

For information on creating channels in Brightcove Beacon, please visit the Creating a Channel documentation.

This document will teach you how to structure your XML file and upload it as an EPG to Brightcove Beacon.

A high-level view of the process is:

  1. Create an XML file with your channel information which meets the EPG schema.
  2. Drop the XML file in the S3 bucket supplied by Brightcove.
  3. After the steps above are completed, the file will automatically be ingested into Brightcove Beacon. The information will be displayed in the Channels section of Brightcove Beacon.

The rest of this document will provide details for each of the steps above.

Required information for EPG

  • An XML file with the channel information: This file can be created manually or automatically.
  • The S3 bucket Username and Password credentials provided by Brightcove.
  • An S3 account (bucket name and URL path) provided by Brightcove. The actual location for the EPG file.

XML File Structure

To generate an EPG for Brightcove Beacon, you will need to create and upload an XML file to the S3 bucket with all the metadata information of your channels such as video titles, descriptions, and duration.

Here is an example of the XML Structure:

<RiGHTvEPG xmlns="http://www.orca.tv/RiGHTv/7.0/EPG" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
version="1.0" language="en" xsi:schemaLocation="http://www.orca.tv/RiGHTv/7.0/EPG 
RiGHTvEPG.xsd">    
  <ChannelsList>
    <channel id="your Beacon channel name">
      <program id="3394" time="2020-04-22T01:25:00Z" duration="PT01H45M" 
      delete="false" pvrEnabled="false" stovEnabled="false" catchUpEnabled="false">
        <title>Video Title</title>
        <description>
        <![CDATA[
        Description of your video asset.
        ]]>
        </description>
      </program>
    </channel>
  </ChannelsList>
</RiGHTvEPG>

For the head of the XML file you can use the following code:

<RiGHTvEPG xmlns="http://www.orca.tv/RiGHTv/7.0/EPG" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  version="1.0" language="en" xsi:schemaLocation="http://www.orca.tv/RiGHTv/7.0/EPG 
  RiGHTvEPG.xsd">
  

The RiGHTvEPG.xsd file contains an XML Schema that describes the structure of the XML document, and the file is hosted by Brightcove. You can validate your XML using the XSD file schema in an XML validator.

Validation Schema RiGHTvEPG.xsd file (a link to download the schema follows the listing):

  <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.orca.tv/RiGHTv/7.0/EPG" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="RiGHTvEPG">
      <xs:complexType>
        <xs:sequence>
          <xs:element name="ChannelsList">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="channel">
                  <xs:complexType>
                    <xs:sequence>
                      <xs:element name="program" maxOccurs="unbounded" minOccurs="1">
                        <xs:complexType>
                          <xs:sequence>
                            <xs:element name="title">
                              <xs:simpleType>
                                <xs:restriction base="xs:string">
                                  <xs:minLength value="1"/>
                                </xs:restriction>
                              </xs:simpleType>
                            </xs:element>
                            <xs:element type="xs:string" name="description"/>
                          </xs:sequence>
                          <xs:attribute type="xs:int" name="id" use="optional"/>
                          <xs:attribute type="xs:dateTime" name="time" use="required" />
                          <xs:attribute type="xs:duration" name="duration" use="required"/>
                          <xs:attribute type="xs:string" name="delete" use="optional"/>
                          <xs:attribute type="xs:string" name="pvrEnabled" use="optional"/>
                          <xs:attribute type="xs:string" name="stovEnabled" use="optional"/>
                          <xs:attribute type="xs:string" name="catchUpEnabled" use="optional"/>
                        </xs:complexType>
                      </xs:element>
                    </xs:sequence>
                    <xs:attribute type="xs:string" name="id" use="required"/>
                  </xs:complexType>
                </xs:element>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
        <xs:attribute type="xs:float" name="version"/>
        <xs:attribute type="xs:string" name="language"/>
      </xs:complexType>
    </xs:element>
  </xs:schema>

You can also download the validation file from here: RiGHTvEPG.xsd

The following are important XML tags and metadata:

Name Description Example
channel id Unique identifier for your channel id=“your Beacon channel name
program id Unique identifier for your program video asset id=“3344”
time The scheduled transmission time for your video; the times should be in UTC format, and all will be converted to the local time of each location that displays your content time=“2020-04-22T01:25:00Z”
delete Required for EPG format, please always set to false delete="false"
pvrEnabled Required for EPG format, please always set to false pvrEnabled="false"
stovEnabled Required for EPG format, please always set to false stovEnabled="false"
catchUpEnabled Required for EPG format, please always set to false catchUpEnabled="false"
duration The duration of your video event; the duration format is defined following the ISO 8601 standard duration=“PT01H45M” In this format the (PT) represents the Period Time of 1 hour (H) and 45 minutes (M)
title The title of your video event <title>Your video title</title>
description The description of your video event <description> <![CDATA[ The video description goes here ]]> </description>

Once your XML file is ready, you can upload it to the S3 bucket and credentials that Brightcove provided you with an FTP client or an automated script.

Fetching the XML File in Brightcove Beacon

After uploading the XML to the S3 bucket, you will need to fetch the file if you want to immediately get the new schedules reflected into your Brightcove Beacon app. To do this perform the following steps:

  1. Log in to Brightcove Beacon.
  2. Click on the Tools (wrench) button in the upper right of the screen.
  3. Select the Ingestion tab.
  4. Click on the Fetch XML from Folder button.
  5. Select the Cache tab from the left menu.
  6. Click in the Cache Purge button to clear the cache.

Reviewing the Schedule in Brightcove Beacon

In this section, you will be able to review if your EPG was set correctly on the Brightcove Beacon channel’s schedule.

  1. In Brightcove Beacon, click the Channels tab.
  2. In the left menu, click in the EPG section.
  3. In the Schedule section, you will see all your available channels.
  4. Click the blue button with the arrow to display all the schedules that were submitted by the XML file for the selected channel.
  5. Note the Start Time and End Time dates are in UTC time.
  6. To see the channel information in a Brightcove Beacon app, in the menu click in the Program Guide tab.
  7. Here you will be able to review the EPG of your channels.
  8. If there are any empty spaces in your XML programming schedule, the Brightcove Beacon system will fill those empty spaces with a label in the channel schedule.
  9. To choose the EPG schedule for another day, select the day of your preference on the menu.

FAQ

Here are some common questions related to EPG's:

How do I link the EPG to a Live Channel ID in Brightcove?

In the EPG XML file, set the channel id to the value of your Beacon channel name.


Can I use the same program id value for repeated programs?

The program id must be unique, even if the same program is repeated. For example, if replays are used within the same EPG schedule, you must use a unique program id value for each instance.


Can I use a single XML file with multiple channel ids?

No. You must use one XML file per channel.