RSS-TV is an extensible markup language (XML)-based navigation protocol for Internet Media services based on the RSS standard. The adoption of RSS-TV enables video device manufacturers to develop applications to seamlessly navigate premium Internet video services. Example video devices include set top boxes, portable video players, game consoles, broadband-connected digital video disc (DVD) players, digital video recorders (DVRs), portable video players and mobile phones. By implementing the RSS-TV protocol, these devices provide user access to a growing library of online media (video, audio, games) services.

RSS-TV is an extension of RSS and includes additional XML elements and attributes to enable broadband media service features such as:
Readers familiar with digital video broadcasting (DVB) can compare RSS-TV with the DVB Service Information standards developed in the 1990s for digital TV EPGs. The difference is that RSS-TV has been developed for two-way Internet Protocol (IP) networks rather than broadcasting networks. RSS-TV leverages the increasing availability of products that support RSS such as caching engines and RSS-enabled content management and publishing systems.
RSS-TV-compliant applications can be implemented using any language and operating system including AJAX/HTML, Flash, OpenTV, or C. Similarly, service providers can use any web service technologies (Java, .NET, PHP) to build RSS-TV-compliant services.
RSS-compliant feeds that use enclosures for video/audio (podcasting) are fully compliant with RSS-TV. RSS-TV-compliant clients will display these feeds as a list of menu items and will play or download the media.
RSS-TV uses the namespace 'tv'. For example, the RSS-TV XML element duration is identified by <tv:duration>. The official schema will be made available at http://www.rss-tv.org/rss/tv1.0.
Similar to other XML-based standards, RSS-TV documents are assumed to be 8-Bit Unicode Transformation Format (UTF-8) encoded.
|
RSS 2.0 |
|
|
HTTP 1.1 |
|
|
RSS-TV |
|
|
ISO 8601 |
|
|
ISO 639 |
|
|
RFC 822 |
|
0.9 |
April 2006 |
Beta release for review |
|
1.0 |
July 2006 |
First official public release |
|
1.1 |
September 2006 |
Support for (secure) download models and messaging |
|
1.2 |
January 2007 |
Country availability, EPG, resuming media, and previews |
|
1.3 |
March 2007 |
Media Zap, Style, Help |
|
2.0 |
April 2007 |
Specification frozen. All future changes shall be backwards compatible. See below for change details. |
|
2.1 |
November 2007 |
Fixed documentation issues. Added hidden image support for web site analytics. Added attribute ‘visibleitems’ to the <tv:widget> to hint the number of visible items. Added ‘tv:roprovider’ attribute to support proprietary rights object (license) acquisition protocols for download content. Added <style> and <image> as optional input XML elements. Clarified implementation of (server side) play lists. Explained the use of RSS element <guid> to signal currently playing and downloading media. Changed <tv:zap> default value to ‘false’, and introduced override on single item possible. Bandwidth signaling through private HTTP header for multi bitrate support. Support for advertising video through attribute <item tv:noskip> |
|
2.2 |
January 2008 |
Added the <tv:autostart> element to enable the client device to immediately show a (pre)selected media. This enables a traditional channel zapping interface. Added the tv:preload attribute to <item> to inform the client the associated link (RSS-TV document) can be preloaded. Added explicit remarks regarding HTTP caching directives and the implications for document caching. |
RSS-TV 2.0 was established after field tests and numerous protocol reviews. RSS-TV 2.0 is ready for commercial rollout of Internet video services to TV and other video capable devices. Any future specifications will be fully backwards compatible with RSS-TV 2.0.
Summary of changes introduced with RSS-TV 2.0:
The following XML document is an example of a 'root' menu representing the top level of a hierarchical menu structure:
<?xml version="1.0"?>
<rss version="2.0" xmlns:tv="http://www.rss-tv.org/rss/tv1.0">
<channel>
<language>en-us</language>
<title>Main Menu</title>
<tv:help>http://www.test.com/menu/?id=help</tv:help>
<item>
<title>TV On Demand</title>
<description>Watch TV from thousands of programs.</description>
<link tv:type="rss">http://www.test.com/menu/?id=tvod</link>
</item>
<item>
<title>Live TV</title>
<description>Tune in to hundreds of live channels</description>
<link tv:type="rss">http://www.test.com/menu/id=livetv</link>
</item>
<item>
<title>Movie Store</title>
<description>Starting at 1 Euro for 24 hours</description>
<link tv:type="rss">http://www.test.com/vod/</link>
</item>
<item>
<title>Local Weather</title>
<description>Check out our 7 day weather forecast</description>
<link>http://www.weather.com/iptv/</link>
</item>
<item>
<title>Settings</title>
<description>Change your PIN and network settings</description>
<link tv:type="rss">http://www.test.com/menu/?id=setting</link>
</item>
<item>
<title>Introduction video</title>
<description>How to use this video service</description>
<enclosure url="rtsp://www.test.com/v/intro.mp4" type="video/mpeg"/>
</item>
</channel>
</rss>
Most items in this sample RSS-TV document link to other RSS-TV documents, creating a hierarchical menu structure. The document also contains a node item linked to an HTML weather application. Depending on the capabilities of the box, this item may be hidden from the user.
The document also includes an example node that links directly to a MPEG-4 video streaming media file using the RSS enclosure element. All link types and RSS-TV extensions are described and specified in this document.
A typical RSS-TV-compliant Internet video device will boot up, connect to the network, check for firmware upgrades, load the navigation client application, authenticate (optional), and load a predefined RSS-TV URI that contains the top level of the menu structure.
One of the important features of RSS-TV is its support for a hierarchical menu structure. This structure is achieved by linking one RSS XML document (parent) to other RSS XML documents (children) using <link tv:type="rss">.
The endpoints or 'leaves' of the hierarchical menu link to video, audio, Flash applications (through RSS enclosures), HTML applications, or special RSS-TV menu actions. The available item types are documented in the RSS-TV <item> Extensions section.
The following diagram shows a small sample hierarchical menu:


