Loading Search...
Upload Guide

Audience and Overview

This guide is intended for all publishers that wish to upload content to a Limelight Video Platform (LVP) account.

Table of Contents


1.0 Uploading Media Overview

The Limelight Video Platform is a complete end-to-end media platform solution which includes the uploading and transcoding of video/audio files and accompany metadata. In order to accommodate all use cases, Limelight offers the following upload options, each of which is described in more detail in the sections below:

Upload Option Description and Best Practises
Browser-based Console Upload Publishers can easily upload a file by selecting 'Upload' in their LVP console account. This is the easiest way to quickly upload a file.
FTP Upload Media files and associated metadata can be uploaded via File Transfer Protocol (FTP). Publishers should use FTP over Console Upload for the following situations:
  • Initial migration
  • Batch upload of media files
  • Upload of large media files (those >512 MB)
  • Upload of media asset metadata, such as Titles, Desriptions and Tags
API Upload Publishers that wish to programmatically upload media files can do so using the LVP Content API. Here are some common use cases for programmatic upload:
  • Automatic syncing with an existing CMS or asset management system
  • Facilitation of User Generated Content (UGC)

1.1 Preparing Your Media Assets

Limelight recommends the use of the following source file specifications. Adherence to these specifications will result in optimal video uploading and processing: Limelight Video Source File Specifications

1.2 Uploading Stages

All media file uploads go through the following two stages:
  1. Uploading Stage - During this stage the original media file is transferred to your Limelight Video Platform account. You must remain logged in and connected to the internet for the full duration of a file upload. The status of your upload will be indicated by a green progress bar.



  2. Processing Stage - Following upload, your file will enter the processing stage. This is when we are encoding your file to multiple bit rates. The processing stage is indicated by the gear icon that appears beside the media.


2.0 Browser-based Console Upload

Publishers can upload one or more media by selecting the 'Upload Media' button located at the top of the 'Media' tab. Upon selection, the publisher will be presented with a browse dialog. Simply select the desired file(s) and confirm. The file(s) will then be added to your account.


3.0 FTP Upload

Media files and metadata can be uploaded via File Transfer Protocol (FTP). The sections that follow provide instructions on how to prepare your assets for FTP.

NOTE: FTP upload is not enabled on all accounts. If you have further questions or would like to enable this on your account, please contact here

3.1 Uploading Files via FTP

Any standard FTP client can be used to upload to a Limelight Video Platform account. However, make sure you use 'binary' type and 'passive' mode. Upon successful upload, your files will be automatically transcoded and will appear in your account. If you do not have an FTP client we recommend the following free solution: Download Filezilla

FTP Address: ftp.delvenetworks.com
Login Credentials: Use the same username and password that is used to login to your console

3.2 Uploading Metadata via FTP and MRSS

The Limelight Video Platform provides a mechanism for the ingestion of video metadata using the MRSS standard. This enables the ability for content publishers to easily migrate large libraries without the need to manually enter asset information (e.g. Titles, Descriptions and Tags). Publishers can also utilize MRSS to apply a preview image and place media into a channel. To account for all use cases, the following approaches are supported:

Approach 1: Have Limelight Retrieve Your Media and Apply Metadata at the Same Time

Note: Use this approach if you desire quick publishing times. The upload of media and the assignment of metadata is done in parallel, making this the fastest approach.

Limelight can automatically retrieve your media files using the <media:content> URL attribute. Therefore, if you wish to automatically have media uploaded and metadata assigned you can simply include a URL for each file in your MRSS manifest. Limelight will then retrieve the files and apply your metadata. The following steps outline how to execute this approach. For an example, see 'Example Use Case 1' in Appendix A.
  1. Create an MRSS manifest of your media metadata and include a URL for each media
  2. Upload your manifest via FTP (the file must end in .MRSS)
The following diagram illustrates this approach:


Approach 2: Apply Metadata to Already Uploaded Media

With this approach you can apply metadata to already uploaded media files. The following steps outline how to execute this. For an example, see 'Example Use Case 2' in Appendix A.
  1. Upload your media files
  2. Create an MRSS manifest of your media metadata (the file must end in .MRSS)
  3. Upload your manifest via FTP
    (NOTE: do not upload your manifest until all your media files have started or completed processing)
The following diagram illustrates this approach:

3.2.1 Structure of an MRSS Manifest

For convenience, Limelight accepts manifest files that are based on the MRSS standard. The following is the basic structure that should be followed:

<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/"
xmlns:lvpcm="http://www.limelightnetworks.com/"
xmlns:dcterms="http://purl.org/dc/terms/">
   <channel>
      <title></title>
      <link></link>
      <description></description>
      <item>
         <title></title>
         <link></link>
         <description></description>
         <guid></guid>
         <media:content url="">
            <media:title></media:title>
            <media:description></media:description>
            <media:thumbnail url="" />
            <media:keywords></media:keywords>
            <media:category></media:category>
         </media:content>
      </item>
   </channel>
</rss>

3.2.2 Element Definitions and Use

The tables below define the use of each element in a metadata manifest file. See Appendix A for examples of completed manifests.

Channel Elements

Element Value Required Description and Use
<title> NO A value should be specified for this element if you wish for media to be automatically placed into a channel. DO NOT specify a value if you wish for the media to remain outside a channel. If the value corresponds to an existing channel in your account, then the media will be placed in that channel. If the value does not correspond to an existing channel, a new channel will be created and media placed within.

Example:
<title>My Channel Title</title>
<link> NO The channel link element is a requirement of the RSS standard. However, the value here will be ignored by LVP.
<description> NO The channel description element is a requirement of the RSS standard. However, the value here will be ignored by LVP.

Item Elements

Element Value Required Description and Use
<title> NO LVP will first look for a value in the <media:title> element. If no value exists then LVP will use the value entered here to populate the 'Title' property.
<link> NO The item link element is a requirement of the RSS standard. However, the value here will be ignored by LVP.
<description> NO LVP will first look for a value in the <media:description> element. If no value exists then LVP will use the value entered here to populate the 'Description' property.
<guid> YES This element MUST contain the original filename of the media (minus the file extension). For example, if the original file is 'MyVideo.mp4' then enter 'MyVideo' as the value for the guid element.

The value entered here specifies whether to use an existing file in your account or create a whole new file. If the value corresponds to an existing original filename in your account, the metadata for that file will be updated. If the filename does not exist in your account, then a new file will be automatically ingested using the url attribute of the <media:content> element.

Example:
<guid>MyVideo</guid>

Media:Content Elements

Element Value Required Description and Use
<media:content> NO LVP will ignore the 'url' attribute for this element if the filename in the <guid> element corresponds to an existing file in your account. If the <guid> element does not correspond to an existing file in your account, LVP will attempt to ingest a new file using the 'url' attribute:

Example:
<media:content url="http://www.foo.com/movie.mov">
<media:title> NO The value specified here will be used to populate the 'Title' property in your LVP account.

Example:
<media:title>My Video Title</media:title>
<media:description> NO The value specified here will be used to populate the 'Description' property in your LVP account.

Example:
<media:description>This video is about...</media:description>
<media:thumbnail> NO The image that corresponds to the value of the 'url' attribute will be assigned as the video 'Preview Image' and 'Thumbnail' in your LVP account.

Example:
<media:thumbnail url="http://my_image_link.jpg" />
<media:keywords> NO The value specified here will be used to populate the 'Tags' property in your LVP account. The keywords should be comma-delimited.

Example:
<media:keywords>tag1, tag2, tag3</media:keywords>
<media:category> NO The value specified here will be used to populate the 'Genre' property in your LVP account. If the value does not correspond to an existing LVP Genre, the value will be ignored.

Example:
<media:category>Sports</media:category>

3.2.3 Populating Custom Properties

In addition to standard media properties (e.g. title, description and tags), values for custom media properties can be populated by adding a few extra elements to your MRSS manifest.

NOTE: Custom properties must first be declared in your account before referencing in an MRSS. Referenced properties that do not already exist will be ignored. To learn how to declare custom properties in your account see the following video tutorial: Video Tutorial: How to Add Custom Metadata

To reference custom properties make sure the following namespace declaration exists at the top:

<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/"
xmlns:lvpcm="http://www.limelightnetworks.com/"
xmlns:dcterms="http://purl.org/dc/terms/">

Then, simply add a <lvpcm:customProperty> element for each property you would like to populate. The following example is an augmented MRSS structure that includes custom property declarations:

<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/"
xmlns:lvpcm="http://www.limelightnetworks.com/"
xmlns:dcterms="http://purl.org/dc/terms/">
   <channel>
      <title></title>
      <link></link>
      <description></description>
      <item>
         <title></title>
         <link></link>
         <description></description>
         <guid></guid>
         <media:content url="">
            <media:title></media:title>
            <media:description></media:description>
            <media:thumbnail url="" />
            <media:keywords></media:keywords>
            <media:category></media:category>
         </media:content>
         <lvpcm:customProperties>
            <lvpcm:customProperty type="Property 1 Name" value="Property 1 Value"/>
            <lvpcm:customProperty type="Property 2 Name" value="Property 2 Value"/>
         </lvpcm:customProperties> 
      </item>
   </channel>
