Configuring and Customizing Apps
Baselines
SmartLabs offers service operators a variety of applications for end-user devices that are compatible with the SmartTUBE solution — including set-top boxes, Smart TVs, mobile iOS/Android devices, and web browsers. The user interface (UI) and user experience (UX) of the SmartTUBE applications can be tailored to specific requirements using a set of configuration files outlined in this section.
Customization of applications is divided into two stages:
- Basic — carried out during the system’s commissioning phase by SmartLabs experts to align with the corporate identity of a service operator;
- Operational — conducted by the service provider while the system is in operation.
Basic customization enables the operator to make adjustments to the user interface within the existing structure, such as the layout of main components and animation logic. It encompasses the following capabilities:
- Interface localization — provides for localization of the user interface of SmartTUBE apps into the operator’s language by the operator. English is supported by default. Localization into languages using fonts containing hieroglyphs, Arabic script and other specific alphabets is discussed separately.
- Operator logo — can be integrated into various parts of the user interface, such as the upper left corner, placeholders, splash screen, and more.
- Color customization for element selector
- Animation customization for waiting states
For a comprehensive list of customizable elements, please see here.
Operational customization enables the operator to modify the visual representation of the UI elements (e.g. Home screen, Movies/Series catalogs, Profile menu, etc.) as well as UX parameters. This can be achieved by uploading the correspondent configuration files to devices using the SmartTUBE Device Manager. The variations in operational customization options for different platforms are outlined in the sub-sections.
Format of Configuration Files
Configuration files for the SmartTUBE applications are structured in JSON format. The composition of files and parameters for each SmartTUBE application varies based on the target device platform. You can find their description in the relevant subsections of Configuring &Customizing Apps section.
Priority of Applying Configuration Parameters
The sequence in which the configuration parameters are executed by the application is as outlined below:
- Default settings retrieved from the local file.
- Override settings retrieved from the local file.
- Override settings uploaded from the SmartTUBE Device Manager.
Thus, the settings specified in the configuration files uploaded from the SmartTUBE Device Manager hold the utmost precedence.
Local configuration files are installed with the app, stored locally on a device in the [app_container]srcconfigs directory and adhere the following format:
{ … “param_1”: “value_1”, … // End of default configuration settings “overrides”: { // Overriding settings for the configuration parameters above |
Utilizing the “overrides” section enables the safe testing of alternative parameter values while maintaining the default settings. For instance:
{ |
Settings uploaded to devices via SmartTUBE Device Manager must be included to the “overrides” section. Example:
{ |
Also, please note, that the following notation:
{ |
is equivalent to this one:
{ |
Differentiation of Parameter Values Depending on Device Specifics
To optimize configuration management, you can specify the dependence of parameter values on the device specifics. Thus, you can distribute one configuration file to all your end-user devices. For example, you can make the fast forwarding on Smart TVs faster than on other devices. To do this, please follow this example, which can be applied to any configuration parameter:
“seekMultiplier”: [ // Configuration parameter |
The “rule” parameter is the combination of the filters below, that define the target end-user device. You can use the following logic operators to combine filtering parameters: =, <, >, | (or), & (and).
platform, string
Platform of the end-user device. Acceptable values: tizen, webos, cobalt, web.
platformVersion, number
Version of the end-user device’s platform
deviceType, string
Name of the end-user device’s type. The list of acceptable values is determined by the dictionary SmartTUBE Admin Console > Dictionaries > Device types.
tenant, string
Name of the tenant. The list of acceptable values is determined by the dictionary SmartTUBE Admin Console > Administration > Tenants.
authorized, boolean
Flag of the authorization status of a device
Configuring Large-Screen Apps
Primary UI/UX Settings
The primary UI/UX configuration settings of the SmartTUBE Apps for large-screen and Android Mobile Devices are specified within the setup.json file. This pertains to the most recent generation of the SmartTUBE apps, known as SmartTUBE JUNG.
Changes to the setup.json file are applied only after the application is rebooted. |
Parameter Description
baseUrl, string
Base backend URL (absolute, ex. https://10.65.50.71)
apiUrl, string
Default value: /api/v1
Path (relative or absolute) for calling methods of the SmartTUBE End-User Device API
getSettingsPath, string
Default value: /managerapi/manager/getSettingsPath?output=json&board=${deviceType}&mac=${uuid}¤t_firmware_version=${appMajorMinorVersion}¤tVersion=${appMajorMinorVersion}
Path (relative or absolute) to get configuration parameters.
title, string
Tab title for the SmartTUBE App for Web Browsers
tenant, string
ID of a tenant. It is used in the multi-tenant system configurations to get customized attributes (fonts, logos, other configuration parameters) belonging to the specified tenant.
configsUrl, string
Path (relative or absolute) to the directory with configuration files. Overrides the default one (/configs/).
logoWidth, number
Default width of logo (in rem)
lang, string
Default language of the SmartTUBE app
langs, array[string_values]
Languages available in the SmartTUBE app
epg, {object}
Settings for EPG preloading
before, integer
Hours before the current moment to preload the EPG
after, integer
Hours after the current moment to preload the EPG
loadMode, string
Initial load mode: column — makes several requests limited by pregroup interval, standard — makes separate requests for each channel.
dvbTimeOffset, number
DVB time offset in seconds
loadEpgFromTVInput, boolean
Flag to load EPG from the DVB input, even for DVB channels mapped by the mapDvbToSdpChannels parameter.
player, {object}
Integrated media player settings
ignoreSkipAdvertTimeoutForPl, boolean
Deprecated starting from JUNG 9.2 and replaced by the disableSkipBanForCurrentProgram parameter.
Flag to prohibit skipping ads for Pause Live programs, even if the Skip Advert Timeout has not expired.
showAdvBlockedPanel, boolean
Deprecated starting from JUNG 9.2. Flag to display the ad rewind panel
nonSkipableAdvInterval, integer
Deprecated starting from JUNG 9.2. The amount of ads the subscriber cannot skip and rewind, in sec. The value -1 prohibits skipping all ads.
maxSaveAdvertismentTimeout, integer
Deprecated starting from JUNG 9.2. Seconds after exiting standby mode during which it is possible to rewind ads (when the “Do not allow rewind ads” option is enabled on the channel).
resetSkipAdvertTimeoutOnSwitch, boolean
Deprecated starting from JUNG 9.2. Flag to reset the Skip Advert Timeout (see Step 3 of the How-to article) every time the subscriber switches a channel (including nPVR):
- true — reset when switching a channel;
- false — reset after viewing an ad block.
disableSkipBanForCurrentProgram, boolean
Flag to prohibit skipping ads for the ongoing program, even if the SmartTUBE Admin Console > Dictionaries> Ad skip restriction policies > [selected policy] > Ad Skip Ban Grace Period has not expired. Applicable if only the Pause Live / TSTV feature is enabled for the channel. This parameter replaces the deprecated parameter ignoreSkipAdvertTimeoutForPl.
openChannelTSTVFromStart, boolean
Flag that controls the behavior of the player when processing playlists:
- true: the player starts playback from the beginning of the playlist
- false (by default): the player tends to play as close to the end of playlist as possible (in order to minimize the delay for live)
ads, {object}
Settings for interaction with SmartTUBE Advertisement Decision System (ADS)
playback, string
Ad playback method:
- single — the ad is played in the same video element as the content
- double — the ad is played in a separate video element
xml, string
Type of the XML parser to process the VMAP data: external or native
skipBufferingAfterZapping, boolean
Skip buffering after zapping
shakaVersion, string
Version of Shaka module to use
playerSelectionRule, [array{object}]
Rules of player selection depending on platform. See the example here.
alwaysShowTvChannelsButton, boolean
Flag to display the “TV channels” button, even if movie is playing.
startSeekSpeed, integer
The initial speed of content rewinding (multiplier). Then it is replaced by the speed of maxSeekSpeed.
maxSeekSpeed, integer
The max speed of content rewinding (multiplier).
seekMultiplier, double
The multiplier to increase the rewind speed by each keypress. For example, a value of 1.5 will increase the multiplier by 1.5 each time a key is pressed.
- 1
- 1×1.5 = 1.5
- 1.5×1.5 = 2.25
- 2.25×1.5 = 3.375
- until maxSeekSpeed is reached.
thumbnailWidth, integer
Width (in rem) of the thumbnail displayed above the progress bar during content seeking
thumbnailHeight, integer
Height (in rem) of the thumbnail displayed above the progress bar during content seeking
resetSeekIfThumbnailShownAfterSec, number
The period of the user inactivity, after which the thumbnail over the progress bar is hidden.
allowSeekAfterLive, integer
Period (in seconds) for which it is allowed to fast forward beyond the live moment.
checkProgramAccessLevelWhileSeeking, boolean
Flag to check programs for access level while seeking to avoid displaying thumbnails of restricted content.
limitPrevNonRecordable, integer
The protective period (in seconds) before the non-recordable program, during which recording is also prohibited.
limitNextNonRecordable, integer
The protective period (in seconds) after the non-recordable program, during which recording is also prohibited.
keepAlivePlayEvent, integer
Frequency (in seconds) of sending the keepalive event during content playback.
movieMinTime, integer
The time (in seconds) from which the playback of VoD content should start. For debugging purposes.
minSecToReloadAfterPause, integer
If playback is paused and the period between the pause time and the live time exceeds the specified one (in sec), the application reloads the playlist.
defaultAspectRatio, string
Default aspect ratio. Acceptable values: letterbox, fullscreen, panAndScan. Not applicable to LG WebOS Smart TVs, as they use native aspect ratio settings.
secMediaPositionIgnore, integer
The minimum time (in sec) to watch a movie or nPVR recording to save the media position.
haltPlayerOnError, boolean
Flag to go back in history in case of a player error
openLastViewedChannelOnStartup, boolean
Flag to open the last viewed channel when the application starts.
adaptiveChannelsBitrateIntervals, {object}
Marking the video quality for channels depending on the bitrate of stream variants. See the Example Configuration for the detailed example.
adaptiveVoDBitrateIntervals, {object}
Marking the video quality for CoD content depending on the bitrate of stream variants. See the Example Configuration for the detailed example.
enableQualityLabelOverride, boolean
Flag to enable the overwriting stream labels of different quality described in the adaptiveChannelsBitrateIntervals and adaptiveVoDBitrateIntervals sections. For example, you can rewrite the stream quality label Excellent as 2160p. See the Example Configuration for the detailed example.
qualityAliases, {object}
Rules of overwriting stream labels of different quality described in the adaptiveChannelsBitrateIntervals and adaptiveVoDBitrateIntervals sections. See the Example Configuration for the detailed example.
[bitrate_alias_name], string
Overwritten name of the stream quality label. For example, “Excellent”: “2160p”
qualityListAbbr, {object}
Rules of adding the auxiliary visual label for the stream quality labels.
[quality_alias_name], string
Text of the auxiliary visual label. For example, the “2160p”: “4K” pair can be displayed in the player like 2160p4K.
defaultPlayer, string
The player that should be pre-initialized at the start of the application.
playbackOptimizations, {object}
Content playback optimization settings
profile, string
The value of the “profile” argument added to the playlist request to the streaming server (e.g. SmartMEDIA)
shaka, {object}
Playback optimization settings for the Shaka player
ac3ignorer, boolean
Flag to ignore ac3 tracks
notCleanDRM, boolean
Flag not to clean the DRM keys. It is required for WebOS devices with a platform version less than 5.
stopLiveBeforeOpen, boolean
Flag to stop the previous stream for ux.tvChannelOpenTimeout ms before switching on a new channel when channel zapping.
shakadrmWithoutCredentials, boolean
Flag to disable the withCredentials headers in the playlist/chunk requests in the Shaka player
shakadrmWithoutCredentials, boolean
Flag to disable any custom headers in the playlist/chunk requests in the Shaka player
cobalt, {object}
Playback optimization settings for the Cobalt player
args.dashAccumulateDynamicManifest, boolean
Flag to accumulate dynamic manifest (i.e. segments that are not presented in the manifest anymore for args.dashAccumulateDynamicManifestDurationMs but not more than time shift buffer size value)
args.dashAccumulateDynamicManifestDurationMs, integer
See the args.dashAccumulateDynamicManifest parameter
args.dashAccumulateDynamicManifestThresholdUs, integer
Threshold for overlaps between segments to be considered as a sequence (if actual overlap is more than this value then new coming segments is considered as a duplicate) during accumulation.
setChannelPositionOnlyPaused, boolean
Flag to save the channel media positions only on pause
enabledDVBChannels, boolean
Flag to enable DVB channels
startNumberForDVBChannels, number
Start of DVB channel numbering
subtitlesBackgroundStyle, {object}
Background subtitles style
color, string
Color hex 000000
opacity, number
Opacity from 0 to 100
subtitlesMarginBottom, number
Subtitles margin bottom, in rem.
logLevel, integer
Logging level of the media player (Shaka Player):
- 0 — OFF: logging is switched off;
- 1 — ERROR: there are problems that need to be solved. The error does not stop the app operation as a whole, other requests can work correctly;
- 2 — WARNING: there are warnings that need to be taken into account. An unexpected action occurred, despite this, the system executed the request;
- 3 — INFO: important expected actions;
- 4 — DEBUG: actions needed for the app debugging;
- 5 — V1: Verbose 1 level (can generate a lot of output);
- 6 — V2: Verbose 2 level (extremely noisy).
openTVChannelsInPlayerByOkButton, boolean
Flag to open channel list with the “Ok” button on remote control when the player interface is hidden. If false, the “Ok” button will pause the playback.
renderInterfaceAfter, array[{object}]
Interface opening delay depending on the in-app event. It is necessary to launch the player faster.
event, string
In-app event:
- open — the app launch
- play — the player launch
timeout, integer
Interface opening delay, in seconds.
showAfterRender, boolean
Flag to show the interface after an event occurrence of after timeout
progressbarMarginX, {object}
Margins of the progress bar relative to the content playback time on the left and right, in rem.
default, {object}
Margins for the channels and CoD
left, integer
right, integer
movie, {object}
Margins for movies
left, integer
right, integer
trailer, {object}
Margins for trailers
left, integer
right, integer
vodStartTimeString, {object}
Settings for displaying the start time of VoD content (to the left of progress bar)
type, string
Type of the time indication:
- timeFromStart — time elapsed since the movie beginning;
- timeToEnd — time remaining until the movie end;
- endTime — total movie duration;
- none — do not display the start time.
format, string
Default value: [hh:mm]or[mm:ss]
Time format:
- hh:mm:ss
- [hh:mm]or[mm:ss]
- [hh:mm:ss]or[mm:ss]
vodEndTimeString, {object}
Settings for displaying the end time of VoD content (to the right of progress bar)
type, string
Type of the time indication:
- timeFromStart — time elapsed since the movie beginning;
- timeToEnd — time remaining until the movie end;
- endTime — total movie duration;
- none — do not display the start time.
format, string
Default value: [hh:mm]or[mm:ss]
Time format:
- hh:mm:ss
- [hh:mm]or[mm:ss]
- [hh:mm:ss]or[mm:ss]
messages, {object}
Settings for the system messages
autohideSetRead, boolean
Flag to mark incoming messages as viewed after auto-hiding
usePopupMessageFlag, boolean
Flag to show messages with the field “popupMesssage”: true as a popup.
appVersion, string
SmartTUBE app version
channelContentProvider, string
ID of the TV channels’ provider on the SmartTUBE side. Must match one of the values of the contentProviders.key parameter. By default, “INTERNAL”.
contentProviders, array[{object}]
Settings for the VoD content providers
key, string
Content provider ID on the SmartTUBE side
provider, string
Content provider type:
- smartlabs
- megogo
- go3
config, {object}
Settings for interaction with external content providers. The smartlabs type does not require any settings in this section. The settings for megogo type are provided below:
partnerId, string
Partner ID for interacting with MEGOGO services
salt, string
A key used to generate the authorization request to the billing
publicKey, string
Public key for interacting with MEGOGO services
privateKey, string
Private key for interacting with MEGOGO services
server, string
Default value: “https://api.megogo.net/v1”
URL of the MEGOGO API endpoint
sendSmartlabsHeaders, boolean
Default value for “provider”: “megogo”: true
Default value for “provider”: “go3”: false
Flag to send the x_smartlabs_mac_address and x-smartlabs-request-id headers in requests for the content. To avoid problems with the blocking access to content from external providers (CORS blocking), set the value to false.
ux, {object}
UX settings of the SmartTUBE Apps
silentAutoplayOnBannersAndChannelRail, string
Default value: UserDefinedDefaultFalse
This feature controls the audio behavior of trailer previews on the main banner and current TV show previews on the channel rail.
- UserDefinedDefaultTrue: Users can manage this setting through the Settings > System > Mute preview menu, previews are muted by default.
- UserDefinedDefaultFalse: Users can manage this setting through the Settings > System > Mute preview menu, previews are unmuted by default.
- true: Previews are muted, and users cannot change this setting via the app’s menu.
- false: Previews are unmuted, and users cannot change this setting via the app’s menu.
mainMenuType, string
Default value: “horizontal”
Type of the Main menu on the Home screen:
- horizontal: Horizontal text menu
- vertical: Vertical sidebar
useUpDownArrowsAsChUpDown, string
Feature that allows the user to switch channels using the D-pad on the remote. This is especially useful for Android STB remotes without dedicated “Channel +/-” buttons. Acceptable values:
- “UserDefinedDefaultTrue”: User can change the feature behavior in the settings menu. Sets the On value in the menu as default.
- “UserDefinedDefaultFalse”: User can change the feature behavior in the settings menu. Sets the Off value in the menu as default.
- true (without quotation marks): Feature is enabled, user can’t change the feature behavior in the settings menu, settings menu doesn’t contain this option.
- false (without quotation marks): Feature is deactivated, user can’t change the feature behavior in the settings menu, settings menu doesn’t contain this option.
androidTvBanners, boolean
Flag to show apps in the Application rail as banners on the large-screen Android devices
showBannersTrailer, boolean
Flag to show trailers when hovering the selector over the top banner on the home screen
hideBannersTitle, boolean
Default value: true
Flag to hide the movie title overlaid on the banner on the Home screen
subscribeOnlyFromService, boolean
Flag to display a dialog box with two options — “Go to Services menu” and “Cancel” — when a user tries to watch a channel that is not subscribed to.
redesignedTv, boolean
Flag to enable the new TV screen
npvrMetadataUrl, string (channel)
Source of metadata for npvr channel or npvr record
movieSubfilterResetButtonAtBottom, boolean
Flag to place the Reset Filter button at the bottom
vodFilterBackgroundColor, string
Background color for the VoD filters
tvProgramFilter, boolean
Flag to display the filter of TV programs by topic
filtersDimensions, {object}
Settings for the filter panel width depending on the current UI language
tv, {object}
Settings for the TV section
filter, {object}
Settings for the main filter panel
{language_id}, integer
Width of the panel for the {language_id} language (defined in the langs parameter), in rem.
default, integer
Width of the panel for other languages, in rem.
subFilter, {object}
Settings for the subfilter panel
{language_id}, integer
Width of the panel for the {language_id} language (defined in the langs parameter), in rem.
default, integer
Width of the panel for other languages, in rem.
movies, {object}
Settings for the Movies/Series sections
filter, {object}
Settings for the main filter panel
{language_id}, integer
Width of the panel for the {language_id} language (defined in the langs parameter), in rem.
default, integer
Width of the panel for other languages, in rem.
subFilter, {object}
Settings for the subfilter panel
{language_id}, integer
Width of the panel for the {language_id} language (defined in the langs parameter), in rem.
default, integer
Width of the panel for other languages, in rem.
speedTest, {object}
Settings for the integrated network speed test
url, string
URL of the test file to download
engine, string
Method for performing HTTP requests:
- fetch — method for the Cobalt browser;
- xhr — method for WebOS 3.
duration, integer
Download cutoff by time, in seconds.
sizeInBytes, integer
Cutoff by the number of bytes downloaded. Required for the Cobalt browser.
useFakePostfix, boolean
Flag to add the request date to the URL to avoid caching on the nearest cache server
channelDigits, integer
The number of digits in the channel numbers
isRecordStartedProgram, boolean
Flag to allow user to record already airing programs
isRecordStartedProgram, boolean
Flag to allow user to record already airing programs
startChannelNumFromZero, boolean
Flag to start channel numbering from 0
keyboardFullscreen, array[{object}]
Layout for the full screen keyboard. Examples: en, ru, lv.
keyboardSearch, array[{object}]
Keyboard layout for the search screen. Examples: search-en, search-ru, search-lv.
playerBackground, boolean
Flag to enable background playback of content on the home screen
replaceLogoOnMovieByProvider, array[string]
List of content providers that determines the replacement of the in-app logo on the movie details page with the content provider’s logo, which is located in the images/icons/logo_${provider.externalId.toLowerCase()}.png directory.
uiDebounceTime, integer
Debounce time (in ms) for fast scrolling of programs in the TV and EPG sections.
preloadProgressWeight, integer
Weight for progress bar preload, depends on channels count.
noTransitionAfterRetrieveTimeout, number
The period for which the animation is disabled after opening some UI page, in msec. You can apply it for a specific page only using a rule with the route argument. For example, { “value”: 5000, “rule”: “route = /tv” }.
showTvLegend, boolean
Flag to show the tip “Change day [CH+] / [CH-] Watch [Ok]” in the TV section
npvrQuotaStatus, boolean
Flag to show the nPVR quota status in the “My Profile” > “Recordings” section
requirePinOnStart, boolean
Flag to enable PIN code request on app start.
requirePinOnAwake, boolean
Flag to enable PIN code request after waking up from standby mode.
selectChannelOnEpgGridViaRemote, boolean
Flag to move the focus to the channel and the currently aired program in the EPG section when manually entering the channel number (on the RC or PC keyboard)
vodCategoriesVersion, string
VoD categories config version
mosaicBackgroundUrl, string
URL of the background for the channel mosaic view
canRemoveNpvrItem, boolean
Flag to allow the subscriber to delete his nPVR recordings
shouldFilterTracks, boolean
Flag to not display unsupported tracks (by codec) in the player
preferredNativeLangPronounce, boolean
Flag to display the names of audio tracks in the player in the national language (from the /configs/iso-639-1-2.json file)
showXXXMoviesInPurchaseList, boolean
Flag to show movies with the maximum access level in the list of purchased movies
openPlayerOnLastWatched, boolean
Flag to open the player when clicking on the content poster in the “Continue Watching” rail on the home screen
watchedContentDuration, integer
The movie viewing duration (in ms), after which it is considered viewed.
seekingDelayInitial, integer
Delay (in ms) in the payer’s response to the rewind button
seekingDelayLongPress, integer
Delay (in ms) in the player’s response to a long press of the rewind button
ratings, array[string]
Flags to display ratings (IMDB, etc.) on content posters
checkUnsupportedBrowser, boolean
Flag to prohibit the SmartTUBE app launch, if the built-in web browser is not supported by the app. The corresponding info message is displayed to the user.
showIconChannelLock, boolean
Flag to show the unavailability icon (strikethrough, lock, or similar) on the channel inaccessible to the subscriber.
shouldTerminateOnBack, boolean
Flag to close the app by pressing the “Back” button on the Home screen (with a confirmation dialog)
deliveryRuleVisible, boolean
Flag to display the delivery rule labels (“Subscribe”, “Rent”, “Buy”) on content posters
standbyTimers, array[integer_values]
List of standby timers available to the user (separated by comma and specified in hours). The -1 value adds the “Never” option in the SmartTUBE app. Example: “standbyTimers”: [-1, 1, 2, 3, 4]
defaultStandbyTimer, integer
Standby timer set by default, in hours. The -1 value sets the “Never” option by default.
standbyModalTimer, integer
The number of seconds provided to the user to respond to the message about the automatic shutdown of the device after the expiration of the standby timer.
switchToLiveModalTimerSecs, integer
The time (in sec) of displaying the notification of switching to Live mode when the device detects that the channel is being played in nPVR mode for too long.
playNowProgramFromGrid, boolean
Selecting an action by clicking on the program in the EPG:
- false — the program details page opens;
- true — start playback of the program (or channel, if the nPVR record of the program is not available). If the channel is not subscribed, the correspondent dialog is displayed to the subscriber.
alwaysRequirePinOnProfileEdit, boolean
Flag to require the master-profile PIN when editing profiles, regardless of the “Require PIN code” option in the master-profile settings.
setupWizardSteps, array[{object}]
Settings for the setup wizard, launched on STBs at the first start.
key, string
Identifier of the wizard object:
- language — UI language selection
- license — license acception
- baseUrl — base URL of the SmartTUBE Server
licensePath, string
URL of the TXT file with the license text
hidePassword, boolean
Flag to hide the password by bullets on the login screen
useHTMLInputElement, boolean
Type of input elements:
- true — native (required value for browsers)
- false — custom
canUnlinkOtherDevices, boolean
Device unlinking feature:
- true — the current device can unlink other devices
- false — the current device can unlink itself only
notFoundStatusProcessing, string
The action of the application when the service account state changes to the TRIAL CLOSED:
- authorize — open the login page;
- blockedDialog — block the interaction with UI and display the corresponding message;
- closableBlockedDialog — display the warning message and close the application;
- webView — not used
showInitialWizardIfAuthorizationFailed, boolean
Flag to open Initial Wizard in case of failed authorization
lowEndDevice, boolean
Flag to disable the UI animation in the player
cacheEnabled, boolean
Flag to cache EPG data in the indexDB
useSystemLangOnStartup, boolean
For Smart TVs only. Flag to use the Smart TV UI language at the first launch of the SmartTUBE app. If the Smart TV UI language is not supported by the app, the default language from the “lang” setting is used.
canOpenLink, boolean
Flag to allow links to be opened
playerInterfaceWakeOnMouse, integer
Delay in mouse pointer response to mouse awakening, ms.
preloadUrls, {object}
Settings for the applications’ preload. Construct a type with a set of properties K of type T
tv
dispose, boolean
preload, number
applications
dispose, boolean
preload, number
grid
dispose, boolean
preload, number
search
dispose, boolean
preload, number
my-feed
dispose, boolean
preload, number
vod
dispose, boolean
preload, number
home
dispose, boolean
preload, number
closableBlockedDialog, boolean
Flag to allow the subscriber to close the “Your service account is closed” dialog box when the state of his account changes to “CLOSED”.
rebootInterval, integer
The waiting time for user actions before the automatic restart after changing the account status to “CLOSED” and displaying the corresponding dialog box, in seconds.
playerResumeDialogTimeout, integer
Time (in sec) to display the dialog “Continue watching from the last saved position?”
showProgramStatusInGrid, boolean
Flag to display the “TSTV”, “NPVR”, “Reminder” labels on programs in the grid EPG
accessLevelType, string
Folder name (in skins) with a set of access levels
paymentRule, string
Reaction to an attempt to play not subscribed/purchased content:
- sdp — standard subscription/purchase process (via SmartTUBE SDP)
- webView — open a WebView. The URL for the WebView is configured by the SmartLabs developing team for each customer individually.
- dialog — open a dialog box with the paymentText or paymentText_{language_code} message and the paymentImage image
paymentText, string
Default text of the dialog box for the “paymentRule”: “dialog”
paymentText_{language code}, string
Localized text of the dialog box for the “paymentRule”: “dialog”. For example, “paymentText_cz”: “Nejste podepsaní. Prosím, zaregistrujte se na našich webových stránkách.”
paymentImage, string
URL of the dialog box image for the “paymentRule”: “dialog”
allowChangeChannelSortType, boolean
Flag to allow to change the sorting type (user / operator) in the channel list
canRenameDevicesOnDevicesPage, boolean
Allow the subscriber to rename linked devices in the Settings > Devices > My device menu
prependEpisodeNameWithSeasonEpisodeNumbers, boolean
Flag to hide the prefix S(# of season)E(# of episode) before the episode name in the player and list of episodes.
searchHistoryBufferSize, integer
Number of items in the search history
searchHintsSize, integer
Number of the search suggestions
emptySearchHintsSize, integer
Number of the search suggestions for the empty search
mediaPositionLimit, {object}
The maximum number of media positions in the “Continue watching …” rails for movies, TSTV programs, and nPVR recordings.
meta, integer
The maximum number of media positions for the “Continue watching movies” rail
tstv, integer
The maximum number of media positions for the “Continue watching programs” rail
npvr, integer
The maximum number of media positions for the “Continue watching recordings” rail
useNewMy, boolean
Flag to enable the new “My” screen
toggleActiveIcons, boolean
Flag to use the active/inactive icons
grid, {object}
EPG Grid settings
movies, {object}
Grid settings for movies
itemsSpacingBottom, number
showPlayerInGrid, boolean
Flag to display the mini-player on the EPG screen. It displays the ongoing TV show above the program guide next to the program description.
epgGridLeft, number
Left border of the EPG Grid from the current moment, in minutes.
epgGridScale, number
Width of the EPG Grid, in minutes.
remoteEventThrottleTime, number
Throttle time for a remote control
showDvrBadgeOnChannels, boolean
Show DVR badges on a channel
showVODTotalCount, boolean
Show the total count of VoD items
keysUrl, {object}
Key to URL mapping. Allowed values: home, tv, grid, mosaic, video-libraries, movies, applications, applications/weather, applications/currencies, applications/radio, radio, settings, settings/profile/:id, continue-watching, player/:mode/:id, player, program/:id, movie/:id, npvr/:id, my-feed, my, search, profiles.
showProfileSelectOnHome, boolean
Flag to display the Profile switching icon on the Home screen
hideSendReportButton, boolean
Flag to hide the Send Peport button in the Settings menu
tvChannelOpenTimeout, integer
Delay to wait for the key event (e.g. RC button press) before enable a channel stream, in ms.
showLoginHint, boolean
Default value: false
Flag to display a tooltip on the login page
loginFailureMsgTimeout, integer
Default value: 1500
Time for displaying a tooltip when a user attempts to log in unsuccessfully, in ms.
date, {object}
Date and time format for various UI objects. Please, use a time pattern string of the format described here: https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
date, string
Date format for the Purchases page
defaultFormat, string
Default date format
epgheader, string
Date header format for the TV page
gridDate, string
Date format for the pointer in the upper left corner of the EPG grid
messageDate, string
Date format for the list of messages
programdate, string
Date format for the list of program series and program reminder
programinfo, string
Date format for the program details page
statusbar, string
Date format for the status bar
time, string
Date format for the start/end date of the program in the player, program time in the EPG grid, and on the Purchases page (when the program is purchased).
timeSeconds, string
Date format for the media positions and status bar pointer in the player when rewinding
npvrProgramInfo, string
Date format for the nPVR program details page
npvrFeed, string
Date format for the nPVR program rail (“Continue watching” )
availableTill, string
Format for the date of availability of a package/subscription
dateTime, string
Date format for the programs on the Search page
weatherInfo, string
Date format for the weather forecast
weatherForecastInfo, string
Date format for the weather forecast details
currenciesInfo, string
Date format for the current exchange currency rate
currenciesChart, string
Date format for the exchange currency rate chart
shortDateFormat, string
Default value: “EEE dd MMM”
Date format for the SmartTUBE apps for mobile devices (starting from v8.xx). Date, not time. Please, specify time format with the timeFormat parameter.
timeFormat, string
Default value: “HH:mm”
Time format for the SmartTUBE apps for mobile devices (starting from v8.xx)
brandName, string
Operator’s brand name for the Support page
operatorPage, string
URL of the operator web site for the Support page
operatorSupportPhone, string
Operator tech support phone number for the Support page
operatorEmail, string
Operator e-mail address for the Support page
mobileQRCodeUrl, string
URL of the QR code with a link to the operator’s SmartTUBE app for mobile iOS/Android devices
mediaPlayersConfigs, {object}
Settings for integrated media players
shaka, {object}
Settings for the Shaka player. Most of parameters in this sections are bounded to the same-name parameters of the Shaka player’s original config. Their description can be found here.
streaming, {object}
Settings of the stream processing
bufferBehind, integer
The amount of content the player keeps in buffer behind the playhead. For example, if this is 30, the player keeps 30 seconds of content buffered behind the video’s current time. When it have more than 30 seconds buffered behind, content will be removed from the start of the buffer to save memory. This is a minimum; if the stream’s max segment size is longer than the bufferBehind, then that will be used instead.
bufferingGoal , integer
The amount of content the player tries to buffer. For example, if this is set to 30, the player fetches segments until it have at least 30 seconds buffered.
safeSeekOffset, integer
The amount of seconds that should be added when repositioning the playhead after falling out of the availability window or seek. This gives the player more time to buffer before falling outside again, but increases the forward jump in the stream skipping more content. This is helpful for lower bandwidth scenarios. Defaults to 5 if not provided.
inaccurateManifestTolerance, integer
The maximum difference, in seconds, between the times in the manifest and the times in the segments. Larger values allow us to compensate for more drift (up to one segment duration). Smaller values reduce the incidence of extra segment requests necessary to compensate for drift.
stallEnabled, boolean
When set to true, the stall detector logic will run. If the playhead stops moving for stallThreshold seconds, the player will either seek or pause/play to resolve the stall, depending on the value of stallSkip.
stallThreshold, number
The maximum number of seconds that may elapse without the playhead moving (when playback is expected) before it will be labeled as a stall.
stallSkip, number
The number of seconds that the player will skip forward when a stall has been detected. If 0, the player will pause and immediately play instead of seeking. A value of 0 is recommended and provided as default on TV platforms (WebOS, Tizen, Chromecast, etc).
rebufferingGoal, number
The minimum number of seconds of content that the StreamingEngine must buffer before it can begin playback or can continue playback after it has entered into a buffering state (i.e., after it has depleted one more more of its buffers).
manifest, {object}
Settings of the manifest processing
defaultPresentationDelay, integer
A default presentationDelay (native Shaka setting) value. For DASH, it’s a default presentationDelay value if suggestedPresentationDelay (native Shaka setting) is missing in the MPEG DASH manifest. The default value is 1.5 * minBufferTime (native Shaka setting) if not configured or set as 0. For HLS, the default value is 3 segments duration if not configured or set as 0. For more details, please see the link: https://shaka-player-demo.appspot.com/docs/api/shaka.extern.html
dash, {object}
Settings for the DASH manifest processing
ignoreMinBufferTime, boolean
If true will cause the DASH parser to ignore minBufferTime (native Shaka setting) from manifest. It allows player config to take precedence over manifest for rebufferingGoal (native Shaka setting). Defaults to false if not provided. For more details, please see the link: https://shaka-player-demo.appspot.com/docs/api/shaka.extern.html
disableXlinkProcessing, boolean
If true, xlink-related processing will be disabled. Defaults to false if not provided.
abr, {object}
defaultBandwidthEstimate, integer
The default bandwidth estimate to use if there is not enough data, in bit/sec.
restrictions, {object}
An object describing application restrictions on what tracks can play. All restrictions must be fulfilled for a track to be playable/selectable. The restrictions system behaves somewhat differently at the ABR level and the player level, so please refer to the documentation for those specific settings. See also the description of the “rule” parameter and configuration example.
value, {object}
List of restrictions.
minWidth, number
The minimum width of a video track, in pixels.
maxWidth, number
The maximum width of a video track, in pixels.
minHeight, number
The minimum height of a video track, in pixels.
maxHeight, number
The maximum height of a video track, in pixels.
minPixels, number
The minimum number of total pixels in a video track (i.e. width * height).
maxPixels, number
The maximum number of total pixels in a video track (i.e. width * height). For Tizen and WebOS platforms, you can set the value to 2073600 (1920х1080) or 1296000 (1080х720) if needed.
minFrameRate, number
The minimum framerate of a variant track.
maxFrameRate, number
The maximum framerate of a variant track.
minBandwidth, number
The minimum bandwidth of a variant track, in bit/sec.
maxBandwidth, number
The maximum bandwidth of a variant track, in bit/sec.
hlsjs, {object}
Settings for the HLS.js player (https://hls-js.netlify.app/demo/)
maxBufferLength, integer
Maximum buffer length in seconds. If buffer length is/become less than this value, a new fragment will be loaded. This is the guaranteed buffer length hls.js will try to reach, regardless of maxBufferSize.
maxMaxBufferLength, integer
Maximum buffer length in seconds. Hls.js will never exceed this value, even if maxBufferSize is not reached yet.
hls.js tries to buffer up to a maximum number of bytes (60 MB by default) rather than to buffer up to a maximum nb of seconds. This is to mimic the browser behaviour (the buffer eviction algorithm is starting after the browser detects that video buffer size reaches a limit in bytes)
maxBufferLength is the minimum guaranteed buffer length that hls.js will try to achieve, even if that value exceeds the amount of bytes 60 MB of memory. maxMaxBufferLength acts as a capping value, as if bitrate is really low, you could need more than one hour of buffer to fill 60 MB.
maxBufferSize, integer
‘Minimum’ maximum buffer size in bytes. If buffer size upfront is bigger than this value, no fragment will be loaded.
cobalt, {object}
Settings for the Cobalt player
args, {object}
General settings
allowLivePlaybackSpeedControl, boolean
Default value: false
Flag to allow control over the playback speed during live playback
restorePosOnRestart, boolean
Flag to restore the playback position on restart
networkBitrateLimit, number (long)
Maximum bitrate allowed for network playback
networkBitrateLimitContentCoeff, number (float)
Content coefficient for the network bitrate limit
dashAccumulateDynamicManifest, boolean
Flag to accumulate dynamic manifest (i.e. segments that are not presented in the manifest anymore for args.dashAccumulateDynamicManifestDurationMs but not more than time shift buffer size value)
dashAccumulateDynamicManifestDurationMs, number
See the args.dashAccumulateDynamicManifest parameter
dashAccumulateDynamicManifestThresholdUs, number
Threshold for overlaps between segments to be considered as a sequence (if actual overlap is more than this value then new coming segments is considered as a duplicate) during accumulation.
player, {object}
Player settings
quickStart, boolean
- true: Re-use decoder and DRM sessions from previous stream if possible.
- false: Always reinitialize player.
Recommended to set false while debugging stream start issues.
webos, {object}
Settings for the WebOS environment
tizen, {object}
Settings for the Tizen environment
sml, {object}
Settings for the SmartLabs sml STBs
kreatv, {object}
Settings for the KreaTV platform.
ficusAddress, string
HTTP address:port of the Ficus.
DashConfig, {object}
Config on how to handle the DASH protocol.
Manifest, {object}
Configuration on how to handle the manifest file.
Retry, {object}
Retry parameters to download the MPD file.
@attributes.maxAttempts, integer
Specify the number of attempts to retry downloading a file on failure. If the value is 2, the maximum number of download attempts will be 3. If the value is 0, never retry downloading on failure.
@attributes.interval, integer
Specifies the time delay (in milliseconds) before the next attempt at downloading the same file.
Stream, {object}
Configuration on how to handle stream segments.
@attributes.initialSelectionStrategy, string
The strategy on how to select the first stream to play in DASH:
- maintain_bandwidth: The Representations are selected by referring to the bandwidth of the Representations played in the previous session. If this is the first playback, the lowest_bandwidth strategy is applied. If the stream is from a URL different from that of the last DASH playback, the lowest_bandwidth strategy is applied.
- lowest_bandwidth: The Representation with the lowest bandwidth in the candidate Adaptation Sets will be selected. For video, if HEVC Adaptation Set exists, the candidates are the HEVC Adaptation Sets; otherwise, all video Adaptation Sets are candidates.
@attributes.bandwidthSelectionMode, string
Specifies the mode of DASH bandwidth selection algorithm in Adaptive Bit-Rate (ABR) playback. The algorithm selects proper bandwidth based on bit rate measurement and buffer level:
- standard: Select a bandwidth that is less than and closest to the measured bit rate (after smoothing).
- conservative: Select a lower bandwidth than that of “standard” mode in order to keep a higher buffer level and be less likely to underflow in case of poor network performance.
- auto: The algorithm will start in “standard” mode, but can toggle to “conservative” if the bandwidth measurements are inconsistent.
Retry, {object}
Retry parameters to download media segments.
@attributes.maxAttempts, integer
Specify the number of attempts to retry downloading a file on failure. If the value is 2, the maximum number of download attempts will be 3. If the value is 0, never retry downloading on failure.
@attributes.interval, integer
Specifies the time delay (in milliseconds) before the next attempt at downloading the same file.
MinBufferTime, integer
The minimum amount of content (in milliseconds) to buffer before starting DASH playback. The value can be set to -1, 0, or a positive integer.
- -1: Apply the minBufferTime attribute parsed from DASH MPD.
- 0: Start playback when the first I-Frame has been received.
BufferTimeAhead, integer
Defines the desired amount of content (in milliseconds) to buffer from the current position for DASH playback. The value should be larger than the value of MinBufferTime.
Specifying a too low value might affect the playback experience in case of network jerkiness, while a too large value may cause the STB to be busy in downloading segments at the start of playback.
If the value is so large that the memory reserved for DASH playback is not enough, the prebuffering stops when buffer is full. If the value is less than the minimum buffer time (defined by the MinBufferTime element of this configuration, or the MPD attribute minBufferTime when the value of MinBufferTime is -1), STB will choose the larger one of twice the minimum buffer time and the default value.
ResolutionLimitation, string
Defines the maximum resolution of playback representation. If no representation is within the limitation, the representation with the lowest resolution will be selected. If the value is not defined, then the representation is selected automatically, based on the bandwidth, resolution and codec, etc. Acceptable values:
- SD: The maximum resolution of playback representation is 720×576.
- HDready: The maximum resolution of playback representation is 1366×768.
- HD: The maximum resolution of playback representation is 1920×1080.
- UHD: The maximum resolution of playback representation is 3840×2160.
[channel ID], {object}
Integrated media player settings depending on a channel
[npvr program ID], {object}
Integrated media player settings depending on an nPVR program
[movie ID], {object}
Integrated media player settings depending on a movie
[trailer ID], {object}
Integrated media player settings depending on a trailer
[radio channel ID], {object}
Integrated media player settings depending on a radio channel
googleReCaptchaConfig, {object}
Settings for interaction with the Google ReCaptcha service
publicKey, string
Public key for interaction with the service
privateKey, string
Private key for interaction with the service
showLoginCaptcha, boolean
Flag to enable the Google ReCaptcha at the login stage
analyticsProviders, array[{object}]
Settings of analytics providers
provider, string
ID of the analytics provider
config, {object}
Individual settings for specified analytics provider
url, string
Endpoint URL of the analytics provider
timeout, integer
Analytics provider response timeout, in ms.
batchInterval, integer
Interval of batch sending of CHUNK_LOADED events to SmartCARE, in seconds. Allows the network stack not to be overloaded by sending single events. If 0, the event is sent with every chunk. Used only if “analyticsProviders.provider”: “smartcare”.
sendChunkUrl, boolean
Flag to send the chunk URL (the url parameter) within the CHUNK_LOADED event to SmartCARE. Used only if “analyticsProviders.provider”: “smartcare”.
sendPlaylistUrl, boolean
Flag to send the playlist URL (the url parameter) within the PLAYLIST_LOADED event to SmartCARE. Used only if “analyticsProviders.provider”: “smartcare”.
cpuCheckInterval, integer
Periodicity of sending CPU_LOAD event to SmartCARE, in sec. The event is sent, if only the current measured CPU usage value differs from the previous one. The difference between these values, which is sufficient to send the event, is set by the parameter cpuPercentsDiff. Used only if “analyticsProviders.provider”: “smartcare”.
cpuPercentsDiff, integer
Percentage difference between the current and previous values of CPU usage, which is sufficient to send the CPU_LOAD event to SmartCARE (see the cpuCheckInterval parameter). If set 0, the event is sent just by timer with the cpuCheckInterval periodicity. Used only if “analyticsProviders.provider”: “smartcare”.
memCheckInterval, integer
Periodicity of sending MEMORY event to SmartCARE, in sec. The event is sent, if only the current measured RAM usage value differs from the previous one. The difference between these values, which is sufficient to send the event, is set by the parameter memPercentsDiff. Used only if “analyticsProviders.provider”: “smartcare”.
memPercentsDiff, integer
Percentage difference between the current and previous values of RAM usage, which is sufficient to send the MEMORY event to SmartCARE (see the memCheckInterval parameter). If set 0, the event is sent just by timer with the memCheckInterval periodicity. Used only if “analyticsProviders.provider”: “smartcare”.
memThresholdCheckInterval, integer
Periodicity of sending MEMORY_THRESHOLD event to SmartCARE, in sec. The event is sent, if only the current measured RAM usage value differs from the previous one. Used only if “analyticsProviders.provider”: “smartcare”.
wifiCheckInterval, integer
Periodicity of sending WIFI_STRENGTH event to SmartCARE, in sec. The event is sent, if only the current measured value of Wi-Fi signal strength differs from the previous one. The difference between these values, which is sufficient to send the event, is set by the parameter wifiPercentsDiff. Used only if “analyticsProviders.provider”: “smartcare”.
wifiPercentsDiff, integer
Percentage difference between the current and previous values of Wi-Fi signal strength, which is sufficient to send the WIFI_STRENGTH event to SmartCARE (see the wifiCheckInterval parameter). If set 0, the event is sent just by timer with the wifiCheckInterval periodicity. Used only if “analyticsProviders.provider”: “smartcare”.
bufsizeCheckInterval, integer
Periodicity of sending BUF_SIZE event to SmartCARE, in sec. The event is sent, if only the current measured value of buffer size differs from the previous one. The difference between these values, which is sufficient to send the event, is set by the parameter bufsizePercentsDiff. Used only if “analyticsProviders.provider”: “smartcare”.
bufsizePercentsDiff, integer
Percentage difference between the current and previous values of Wi-Fi signal strength, which is sufficient to send the BUF_SIZE event to SmartCARE (see the bufsizeCheckInterval parameter). If set 0, the event is sent just by timer with the bufsizeCheckInterval periodicity. Used only if “analyticsProviders.provider”: “smartcare”.
storageCheckInterval, integer
Periodicity of sending STORAGE_STATS event to SmartCARE, in sec. The event is sent, if only the current measured values of storage directories differs from the previous ones. Used only if “analyticsProviders.provider”: “smartcare”.
keepAliveInterval, integer
Periodicity of sending KEEP_ALIVE event to SmartCARE, in sec. Used only if “analyticsProviders.provider”: “smartcare”.
excludeEvents, array of strings
List of events not to send to SmartCARE. Allowable values are names of events in the SmartCARE End-User Device API (the e argument). Example: [“CHUNK_LOADED”, “PLAYLIST_LOADED”]. Used only if “analyticsProviders.provider”: “smartcare”.
loggerUrl, integer
URL of the logging server. You may send logs of the application (logLevel) only and logs of the Shaka media player additionally (player.logLevel).
logLevel, integer
Application’s logging level:
- 0 — ERROR: there are problems that need to be solved. The error does not stop the app operation as a whole, other requests can work correctly;
- 1 — WARNING: there are warnings that need to be taken into account. An unexpected action occurred, despite this, the system executed the request;
- 2 — LOG: normal actions;
- 3 — INFO: important expected actions;
- 4 — DEBUG: actions needed for the app debugging;
drmTokenLazyThreshold, integer
Number of seconds before the expiration time of the DRM key to request its update
awakerConfig, {object}
Config for delayed network check on device wakeup
delayBetweenAwakingAndCheckingNetwork, number
forceAwakeDelay, number
cache, {object}
Setting of caching the movies’ and programs’ metadata
programByID, {object}
max, integer
Number of last added programs to store in the cache
metaByID, {object}
max, integer
Number of last added movies to store in the cache
sendSmartlabsIdHeader, boolean
Flag to include the “X-Smartlabs-Request-ID” header in each request to the SmartTUBE. This header contains a unique UUID for each request, which is used for end-to-end numbering of requests passing from end-user devices to SmartTUBE.
sendSmartlabsIdPlayerHeader, boolean
Flag to include the “http_x_smartlabs_mac_address” header in each request to the SmartTUBE
delayEpgUpdatesWhileContentIsPlaying, boolean
Flag to postpone the EPG update (upon notification) when the player is playing the content (to avoid lagging the player).
useJwtAuth, boolean
Flag to use the JWT authorization
storeRedirect, {object}
Links to the app page in the app stores when opening the interface (redirect)
googlePlay, string
Link to the Google Play Market
appStore, string
Link to the Apple App Store
uhdSeparatePlatform, boolean
For Cobalt. Flag to send deviceType=ANDROIDTVUHD or ANDROIDTV depending on supported resolution by device or depending the setting Settings > System > UHD TV Support.
deviceTypeOverride, {object}
Settings for overriding the deviceType=ANDROIDTVUHD or ANDROIDTV arguments. See the uhdSeparatePlatform parameter.
ANDROIDTVUHD, string
Overriding the ANDROIDTVUHD device type
ANDROIDTV, string
Overriding the ANDROIDTV device type
androidDeviceType, string
Device type returned by device in the deviceType parameter when communicating via SmartTUBE End-User Device API.
supportDeviceTypeChange, boolean
Flag to display the Device Type option with the following values in the Settings menu:
- IPTV (default) — returns STB in the deviceType parameter when communicating via SmartTUBE End-User Device API;
- OTT — returns OTTSTB.
If false, the device returns STB.
useUHDDeviceType, boolean
Flag to display the My service option with the following values in the Settings menu:
- Multi-Screen TV — returns ANDROIDTVUHD in the deviceType parameter when communicating via SmartTUBE End-User Device API. Can be overridden using the androidUHDDeviceType property in the Server section.
- Multi-Screen Lite — returns ANDROIDTV.
The app tries to detect UHD support for the device when it first starts up and sets Multi-Screen TV as the default setting.
terminalName, string
Set this string as terminalName on authorization if set
langToIso, {object}
Construct a type with a set of properties K of type T
profile, {object}
User profile settings
force, boolean
Flag for forcing the settings of the profile section:
- false— the settings are applied only when the application is launched for the first time. On subsequent launches, the settings saved in local storage are applied.
- true— the settings are applied on the first and subsequent launches. The settings in local storage are ignored.
disableSubtitles, boolean
Flag to disable subtitles by default
textTrackSort, array of {“type”:”string”}
Default sorting of subtitle tracks. For example, “textTrackSort”: [“sq”, “en”]
userTextTrackSort, boolean
Flag to use the sorting set by the textTrackSort parameter
audioTrackSort, array of {“type”:”string”}
Default sorting of audio tracks by language. For example, “audioTrackSort”: [“sq”, “en”]
userAudioTrackSort, boolean
Flag to use the sorting set by the audioTrackSort parameter
doubleOkClosesTvPane, boolean
Flag for configuring the closing of the TV channel panel in the player by clicking the OK button on the remote control:
- true— Up and Down buttons only scroll through the channel list, the first OK click starts the channel broadcast, the second OK click closes the panel;
- false — channels are switched when scrolling through the channel list using the Up and Down buttons, the first OK click closes the panel.
preferredAudioCodecList, string
For STBUI only. Default sorting of audio tracks by a codec. For example, “preferredAudioCodecList”: “aac,mpeg2”. The values must match the codecs parameter of the audio track.
mapDvbToSdpChannels, boolean
Flag to map DVB channels to the SmartTUBE SDP channels. This way you can use the channel icons and descriptions for DVB channels from the SmartTUBE SDP.
pushNotificationsEnabled, boolean
Flag to enable the Push notifications for the Simple and Event-driven notifications by default
showLoginCaptcha, boolean
Default value: false
Flag to enable the captcha on the Log in screen
maxRunTime, number
Default value: -1 (not set)
The STB uptime (in hours) after which the SmartTUBE app restarts after returning from standby mode. The STB does not restart in run mode, even after the specified uptime has elapsed. Applicable for STBs with STBUI app only.
registerHelp, {object}
Settings for the info button (“How to register?”, “Help”, etc.) on the authorization page. Example:
“registerHelp”: { } |
[language_id], {object}
Button label and text settings for the UI language specified by the {language_id}. Language is defined by 2-letter language code ISO 639-1:2002.
label, string
Button label
url, string
URL of the text to be opened when the button is clicked
licensePath, {object}
Simplified settings for the license text displayed in the setup wizard. Example:
[language_id], string
URL of the license text to be opened for the UI language specified by [language_id]. Language is defined by 2-letter language code ISO 639-1:2002.
licensePath, string
URL of the license text to be opened in the setup wizard. Example: “licensePath”: “base:///license.txt”
noScrollPastInGrid, boolean
Flag to disable scrolling back in time in the EPG grid
showBannersTrailerWithoutOffset, boolean
Flag to take in account the aspect ratio of the movie trailer when displaying it on the Home screen under the trailer-enabling banner. If true, the application takes into account the aspect ratio of the stream and, based on it, displays the video in width on the full screen, and in height — from the top edge of the screen to the value calculated by the aspect ratio of the video stream. For example, if the trailer has an aspect ratio of 21:9, the image will be pushed to the top edge and there will be a black bar at the bottom.
syslog, {object}
Logging settings for syslog
params, [array{object}]
Parameters of the syslog configuration. Recommended configuration:
// Note: JSON is an uncommented format. Please remove the comments below in the actual configuration to avoid malfunctions. “syslog”: { } |
isDownloadOfflineEnabled, boolean
Default value: false
Flag to allow users to download VoD content to a device and watch it offline. To enable this feature, the VoD content asset must have the downloadEnabled property enabled (SmartTUBE Admin Console > Content > Movies / Episodes > [specific movie details] > Assets tab > [specific asset details] > Download enabled option).
Example Configuration
{ |
Change Log
JUNG 9.2
- New parameters ux.showPlayerInGrid, ux.showLoginHint, ux.loginFailureMsgTimeout supported.
- New parameter ux.silentAutoplayOnBannersAndChannelRail is supported.
- New parameter player.disableSkipBanForCurrentProgram is supported.
- Parameters showAdvBlockedPanel, nonSkipableAdvInterval, resetSkipAdvertTimeoutOnSwitch, ignoreSkipAdvertTimeoutForPl, maxSaveAdvertismentTimeout in the player section are deprecated.
iOS 9.1
- New parameters canTerminalNameChange, canTerminalDelete, ux.hideBannersTitle are supported.
iOS 8.4.x
- New parameters canTerminalNameChange, canTerminalDelete, ux.hideBannersTitle are supported.
JUNG 8.3.x
- New parameters ux.showPlayerInGrid, noScrollPastInGrid, ux.epgGridLeft, ux.epgGridScale, ux.hideSendReportButton, player.playbackOptimizations.shaka.stopLiveBeforeOpen, ux.tvChannelOpenTimeout, showBannersTrailerWithoutOffset, noScrollPastInGrid, ux.epgGridLeft, ux.epgGridScale, ux.hideSendReportButton, player.playbackOptimizations.shaka.stopLiveBeforeOpen, ux.tvChannelOpenTimeout, showBannersTrailerWithoutOffset are supported.
JUNG 8.2
- New parameters analyticsProviders.config.sendChunkUrl and analyticsProviders.config.batchInterval, syslog.params supported
JUNG 8.1
- New parameter player.openChannelTSTVFromStart supported
STB-UI-5.37.57
- New parameter preferredAudioCodecList supported
Home Screen
The Home screen of the SmartTUBE app for the large-screen platforms and web (aka JUNG) consists of several rails: banner, main menu, scrollable content rails (“Recommendations”, “Top channels”, “Best for you”, and so on).
You can configure the representation of each rail and their arrangement on the screen using two JSON files:
- Home screen configuration file — home.json,
- Main menu configuration file — home-menu.json.
The structure of the home.json file consists of a single section “lines”, which describes how the rails are filled in with content and how they are displayed on the screen.
The sequence of displaying rails on the Home screen is set by the sequence of their description in the file. The typical sequence is as follows: Banner, Main menu, Continue watching, Top 10 programs, Recommended movies/series, etc. — you can change it as you like.
{ |
Depending on the type, each rail has a specific set of parameters:
id — rail identifier
titles — rail titles in accordance with the UI language. Displayed above the rail.
<language ID> — Localized rail title in the format: “en”: “Continue Watching Programs” . 2-letter language code ISO 639-1:2002 is used.
default — Flag to focus this rail when starting the device or when going to the Home screen.
center — Flag to center the contents of the rail.
sources — Sources of content for the rail
type — Display style of a rail:
- menu — Main menu
Parameters: none
Note: Configured with the separate file (see “Configuring the Main Menu”)
- banners — Banner panel
Parameters: feedUrl
- channels — User favorite channels and channels sorted by the operator in Admin Console
Parameters: feedUrl, limit
- programs — Top viewed programs
Parameters: feedUrl, limit
- npvr — list of nPVR records
Parameters: none
- history — viewing history (movies, series and programs sorted by the last viewed time)
Parameters: none
- continueWatching — incompletely viewed content
Parameters: contentType
- items — “Best for you” recommendations (programs, movies, series, services, etc.)
Parameters: feedUrl, limit
- meta — Movies or series with filters
Parameters: feedUrl, limit
- applications — Android apps installed on a device
Parameters: sorting, limit
- programsInAir — programs currently on the air
Parameters: feedUrl
config.applications.packageName — Android application package name to display in the Applications rail. Other apps not listed and not sorted in this config are displayed sorted by the package name. You can switch the layout type of the app items in the rail (a classic app banner or an app icon with caption) using the ux.androidTvBanner parameter of the setup.json file.
config.applications.sortPosition — sorting position of the Android application in the Applications rail. Other apps not listed and not sorted in this config are displayed sorted by the package name.
sorting — sorting type for the Applications rail. Default sorting type — by the package name. Only for type = applications:
- label — sort by the config.applications.sortPosition number.
feedUrl — URL of the content feed, specific to each type. Please, DO NOT CHANGE it, except feedUrl for custom rails (such as “Recommended movies and series” and “Recommended TV Programs”). For more details about configuring custom rails, see the article “Configuring Content Rails on Home Screen”.
contentType — Content type for the rail: programs or movies. Only for type = continueWatching.
limit — Max number of content items in the rail. Only for type = channels, programs, items, meta, applications.
videoPreview.delay — Delay before a screenshot of the current program changes to a video stream when user hover over a channel tile in the channel rail, in ms. Available only for the rails with sources.type: “programsInAir”
videoPreview.muted — Flag to mute the stream of the current program when user hover over a channel tile in the channel rail. Related to videoPreview.delay.
The content with the maximum access level (age rating) specified in the SmartTUBE Admin Console > Dictionaries > Access levels dictionary is not displayed in the rails throughout app’s UI. |
Main Menu
The structure of the home-menu.json file is a list of objects, each of which describes one of the Main menu buttons — “TV”, “Movies”, “Series”, “Search”, “My”, etc. The sequence of buttons is set by the sequence of their description in the file. You can change it and hide some buttons as you like.

Main menu
We strongly recommend you do not change any settings inside objects and operate only with their sequence and visibility.
{ |
Movies/Series Catalog
VoD Sections Configuration. Step-by-step Guide.
When your subscribers open the “Movies” or “Series” section in the SmartTUBE apps’ UI they could see the following Default screen:

“Movies” section
Clicking the “Left” button on remote control the subscriber can open the Filter panel:

“Movies” section with the Filter panel opened
As you can see, the “Movies” section includes 3 configurable areas:
- Filter panel
- Quick filter panel
- Poster area
Their representation and filling is managed by the vod.json file, which consists of the following sections:
- “filter” — describes the Filter Panel;
- “quickFilter” — describes the Quick Filter Panel;
- “presets” — describes the visual representation of poster area
- “feeds” — describes the rules for filling content the poster area
The order of the sections in the file can be arbitrary.
The vod.json is applied simultaneously to the “Movies” and “Series” sections. Thus, their representation in the app’s UI will differ only in content. |
Let’s configure areas one by one and start with the Filter panel.
Configuring the Filter Panel
The Filter panel usually contains a set of typical filters and sorts:

Filter panel
The “filter” section in this case will look as follows:
{ |
id — filter ID. You can use either an arbitrary string value (as “sortings”) or one of the reserved values:
- top10 — 10 most rated movies. You can specify any number after the top, e.g. top25, top33.
- genres — filter by the genres
- years — filter by the year ranges
- countries — filter by country of production
- purchaseTypes — filter by purchase type (subscription, transactional, advertisement)
- providers — filter by content provider
name — filter name displayed in the SmartTUBE app
urlArgs — parameters of content filtering
type — content type: movies or series
genreId — list of genre IDs
providerId — list of content provider IDs
countryId — list of country IDs
accessLevelId — ID of the access level of the active profile
genreALevelId — ID of the access level of the genre
showcaseId — showcase ID
sort — sorting the content by:
- name — the movie name
- rating — the Default order field on the movie/series details page in the SmartTUBE Admin Console
- startDate — the date when the movie became available for rental (in ascending order)
- startDate desc (not a typo) — the date when the movie became available for rental (in descending order)
- newRelease_desc — the movie release date
year — list of movie/series by production years. Examples of acceptable values: 2015 (one year), 2005,2007,2008 (several years), 2005-2015 (interval).
text — text for searching in the Name, Description and Original name fields
id — list of movie/series IDs
serviceId — ID of a metacontent bundle
rubricId — list of rubric IDs
exclusive — indicates that this filter could be selected exclusively, i.e. other filters in the group are reset.
Configuring the Quick Filter Panel
Configuring the Quick filters panel is similar to the Filter panel and differs only in some of the arguments described below. Unlike the Filter panel, it makes sense to add frequently used, trending and interesting filters here:

Quick filters panel
The “quickFilter” section in this case will look as follows:
“quickFilter”: [ |
id — quick filter ID. You can use either an arbitrary string value (as “gameOfThrones”) or one of the reserved values:
- openFilters — button to open the Filter panel
- clearAllFilters — button to reset all filters
- lastWatch — last watched movies
- lastAdded — movies sorted by rental start date
name — quick filter name displayed in the SmartTUBE app
exclusive — indicates that this filter could be selected exclusively, i.e. other filters are reseted.
selectFeed — ID of the content feed for this quick filter (configured in the ”feeds” section, see below)
Configuring the Poster Display Presets
The “presets” section may contain one or more presets for displaying posters, which will be used in the “feeds” section. The screenshot below shows how two different presets — “normal” and “big” — are displayed in the SmartTUBE app.

Two rails with different poster presets
The “presets” section in this case will look as follows:
“presets”: { |
In order not to complicate the setup, we recommend that you configure only the parameters described below:
titleSize — size of the rail title. Acceptable values (in order of increasing font size): s, sb, n, nb, l, lb, xl, xlb.
height — height of posters
itemWidth — width of posters
itemSpacingRight — spacing between posters
Configuring the Rules for Filling Content the Poster Area
When your customer enables any filter from the Filter panel, the Poster area is filled with a single grid of posters:

Grid of posters
The “feeds” section allows you to fill the Poster area for some Quick filters with a custom set of rails:

Poster rails
This example of the “feeds” section shows how you can fill in the Quick filters “Group by genre” and “Sci-Fi” with a custom set of poster rails:
“feeds”: { |
expand — section that allows you to group movies into rails based on the attribute specified in the id parameter.
preset — name of the poster display preset from the “presets” section
id — attribute by which the movies should be grouped into rails. Acceptable values:
- genres — filter by the genres
- years — filter by the year ranges
- countries — filter by country of production
- purchaseTypes — filter by purchase type (subscription, transactional, advertisement)
- providers — filter by content provider
lines — a custom set of rails
title — name of the rail displayed above it
filters — movie filtering options for the rail
urlArgs — parameters of content filtering
type — content type: movies or series
genreId — list of genre IDs
providerId — list of content provider IDs
countryId — list of country IDs
accessLevelId — ID of the access level of the active profile
genreALevelId — ID of the access level of the genre
showcaseId — showcase ID
sort — sorting the content by:
- name — the movie name
- rating — the Default order field on the movie/series details page in the SmartTUBE Admin Console
- startDate — the date when the movie became available for rental (in ascending order)
- startDate desc (not a typo) — the date when the movie became available for rental (in descending order)
- newRelease_desc — the movie release date
year — list of movie/series by production years. Examples of acceptable values: 2015 (one year), 2005,2007,2008 (several years), 2005-2015 (interval).
text — text for searching in the Name, Description and Original name fields
id — list of movie/series IDs
serviceId — ID of a metacontent bundle
rubricId — list of rubric IDs
Tenant-dependant Skins
If you have a multi-tenant architecture, you can adapt the SmartTUBE app’s UI to the corporate identity of each tenant and make it more individual. In this topic we unveil the ways to change the logo, selector color and size of content rails on the Home screen dependent on tenant.
Configuring Logo
The SmartTUBE platform allows you to set the logo for the splash screen and upper-left corner in the app’s UI individually for each tenant.
- Open the SmartTUBE Device Manager.
- Go to the File Storage section.
- Upload logos for the splash screen and the upper left corner of UI. Image format requirements for different platforms, please see here.
- Double click on each logo image and write down their URLs, we’ll need them in the Step 8.
- Go to the Home page.
- Find the desired device group.
- Find the folder of a firmware currently used on devices. It should be marked with the CURRENT label.
- Click the Add JSON file button and create the setup.json file with the settings below. If it already exists, just add or edit these settings.
{ |
- Click the Save button to save changes.
- Now the file should be uploaded to devices.
- Check that the new settings have been applied to devices.
Configuring Selector Color
The selector highlights UI elements when they are selected (green in the screenshots below):
In order to change its color, follow the steps below:
- Create CSS files (one for each tenant) and name them as follows: fixes.[tenant External ID from the SmartTUBE Admin Console > Administration > Tenants dictionary].css For example, fixes.alter_tvio.css
- Define the selector color in these files changing the color value (#ff0000 in the example below) to desired one as follows:
.button-normal.button-focus, .text-input.focus, .focus-bg-virtualkeyboard-highlightButtonBackground.focus, .statusbar-page-navigation-path, base-channels-programs .cursor-line-tri { |
- Upload files via SmartTUBE Device Manager to the current firmware version of desired device group.
- Check that the new settings have been applied to devices.
Configuring App for iOS
The customization of SmartTUBE app for iOS is performed using the JSON files specified below. These files could be distributed across your end-user devices via the SmartTUBE Device Manager.
- Primary UI/UX settings — setup.json or networkConfig.cfg
- Home screen — home.json
- “My” page — my.json
- “Profile” page — settings.json
- Movies & Series catalogs — vod.json & series.json
- rail styles — layouts.json
Primary UI/UX Settings
The primary UI/UX settings are placed in the setup.json (app version 8.x and later) or networkConfig.cfg (app version lower than 8.x) file adhering to the JSON format.
Configuration Examples
setup.json — for the app version 8.x and later:
{ |
networkConfig.cfg — for the app version lower than 8.x. All settings in this file should be listed in the “result” section as shown below:
{ |
Parameter Description
isBannerTitleVisible, boolean
Flag to display the movie title overlaid on the banner on the Home screen
bannerDuration, integer
Duration of displaying banners in the carousel on the Home screen
showAdvBlockedPanel, boolean
Flag to display the notification with the skip timer above the progress bar in the app’s player
nonSkipableAdvInterval, integer
The amount of ads (in seconds) that the subscriber cannot skip and rewind. The value -1 prohibits skipping all ads.
maxSaveAdvertismentTimeout, integer
If the STB exits standBy mode and it has been in this mode for more than set minutes, the “Skip advert timeout” timer for all channels is reset. This timer is also reset after the STB is rebooted.
resetSkipAdvertTimeoutOnSwitch, boolean
Flag to reset the Skip Advert Timeout (see Step 6) every time the subscriber switches a channel (including nPVR). true — reset when switching a channel; false — reset after viewing an ad block.
ignoreSkipAdvertTimeoutForPl, boolean
Flag to prohibit skipping ads for Pause Live programs, even if the Skip Advert Timeout has not expired.
canTerminalNameChange, boolean
Flag to allow user to rename a device linked to the account. Renamed to userCanChangeTerminalName in SmartTUBE App for iOS 9.1.
userCanChangeTerminalName, boolean
Flag to allow user to rename a device linked to the account
canTerminalDelete, boolean
Flag to allow user to unlink a device from the account. Renamed to userCanDeleteTerminalsFromAccount in SmartTUBE App for iOS 9.1.
userCanDeleteTerminalsFromAccount, boolean
Flag to allow user to unlink a device from the account
Home Screen
The app’s Home screen usually consists of a banner and themed content rails. The home.json file describes the order of rails, its contents and layout. Following the example below, you can customize the Home screen yourself.
Example Configuration
{ |
Parameter Description
lines — core section of the configuration file
layout — section with the rail layout settings
[layout type] — ID of layout described in the layouts.json file and applied to this [layout type]. For example, the string “series”: “movie” prescribes using the layout with ID “movie” for the series posters.
titles — rail titles in accordance with the UI language. Displayed above the rail.
<language ID> — localized rail title in the format: “en”: “Continue Watching Programs” . 2-letter language code ISO 639-1:2002 is used.
sources — sources of content for the rail (at the moment only one source supported)
type — type of content and display style of a rail. Acceptable values:
- banners — banner panel. The parameter feedUrl is required for this rail type.
- channels — user favorite channels and channels sorted by the operator in Admin Console. The parameter feedUrl is required for this rail type.
- programs — top viewed programs. The parameter feedUrl is required for this rail type.
- npvr — list of nPVR records
- history — viewing history (movies, series and programs sorted by the last viewed time)
- continueWatching — incompletely viewed content
- items — “Best for you” recommendations (programs, movies, series, services, etc.). The parameter feedUrl is required for this rail type.
- meta — movies or series with filters. The parameter feedUrl is required for this rail type.
- favoriteChannels — user favorite channels
- favoriteMovies — user favorite movies
- reminders — reminders for upcoming broadcasts set by the subscriber
- metaAlias — custom rail with movies or series filtered with Search aliases (configured in SmartTUBE Admin Console > Content > Search aliases > Content). The parameter feedUrl is required for this rail type.
- epgAlias — custom rail with programs filtered with Search aliases (configured in SmartTUBE Admin Console > Content > Search aliases > Content). The parameter feedUrl is required for this rail type.
feedUrl — URL of the content feed, specific to each type. Please, DO NOT CHANGE it, except feedUrl for custom rails (type = metaAlias or epgAlias). The value for these rails is set as follows: “feedUrl”: “sdp://userfeed/aliasMetaContent?aliasName=xxx”, where xxx is an externalId of a Search alias in the SmartTUBE Admin Console > Content > Search aliases > Content. For more details about configuring Search aliases, see the article “Configuring Content Rails on Home Screen”.
updateTimeout — period of refreshing content for the rail, in sec.
limit — max number of content items in the rail
The content with the maximum access level (age rating) specified in the SmartTUBE Admin Console > Dictionaries > Access levels dictionary is not displayed in the rails throughout app’s UI. |
“My” Page
Using the my.json file you can customize the My page. The order of the rails in the UI is determined by the order in which they are described in the file.
Example Configuration
{ |
Parameter Description
lines — core section of the configuration file
layout — List of content types for the rail with corresponding IDs of layout presets (described in the layouts.json file)
titles — rail titles in accordance with the UI language. Displayed above the rail.
<language ID> — Localized rail title in the format: “en”: “Continue Watching Programs” . 2-letter language code ISO 639-1:2002 is used.
sources — Sources of content for the rail (at the moment only one source supported)
type — type of content and display style of a rail. Acceptable values:
- continueWatching — incompletely viewed content
- favoriteChannels — User favorite channels
- favoriteMovies — User favorite movies
- npvr — list of nPVR records
- reminders — reminders for upcoming broadcasts set by the subscriber
- history — viewing history (movies, series and programs sorted by the last viewed time)
limit — Max number of content items in the rail.
The content with the maximum access level (age rating) specified in the SmartTUBE Admin Console > Dictionaries > Access levels dictionary is not displayed in the rails throughout app’s UI. |
“Profile” Page
Using the settings.json file you can customize the Profile menu. Here you can change the order of the menu items (upper level) and their visibility only.
Example Configuration
{ |
Parameter Description
lines — core section of the configuration file
titles — item titles in accordance with the UI language
<language ID> — Localized item title in the format: “en”: “Continue Watching” . 2-letter language code ISO 639-1:2002 is used.
sources — Sources of content for the items
type — item type:
- profiles — profile settings
- messages — list of messages received from the SmartTUBE SDP
- services — managing subscriptions and services
- languages — UI language settings
- player — TV/VoD player settings
- devices — managing devices linked to the account
- appPrivacyPolicy — text of the Application Privacy Policy
- about — information about the application
- logout — logout from the current account
Movies/Series Page
The Movies and Series catalog in the SmartTUBE iOS app are configured using the vod.json and series.json files respectively. The format of both files is the same.
These files includes two sections:
- “quickFilter” — allows you to customize the Quick filters panel;
- “feeds” — allows you to customize the Default layout of the page.
Configuring the Quick Filter Panel
Along with standard filters (genre, year, country, etc.) the SmartTUBE iOS app allows you to configure custom filters — Quick filters. It makes sense to add frequently used, trending and interesting filters here.
For example, the “quickFilter” section could look like this:
{ |
title — quick filter name displayed
urlArgs — parameters of content filtering. You can combine several parameters using the & symbol (e.g. genreId=47239&text=christmas). Acceptable values:
- type — content type: movies or series
- genreId — list of genre IDs
- providerId — list of content provider IDs
- countryId — list of country IDs
- accessLevelId — ID of the access level of the active profile
- genreALevelId — ID of the access level of the genre
- showcaseId — showcase ID
- sort — sorting the content by:
- name — the movie name
- rating — the Default order field on the movie/series details page in the SmartTUBE Admin Console
- startDate — the date when the movie became available for rental (in ascending order)
- startDate desc (not a typo) — the date when the movie became available for rental (in descending order)
- newRelease_desc — the movie release date
- year — list of movie/series by production years. Examples of acceptable values: 2015 (one year), 2005,2007,2008 (several years), 2005-2015 (interval).
- text — text for searching in the Name, Description and Original name fields
- id — list of movie/series IDs
- serviceId