In one example implementation, the user can navigate the services by simply using the up, down, left, and right navigation keys.
The user navigates <up> and <down> to make selections,
and <right>/<ok> to activate selected items. Navigating <left>/<cancel>
cancels the current menu and returns the user to the previous menu.
During navigation, the user's thumb remains around the arrow control, except when entering alphanumeric information such as a user PIN or a movie search query.
RSS-TV does not impose any specific user interface or design. The look and feel of the navigation client application can be completely customized and optimized for the client device platform, independently of the services. It is therefore possible to present the same RSS-TV items using a completely different navigation client application. RSS-TV does allow service directives to instruct the navigation client application to apply certain widgets (text, image, mosaic) and styles.
An RSS-TV-compliant client device maintains the notion of menu levels. Each menu is served on a particular level in the menu hierarchy, starting with level 0 at the root. This enables an RSS-TV application to jump to a previous menu level or to jump n steps backward in the hierarchy.
RSS-TV services that contain circular menu structures (one where a user enters an incorrect email address and password, for example) should ensure that menus are traversed correctly so that the 'back' function operates as expected.
For example, a user who attempts to enter a PIN code should be directed to the PIN entry menu through relative addressing (menu:-2) rather than hard-coded URIs. More information can be found in the section RSS-TV <item> Extensions.
The menu history may contain POST links resulting from an input item. The client shall automatically re-POST content entered by the user if a previous menu level is called.
By default, the client stores each menu TV URI in a menu history. This enables the device to go back in history when the user presses a 'back' button or 'left' button on the remote control.
An RSS-TV link in a single-item response (see Single Item Response) is not stored as a separate entity in the menu history. The client menu history only stores the original RSS-TV link that returned the single item response.

An input item may indicate that the associated RSS-TV URI should not be stored in the menu history. See the section on 'Capturing User Input' for more details. This can be used for functionality such as capturing a PIN code, in which case the user should not return to the PIN entry screen when going 'back' from a subsequent menu page. Example sequence:

When the client navigates through the menu structure, the menu item list may contain a media item that is currently playing or downloading. In that case it is useful to show the user a specific icon (like a speaker icon for playing audio) or the state of the download process. This is referred to as ‘active media’.
In order for the client to identify active media, the RSS-TV service must include the RSS <guid> element in the media <item> elements. The client can use the RSS <guid> to match the currently active media with the media item in any media item list.
The <enclosure> URL can not be used to uniquely identify a media item because:
A menu may contain a number of media items with audio or video enclosures. An RSS-TV compliant client may or may not automatically start the subsequent item in a list after an item has finished playing. It is recommended that the client enables ‘zapping’ functionality using ‘next’ and ‘prev’ to allow the consumer to zap through the media items. See the specification of <tv:zap> for more information.
Server Side Play Lists can be used for dynamically inserting advertising or dynamically creating play lists for online radio channels. The RSS-TV service provides a URL which is called to return the ‘next’ item in the play-list. This URL will be called by the client at the end of the current item using the <tv:done> extension of the <item> element. See the specification of <tv:done> for more information. See the specification of <item tv:noskip> for more information about implementing advertising models.

An example URL and HTTP response of such a play list web service:
http://www.last.tv/playlist/
<?xml version="1.0"?>
<item xmlns:tv="http://www.rss-tv.org/rss/tv1.0">
<title>Umbrella</title>
<tv:meta type="artist" display="Artist">Rihanna</tv:meta>
<guid>8435987546</guid>
<enclosure url="rtsp://www.cdn.com/v/?id=8435987546"/ >
<tv:done>http://www.last.tv/playlist/</tv:done>
</item>
The web service may use session and cookie information to determine the next media item in the list and construct a personalized play list.
A TV service can be made more compelling if basic user and device information can be accessed by services automatically. This enables various features such as:
RSS-TV defines an HTTP cookie-based mechanism to set and access user information. Implementation of user information is not mandatory for RSS-TV compliance. The RSS-TV specification only makes it easier to exchange this information if it exists.
Service providers should ensure that information shared with third-party services is in line with privacy policies accepted by the user.
All information is exchanged through the use of standard HTTP cookies. Cookies are typically set on the domain level (e.g. iptv.net) to ensure that multiple RSS-TV media services can access the cookies (e.g. music.iptv.net, movies.iptv.net, or sports.iptv.net).
User data is exchanged using a multi-value cookie named 'User'. The following parameters are defined:
|
Parameter |
Description |
|
Name |
User name |
|
Language |
Two-character, ISO 639-compatible |
|
TZ |
Regional time zone identifier e.g. 'America/New_York' |
|
TZOffset |
Time zone offset in minutes from GMT |
|
IPCountry |
Three-character ISO 3166-1 parameter based on IP address |
|
IPState |
Local state name based on IP address |
|
IPCity |
Local city name based on IP address |
Example:
User=Name=Robert&Language=en&IPCountry=us&IPState=ca&IPCity=San Diego
A DNS entry of localhost.<domain> (e.g. localhost.iptv.net) on the client device can be mapped to localhost (127.0.0.1) to ensure that cookie values are also passed to the local web services. Similar techniques can be used to provide other local home network servers access to the cookies (homepc.iptv.net).
Cookie values can be modified by the user and cookies can also be modified by any of the other web services that operate in the same domain. Therefore, web services should not rely on cookies for tasks that require authenticity.
Client devices will differ in capabilities based on installed hardware and software. Presenting services to users that can not be accessed with the device can be frustrating and should be prevented.
RSS-TV navigation servers assume that the client device makes use of the standard HTTP header 'User-Agent' to include device information that can be linked with device capabilities. The minimum information about the device included in the User-Agent HTTP header is:
Example:
Mozilla/4.0 (compatible; Sony; PS3;V3.289.2; 720x576)
An RSS-TV client device can signal storage capabilities by setting the HTTP private header 'Rsstv-Storage' to 'true' or 'false'. By default, the device is assumed to have storage capabilities.
An RSS-TV client device can signal bandwidth availability by setting the HTTP private header ‘Rsstv-Bandwidth’ to the maximum sustainable bandwidth available to the device in kbit/s. The RSS-TV service may use this information to automatically select the appropriate video stream if multiple bitrates are available.
How available bandwidth is measured is outside the scope of RSS-TV.
An RSS-TV service may enable a client to cache RSS-TV documents for performance reasons. The RSS-TV service shall use the HTTP header ‘Cache-Control’ using the directive ‘max-age’ to inform the client how long it may hold a copy of the document in its cache.
The following HTTP header enables a client to cache the corresponding document for 10 minutes:
Cache-Control: max-age=600
Instead of returning an RSS document with multiple items, a service may return a single item that needs to be immediately executed by the client device. This feature is used to redirect the client to another RSS-TV service or media. For example:
A single-item response contains a single XML item element. The following example provides a sample response:
<?xml version="1.0"?>
<item xmlns:tv="http://www.rss-tv.org/rss/tv1.0">
<link tv:type="action">menu:0</link>
</item>
In this response, the client returns to the top-level root or 'home' menu. The response may also contain a link of another type (rss or action) or enclosures (audio, video, or flash), and the item may include any regular item XML elements such as title and <tv:meta>.
The single item response may also include an enclosure with metadata as shown by the following example:
<?xml version="1.0"?>
<item xmlns:tv="http://www.rss-tv.org/rss/tv1.0">
<title>The Matrix</title>
<description>A computer hacker learns from mysterious rebels about the true nature of his reality and his role in the war against the black force</description>
<tv:meta type="rating" display="Rating">PG-13</tv:meta>
<tv:meta type="genre" display="Genre">Action</tv:meta>
<enclosure url="rtsp://www.cdn.com/v/?id=23"/ >
</item>
A single-item response should not be added to the menu history of the client device. Pressing 'back' on a menu that resulted from a single-item response shall return the client device to the most recently processed RSS menu or user input request. Read section 'Menu Structure' for more information about maintaining menu history information.
The RSS-TV protocol allows a service provider to capture user input such as a PIN code, an email address, or a search string to find a movie. This is achieved using the 'input' XML document.
The RSS protocol only allows a single input field per RSS document. This ensures a user-friendly, wizard-like experience. Capturing multiple fields such as email and password must be implemented using two separate RSS-TV documents (thus using two consecutive screens). This is an intended limitation.
The RSS-TV input response includes elements that enable features such as strict input text types (password, email, text, pin, or telephone), automated suggestions, and input language selection.
The following example shows a sample response to capture a search string:
<?xml version="1.0"?>
<input xmlns:tv="http://www.rss-tv.org/rss/tv1.0">
<name>search</name>
<action>http://www.iptv.net/search.jsp</action>
<type>alphanumeric</type>
<maxlength>10</maxlength>
<suggest>http://www.iptv.net/suggest.jsp</suggest>
<title>Search</title>
<description>Type the name of the movie or actor</description>
<style>premium</style>
<image>
<url>images/boxart.jpg</url>
<height>180</height>
</image>
</input>
When the user confirms the input, the client device shall POST the value of the input field to the action URI using regular FORM POST syntax (the value must be URL encoded). The following example assumes the name of the input field is 'search' and the user entered 'james' to complete the search query:
search=james
The following sections specify the input XML elements:
|
XML element |
<action> |
|
Type |
URI |
|
Occurrence |
Required |
|
Attributes |
None |
The element 'action' contains the URI where the final result shall be posted.
|
XML element |
<description> |
|
Type |
String with basic markup |
|
Occurrence |
Optional |
|
Attributes |
None |
The element 'description' contains a long string to describe the input field. This information helps the user understand what input is required. Example values are 'Enter the first characters of a movie name or the name of an actor to find a movie'. The description may contain basic markup as specified in the section RSS-TV <description> Extensions.
|
XML element |
<image> |
|
Type |
See RSS <image> XML schema |
|
Occurrence |
Optional |
|
Attributes |
None |
The input can be associated with an image to remind the user why the input is required. For example a thumbnail of a movie to confirm a purchase, or an image of a lock for entry of a PIN code.
|
XML element |
<language> |
|
Type |
ISO 639, two-character language string |
|
Occurrence |
Optional |
|
Attributes |
None |
The 'language' element is used to determine the appropriate character set for entering user input.
|
XML element |
<maxlength> |
|
Type |
Number |
|
Occurrence |
Optional |
|
Attributes |
None |
The 'maxlength' element contains the maximum length of the field. The default value is device dependent.
|
XML element |
<menuhistory> |
|
Type |
Boolean |
|
Occurrence |
Optional (default = true) |
|
Attributes |
None |
The 'menuhistory' element can be set to 'false' to prevent the client device from adding the input item in the menu history. See also Menu History.
|
XML element |
<name> |
|
Type |
String |
|
Occurrence |
Required |
|
Attributes |
None |
The element 'name' contains the form field name of the value that shall be posted to the action URI.
The service can request the navigation client application to change the style (background, colors, etc.) of the input menu page.
Read the RSS-TV Channel Extensions section for more information about styles.
|
XML element |
<suggest> |
|
Type |
URI |
|
Occurrence |
Optional |
|
Attributes |
None |
The 'suggest' element is used to retrieve suggestions based upon currently entered characters.
The 'suggest' URI can be used by the client device to display a list of suggestions based on the input characters entered so far. See also 'Google Suggest' (http://www.google.com/webhp?hl=en&complete=1) for an example implementation of such functionality. The client device shall POST the contents of the input element to the 'suggest' URI when a new character is entered by the user, using the same HTTP POST syntax as submitting the final result to the 'action' URI. The server responds with an RSS-TV compliant XML document with the suggested items included in the response. The user can select one of the suggestions to activate the associated RSS-TV item.
Client device implementation of the suggest URI is optional and is not required for RSS-TV compliance.
|
XML element |
<title> |
|
Type |
String |
|
Occurrence |
Required |
|
Attributes |
None |
The element 'title' contains a short string to describe the input field. Example values are 'Find a Movie' or 'Enter your PIN'.
|
XML element |
<type> |
|
Type |
String |
|
Occurrence |
Optional |
|
Attributes |
None |
The element 'type' is used to indicate what type of input field is expected. This can be used by the client device to simplify the user interface. For example, entering a field of type 'email' could make the characters '.' and '@' more prominent and leave out the option of capitols, spaces and special characters that are not allowed as part of an email address.
Accepted values for <type> are:
|
text |
Case sensitive single line string |
|
password |
Secret text field |
|
numeric |
0-9 |
|
pin |
Secret numeric field |
|
|
Email address |
|
telephone |
Telephone number including numeric, '+', '*' and '#' symbols. |
|
url |
Uniform Resource Locator |
|
date |
Date conforming ISO 8601.date standard |
|
time |
Time confirming ISO 8601.time standard |
|
XML element |
<value> |
|
Type |
String |
|
Occurrence |
Optional |
|
Attributes |
None |
The 'value' element allows the service provide to pre-fill the value of the input field to minimize user input efforts. For example, a URL input request could set <value> to 'http://www.'.
This section lists the RSS-TV extensions of the RSS <channel> element that shall be supported by a RSS-TV-compliant client device.
This section describes the following extensions in alphabetical order:
|
<tv:autostart> |
Activate (start) the media item when selected. |
|
<tv:help> |
RSS-TV compliant service URI to context sensitive help |
|
<tv:preview> |
Preview video or background audio for this channel |
|
<tv:style> |
Change the style (background, colors, etc) of the navigation client application |
|
<tv:subtitle> |
Text located below the channel title. |
|
<tv:tracker> |
Contains URI to enable third party site analytics |
|
<tv:widget> |
Suggested user interface (UI) widget for displaying items |
|
<tv:zap> |
Allow user to zap through menu items |
|
XML element |
<tv:autostart> |
|
Type |
Boolean |
|
Occurrence |
Optional |
|
Attributes |
None |
The service may request the client to immediately start the selected media item. The user only needs to enter the corresponding number (see <tv:number>), or the service may have pre-selected a media item (see <tv:selected>). The user does not require to activate (press the RCU ‘OK’ button) the selected menu item.
The default value is ‘false’.
<?xml version="1.0"?>
<rss version="2.0" xmlns:tv=" http://www.rss-tv.org/rss/tv1.0">
<channel>
<title>Live TV</title