</rss>

3.2.4 Populating a Media Schedule

The availability schedule for any of your media can be populated by adding a few extra elements to your MRSS manifest.

To specify a media schedule make sure the following namespace declaration exists at the top:

<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/"
xmlns:lvpcm="http://www.limelightnetworks.com/"
xmlns:dcterms="http://purl.org/dc/terms/">

Then, add the <dcterms:valid> element to any <item>. The following example is an augmented MRSS structure that includes a media schedule:

NOTE: Dates can be specified in any W3C or RFC822 standard. If time zone is not specified, UTC is assumed and if time is not specified, midnight is assumed.


<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/"
xmlns:lvpcm="http://www.limelightnetworks.com/"
xmlns:dcterms="http://purl.org/dc/terms/">
   <channel>
      <title></title>
      <link></link>
      <description></description>
      <item>
         <title></title>
         <link></link>
         <description></description>
         <guid></guid>
         <media:content url="">
            <media:title></media:title>
            <media:description></media:description>
            <media:thumbnail url="" />
            <media:keywords></media:keywords>
            <media:category></media:category>
         </media:content>
         <dcterms:valid>
            start=2011-01-01T00:00:00Z;
            end=2011-12-31T11:59:59-00:00
         </dcterms:valid> 
      </item>
   </channel>
</rss>

4.0 API Upload

The Limelight Content API gives developers programmatic ability to upload new files, allowing for the creation of both User Generated Content (UGC) experiences as well as syncing with existing CMS or asset management systems. Media files and metadata can be uploaded via HTTP POST request. For information on how to perform these requests, see sections 4.0 and 10.0 of the Content API documentation. You can gain access to this documentation through your account by navigating to the 'Developer Tools' tab under 'Settings'.

NOTE: Write API access is required to perform Content API upload requests. This is not enabled on all accounts. If you have further questions or would like to enable Write API access on your account, please contact us here.

Appendix A

Example Use Case 1:
A publisher wishes to upload an MRSS manifest and have Limelight automatically ingest the new media file and apply metadata. The publisher prepares the MRSS manifest. The publisher enters the value for the original filename in the <guid> element. The publisher then enters the rest of the metadata values (e.g. Title, Description and Tags) in the <media:content> elements and specifies the link to the file in the <media:content> 'url' attribute. The publisher decides that the new file should be automatically placed into an existing channel so they enter the existing channel name in the channel <title> element. The resulting MRSS manifest looks like this:

<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/"
xmlns:lvpcm="http://www.limelightnetworks.com/"
xmlns:dcterms="http://purl.org/dc/terms/">
   <channel>
      <title>My Existing Channel Title</title>
      <link></link>
      <description></description>
      <item>
         <title>Another Great Video</title>
         <link></link>
         <description>This video is equally great...</description>
         <guid>New_File_Original_Filename</guid>
         <media:content url="http://www.foo.com/New_File_Original_Filename.mov">
            <media:title>Another Great Video</media:title>
            <media:description>This video is equally great...</media:description>
            <media:thumbnail url="http://images.mythumbnail.com/image.jpg" />
            <media:keywords>great, cool, awesome</media:keywords>
            <media:category>Entertainment</media:category>
         </media:content>
      </item>
   </channel>
</rss>

Example Use Case 2:
A publisher has just completed the uploading of a new media file to his/her account. The publisher now wishes to add the metadata for the recently uploaded media. The publisher prepares an MRSS manifest file. The publisher enters the value for the original filename in the <guid> element. The publisher then enters the rest of the metadata values (e.g. Title, Description and Tags) in the <media:content> elements. The publisher decides that the media should not be automatically placed into a channel and therefore intentionally leaves the channel <title> element blank. The resulting MRSS manifest looks like this:

<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/"
xmlns:lvpcm="http://www.limelightnetworks.com/"
xmlns:dcterms="http://purl.org/dc/terms/">
   <channel>
      <title></title>
      <link></link>
      <description></description>
      <item>
         <title>A Great Video</title>
         <link></link>
         <description>This video is about great things...</description>
         <guid>The_Videos_Original_Filename</guid>
         <media:content url="">
            <media:title>A Great Video</media:title>
            <media:description>This video is about great things...</media:description>
            <media:thumbnail url="http://images.mythumbnail.com/image.jpg" />
            <media:keywords>great, cool, awesome</media:keywords>
            <media:category>Entertainment</media:category>
         </media:content>
      </item>
   </channel>
</rss>