Page tree
Skip to end of metadata
Go to start of metadata


Vewd Snap is an industry-first, end-to-end solution that allows content publishers to create and submit a Smart TV app to the Vewd App Store quickly and easily for free. See the Vewd Snap page for more product details.

Vewd Snap helps you create applications based on video streams fetched from the following options:  

1. Supported video platforms such as Zype, JW Player, Brightcove, Ooyala, Kaltura etc. If you have an account at one of these platforms then we recommend using this option. For more information on how to generate a feed for each supported OVP check these articles

2. Live streams provided directly to the TV Snap. You need to have urls to live streams.

3. MRSS feeds. You need to have urls to your MRSS feeds.

All the options above let you:

  • Present your content on big screens,
  • Brand your app (custom logo, background),
  • Enable monetization (AVOD model),
  • See your traffic via Google Analytics

This article explains the Snap app structure in detail. In addition, it describes how to tailor your MRSS feed to fit your needs. Therefore, it focuses on the 3rd option (MRSS feed), which may require a bit of effort to create or update your MRSS feeds, however, it gives you the most control of what the resulting app will look like.

The first option (using a supported video platform) is fairly straightforward to use - the content is fetched from your account through the mentioned video platforms and presented in the same Snap app structure. The second option allows you to immediately playback your live stream as soon as the app is launched. These options are not covered in this article.

In order to start creating the app with any of these options, use the Submission panel. Please see a video tutorial presenting how to submit your MRSS feeds as soon you have them available:

Let's look more into preparing your MRSS feed and how it is presented in the Snap application now.

Vewd Snap app content structure

Vewd Snap’s content structure is based around four elements: Sections, Categories, Collections and Items. The image below shows the placement of these elements in the application UI.

A Section is displayed on the left side menu of the application. Some sections can be customized (custom sections) while others are part of the application and cannot be changed (automatically generated sections).

Each custom section is associated with an MRSS feed. Custom sections are defined during the application submission in the ‘TV Snap’ tab (field ‘I have many feeds I want to include in this app’ must be selected). There can be a maximum of five custom sections, including a special "livestream" section that can contain one or more live feeds. The name of each section as well as its icon is provided in the submission portal.

Depending on the number of MRSS feeds submitted, the left side menu of the application will look different. Single-feed apps contain only the Home section and do not use custom sections. Multi-feed apps use both Home and custom sections.

The automatically generated sections are Settings and Search as well as the Home section mentioned above. These sections cannot be changed.

A Category is a single row of videos and/or collections in the application. In the MRSS feed, it is represented by the <media:category> tag associated with videos. Please note the following In order to optimize user experience, we only show a Category (row) if it contains at least 3 videos. If less than 3 videos are associated with a single category, then the Category (row) will not appear in the final app, and the corresponding videos will only be visible in other categories that meet the criteria (if any) or in the general autogenerated categories like "Latest Videos" (see below). If there is only one category in the feed, its name is not displayed in the application UI.

Some categories are generated by the application and cannot be changed (automatically generated categories). Automatically generated categories are:

  • Latest Videos - a selection of latest videos based on the item’s publication date specified in the MRSS feed

  • Popular videos - most popular videos; the selection of videos in this category is based on Snap API’s recommendation engine. This category is disabled by default and can be enabled by the Vewd team for certain applications.

  • Today’s picks - a selection of  20 videos picked randomly every 24 hours; this category is displayed only in the Home section

It is also possible to generate categories based on the <media:keywords> tag as opposed to the <media:category> tag. See the description of the media:keywords tag further in this article if you would like to use it.

If the feed doesn’t contain categories and keywords were not used to generate categories Snap will then generate categories automatically by aggregating video clips based on their publication dates.

  • This functionality is enabled for single-MRSS apps (apps created from one MRSS feed) but disabled for multi-MRSS (apps created from more than one MRSS feed).

  • Publication date is based on the PubDate tag from the feed.

  • These categories initially aggregate videos on a monthly basis. If such category contains only few videos then videos from the next month are added to fill it up.

  • The first entry (e.g first month) is removed to avoid similarity with the Latest Videos category.

A Collection is a single element in the application’s category row. It may look like a single video, but it represents the collection of multiple videos and categories located inside. In the MRSS feed, it is represented by the <vmrss:categoryData> tag.

Collections can be nested. Nesting of collection is defined in the path attribute of <vmrss:categoryData> tag, with each level of nesting separated with a slash. For example, ‘Winter/Events’ path for ‘Events’ collection defines ‘Events’ collection as a child of ‘Winter’ collection. There are no limits to the nesting of collections. In theory, an infinite number of levels can be used, but it is best to limit your levels of nesting to two or three. More levels can make navigation too complicated for the users. Collections should not be used if the selection of the content is not big. For example, if, in total, there are only 20 video clips or less available in the feed it is better to have them available in the section without breaking down to collections.

An Item is a single video. It is represented by the <item> tag in the MRSS feed. Items can belong to collections, categories and sections. Single items can belong to multiple categories and collections (for details see the MRSS Item structure below).

Video thumbnail for the video can be in either landscape or portrait orientation. To use portrait orientation MRSS needs to include a thumbnail size; otherwise, landscape orientation will be assumed and the thumbnail will be trimmed. See the next chapter for details.

When preparing content, UI and navigation issues should be considered. For example, using numerous items or collections in one structural element (collection or category) will make the application difficult to navigate. It is recommended not to use more than 10 elements (items, collections, categories) in a single higher-level element (collection, category or section). This means that it’s better to create more categories than place many collections into a single category. Also, in the case of many categories, it’s better to divide them into separate sections.

The application can use multiple languages and the structure described above can be localized by language. In the submission portal, submitter can define the language for the application. If there is more than one language, the whole content structure should be prepared and submitted as per each language. This means submitting a new MRSS feed (or multiple feeds when the application uses multiple custom sections) for each language.

Snap MRSS feed

TV Snap 3.0 Template uses Snap Media RSS Specification (SMRSS).

  • The feed must point to the MRSS compliant data.

  • MRSS may contain more tags than TV Snap Template supports, but they will be ignored.

  • We are still trying to provide backward compatibility with RSS, but the SMRSS format is recommended and contains many improvements. Feed without media namespace will be parsed, but support for this format might be removed in the future.

Before starting to prepare your MRSS feed for the Vewd Snap, it might be good for you to familiarize yourself with the following specifications and resources:

The Basics

Example MRSS feed that can be used as a template can be found here: Sample Snap MRSS feed.

Required tags are:

  • <rss> as a top level tag.

  • One <channel> as a child of <rss>.

  • <channel> must contain <title> and at least one <item>.

  • Each <item> must be a child of <channel>.

Optional tags:

  • <vmrss:metadata> as a child of <channel>. This custom extension to the MRSS spec allows a more flexible definition of content structure. See below for more details.

Feed structure:

<rss xmlns:media="" xmlns:vmrss="" version="2.0">
        <title>Channel Title</title>
        <description>Description of channel content</description>
            <!-- categoryData items - see next section -->
        <item><!-- See example in next section --></item>
        <item><!-- … --></item>
        <!-- More items -->

Display special characters or markup

Whenever characters such as <, >, &, ", ' or a markup needs to be displayed the CDATA section or &lt; &gt; &amp; &quot; &apos; should be used. CDATA will disable markup recognition. Please refer to and for more information. Example:


<rss xmlns:media="" xmlns:vmrss="" version="2.0">
        <title>News &amp; Weather</title>
        <description><![CDATA[ Local "News & Weather" channel. ]]></description>
        <item><!-- Example item here --></item>
        <!-- More items -->

The Metadata tag extension

<vmrss:metadata> is a custom extension to MRSS that has been defined to overcome limitations of the original MRSS spec. Inside <vmrss:metadata>, you can use <vmrss:categoryData> to define categories and collections (i.e. categories nested inside other categories).

Required attributes of categoryData:

  • the path argument defines category nesting. For each nested category you should define exactly one categoryData with the correct path. In nested category strings slash must be used as the separator.

  • label is the name of the category as it will be presented to the user

Optional attributes of categoryData:

  • description is a description of the category.

  • order argument is optional. If it’s not passed then the order will be based on the MRSS feed order.

  • thumbnail, thumbwidth and thumbheight are used to provide a custom thumbnail for the category. 

    • If thumbwidth and thumbheight are not provided landscape orientation will be assumed and the thumbnail will be trimmed.

    • Please note that the first image in a row determines the orientation of the video thumbnails in the whole row. The same image orientation (portrait or landscape) should be used throughout the whole application. Mixing various image orientations will cause problems with cropping images in automatically generated categories.

Important: If you use <vmrss:metadata> to define categories, then in <media:category> you should use the string you used for the path attribute (in <vmrss:metadata>), as the user visible category name will be taken from the value of the label attribute of <vmrss:categoryData>.


    <!-- 1st category level. -->
    <vmrss:categoryData order="1" path="videos" label="Clips" description="Section with cool clips."/>
    <!-- 2nd category level. -->
    <vmrss:categoryData order="1" path="videos/fail" label="Fail Compilations" description="Fail compilations" thumbnail="" thumbwidth="256" thumbheight="144" />
    <vmrss:categoryData order="2" path="videos/cats" label="Cute Cats" description="All the cute cats in one place" thumbnail="" thumbwidth="256" thumbheight="144" />
    <!-- 3rd category level. -->
    <vmrss:categoryData order="1" path="videos/cats/black" label="Black Cats" description="Only black cats" />
    <vmrss:categoryData order="2" path="videos/cats/white" label="White Cats" description="Only white cats" thumbnail="" thumbwidth="256" thumbheight="144" />

The Item tag

The following children of the <item> tag are required:

  • <media:title>
  • <media:content> with correct url & type.

    • You might also use <media:group> to group multiple media elements (like video in different formats)

    • Content might also contain duration and bitrate attributes.

    • Duration should be set by number of seconds.

    • For widest device support and best user experience, we recommend making sure that your minimum bitrate doesn't exceed 4000 kbit/s. Higher bitrate can be supported using adaptive bitrate streaming formats (e.g. HLS)

    • the value of the url attribute must be unique across the whole MRSS feed. In other words you should make sure there is only one <media:content> element for each unique URL. Failing to do so might lead to unexpected results

  • <media:thumbnail> with correct url pointing to an image.
    • Snap supports both landscape and portrait video thumbnail orientation. Please note that the first image in a row determines the orientation of the video thumbnails in the whole row. The same image orientation (portrait or landscape) should be used throughout the whole application. Mixing various image orientations will cause problems with cropping images in automatically generated categories.

    • Snap will detect portrait orientation of thumbnail based on its width and height attributes provided in the MRSS feed. Those are optional parameters. If missing, Snap will assume landscape orientation.

    • If the portrait thumbnail will be used without width and height information then Snap will assume landscape orientation and will crop the thumbnail accordingly.

    • 256 × 144 px format is recommended for landscape and 166 x 256 px for portrait thumbnails. If other sizes are used then Snap will crop and resize it to the desired size.

    • If there is more than one thumbnail then the best one will be selected based on width attribute (if present).

  • at least one <media:category> must be present, but more are allowed if an item (video) belong to more then one category. The value of the <media:category> can be either free text or a "path" that matches the one provided via the path attribute of the <vmrss:metadata> tag. In case the item belongs to a nested category (e.g. to "black" under "video/cats/black") make sure to provide the full path.

The following children of the <item> tag are optional:

  • <pubDate> publication date of the video. It is used in different ways:

    • it is visible to the end user in the description of the video

    • it is used in the auto-generated Latest Videos category where videos are sorted by publication date

    • it is used when auto-generating categories based on publication date (for apps built on one MRSS feed without category information)

  • <media:description> if it exists it will be displayed as the description for the video.

  • <media:keywords> for content keywords. Keywords are indexed by an application and used for search purposes. Keywords can be also used instead of categories if this option was chosen during submission (field ‘Use keywords to define categories’ must be selected).

  • <media:subTitle> for specifying the subtitles as follows:

    • Must contain href or url attribute that points to the subtitle file in the WebVTT format. Other formats are not guaranteed to be supported on all devices.

    • Must contain lang attribute to define subtitle language based on the RFC 3066

    • More than one such tag per media element can be used e.g. once per language.

  • <vmrss:orderInCategory> is used to set the order of the item in the category. If an item is in many categories then it can have the order set to each category separately. It requires two attributes:

    • path with the same value as defined in the category

    • value as a number (ascending)

Item structure:

    <pubDate>Mon, 21 Mar 2016 11:00:01 GMT</pubDate>
        Sam Smoothy Follows His Fathers
        Footsteps In The Andes | Lost…
        Many years ago, Sam Smoothy’s father
        climbed in the Andes mountains…
    <vmrss:orderInCategory path="Winter/Events" value="12"/>
    <media:content url="video.mp4" type="video/mp4" bitrate="2200" duration="772"/>
    <media:thumbnail url="thumb.jpg" width="256" height="144"/>

Feeds availability

Since our server are distributed, in general we require feeds to be accessible. It is important that your MRSS feeds are available worldwide without any restrictions to e.g. location, IP addresses, User Agents or other. If any restriction is set then TV Snap servers may not be able to access and present your content.

In case it is a must have to limit access to your feeds by white-listing IP addresses then please use the below list. Please note that we recommend to not apply any restriction if not really needed though.

The following IP addresses must be allowed to access MRSS feeds:

Feed re-indexing rate

Feeds are indexed by our system on submission. After that, we periodically check changes in the feed and update our index. The refresh rate is around 6 hours for now. This means that any change to your content availability (adding or removing videos or change of metadata) might take up to 6 hours to show up in the actual application.

In the case where feeds include URL that may expire (e.g. URL includes a token that needs to be refreshed periodically), then such URLs should remain valid within those 6 hours periods plus in addition few more hours longer to let this change be propagated on devices where the application is launched.

Best practices

The MRSS feeds structure (e.g. categories, collections, items structure, and nesting) and content can be changed after submission. We recommend updating the video content in feeds periodically and often (especially adding new content) as an incentive for end users to run the app regularly. Although, the content structure should not change that often. (e.g. categories, collections, items structure, and nesting).

If there is no new content for a certain period then the Today’s Pick category comes in handy, (it will automatically rotate the existing content) however, it will not replace fresh content.

It is best to test the changes before publishing. In order to test submitted content, use the Preview  function in the Submission portal.

Graphical assets

Some graphical assets used by an application are provided through Submission portal, whereas other ones are provided in the MRSS feed. The image below shows the graphic assets tab in the Submission portal.

Wherever graphic assets are provided in the MRSS feed, an absolute url to your image file must be used as a tag value or attribute. The image below shows the placement of selected graphic assets in the application UI.

The Logo of your application is presented in the top-left corner of the app. The Logo is provided through the submission portal and is not a part of the MRSS feed.


The background of an application is defined in the submission panel and it is not included in the MRSS feed. 

The background should be a horizontal JPG image with size matching 1280x720px. It should not contain text or logos because they will overlap with application content. We recommend using dark background images, which usually provide better contrast for images and video content. Submission panel provides an option (a checkbox) to darken the background by 50% as well.

Items and collections thumbnails

For items and collections image guidelines see the item example section above.


Below are some examples of the application UI.

Single-MRRS feed application

Main page view (Home section)

The example above uses a single MRSS feed. The content is divided into several categories. The categories TV Shows and Serials, Featured and Bela Lugosi are visible on the screenshot and the  collection The Return of Chandu is highlighted. The category TV Shows and Serials contains collections, whereas other categories contain single items.

Multi-MRRS feed application

Main page view (Home section)

The example above uses few MRSS feeds - one for each Lifestyle, Music, Movies and Kids sections. Type of apps is a category defined in one of the MRSS feed. Latest Videos and Today's picks categories are generated automatically by the Vewd Snap.  

Example of TV Snap player.

Collection view

The example above shows Vewd Snap collection with videos. The first video in the collection is being played.

Multi-MRRS feed application with a large amount of content

Below is the example of multi-MRSS application with a complex content structure. The application is also an example of good content structure practices.

Main page view (Programmes section)

The example above uses two MRSS feeds (one for each News and Programmes custom section) and a Live Stream section. The section Programmes is opened. Content is divided into several categories. The categories Magazine and Discussion are visible in the screenshot and the collection Counting the Cost is highlighted. Each category contains collections.

The category Magazine contains only five collections, and, therefore, it’s easy to navigate.

The collection Counting the Cost is opened. It contains ten videos which also makes it easy to navigate.