OTT Navigator is a video player dedicated to work with streamed and vod content, usually provided by OTT/IPTV
providers
The app is just a player and neither has any content, nor can provide you any. In order to use it, you need having an IPTV provider and configuring it within the app.
There is no special version dedicated to be used on Windows PC or Mac, however, there is a solution to use the app with negligible side effects.
Windows Subsystem for Android
following one of these 2 instructions:
standalone OTT Navigator
app (check bottom of the FAQ)Please note, that hardware acceleration might not be available when using emulator on some devices, so you might need selecting software codecs to watch your content.
The app only works on Android, so if your TV is running Android TV / Google TV then it will run perfectly. We have investigated the tech and even did some proof-of-concept, but WebOS/Tizen are simply not powerful enough to make a really good app. It’s suitable for simple web pages that pretend to be apps, but lack real power to do complex under-the-hood tasks. So if you choose an LG/Samsung TV (the only 2 major vendors that do not use Android these days) - then it’s highly recommended to purchase an Android / AndroidTV / GoogleTV / Chromecast(2021+ model) / FireTV / etc box or stick to be attached.
The app development cycle goes in the following cycle:
standalone
version of the app)standalone
version of the app)So in order to use non-stable version of the app, you need to be using stanalone
version of the app (check the Availability
section in the bottom of the FAQ
), go to Settings > About > Update channel
and select alpha
or beta
, and then check for updates.
.../get.php?username=...&password=...&type=m3u_plus&output=...
most probably your choice is Xtream Codes template/stalker_portal/c/
then you should select either MAC or Stalker portalWebOS webtv
, Tizen nStream
, .xspf
, .tv
, SAT .txt
, etcYour options are one of the following (it’s always preferred to use links over files):
Dropbox -> Copy Link
dl=0
to dl=1
in the link (since by default it copies a link to the web page rather than to the file itself)iptv.local/playlist.m3u
and the app will auto-detect the playlistThese errors are returned from your provider (check manual), so in general you should refer to your provider for more details.
Sometimes it may mean that your provider requires some extra headers (like User-Agent
or Referrer
) in the requests that you should configure via playlist or via the app, sometimes it might mean that your provider sources are configured incorrectly or even your subscription to your provider’s services has been expired. Since it’s provider-specific, there cannot be generic solution for this, contact your provider for help.
These issues might be caused by different provider paranoid flood settings/connection restrictions that can affect access to service. Here are some recommendations if you experience such a problem:
settings - extended
; HLS support on xtream codes servers is quite poor)settings - lists - description
) and in general limit usage of picture-in-picture and studio modesettings - extended - android tv
)settings - extended - system
)You can check whatever EPG is provided and alive from your IPTV provider by navigating to Settings - EPG - Reload
, and watching the status of reload process (looking for the number of sources processed, each sources processing result).
If your provider has an EPG source but for some reason does not specify it in playlist, then it’s recommended to configure it in Settings - Provider - (your provider) - Parameters - EPG
.
This way the channels mapping will be searched by both channel names and tvg-id fields.
Since v1.6.9.4
app replaces following placeholdes to provider configuration, if founds them: ${token}
, ${login}
, ${password}
.
If you configure EPG source in Settings - EPG - User-provided
then matching by name is only used.
Some of the control apps recommended to serve as a secondary output to your TV/box:
device_id
or using some exact user-agent
.Wireshark
, start recordingstbemu
)cap
) to the support email of the app, providing details on your provider and connection. It will help investigating the specifics of your provider and will help adding support for it in the future.Some TVs are coming with overscan enabled in their configuration (especially for HDMI ports). Possible solutions (better to worse sorted):
settings - visual style - margins
, and set up a margin that matches your TV output.App supports 2 ways of sending a stream to a TV (when both are located in the same WiFi network). Both are not very reliable and cannot be used if your provider requires some DRM tags or specific attributes being passed in addition to the stream url. The options are:
Please note that due to limitations of your TV/Chromecast devices some streams cannot be sent - this includes streams that are encoded in mpeg-ts
, or when your provider requires passing extra http
tags to the stream (like user-agent
, referrer
, extra headers, etc). In this way it’s recommended to use external player like VLC
that can transcode mpeg-ts
streams to hls
that are usually playable on TV/Chromecast.
The app has many options on how to manage channels from multiple providers.
One the best that suits most use cases (when you need max channels from all providers and do not want to mess on them is):
If a playback issue will occur the app will automatically switch to the next source (eg folded channel). You can alternatively manually switch between sources. Note, that unless you manually switch the source of the exact channel, the default channel to be used will be the first one in the list if duplicate folding is disabled.
Note, that the app sorts providers alphabetically and applies a list of channels from these providers in the order, providers are. So if you have sorting mode by provider being set, naming a provider alphabetically before others will cause their channels be higher in the list.
Also quite popular is the quick provider switch option that adds a button on the main screen to enable/disable filters by a single/multiple provider you are currently interested in.
Other, less popular, but still valuable options are to disable category merging between different providers, so “Sports” from provider A will not be merged with “Sports” from provider B, creating different categories instead. Also you can enable showing provider name in the channel name (either as a prefix or as a suffix of a channel)
Providers are sorted and applied alphabetically. So if you had a provider named BBB
in the app and made modifications to the groups, channels, etc, and then added a provider named AAA
then some of the modifications will apply to the new provider AAA
, since the provider list (as being sorted alphabetically) is now AAA
, BBB
.
To preserve your metadata, ensure that new providers are AFTER the current ones. For example, you can add a prefix to the provider name like 1 BBB
, and 2 AAA
so alphabetically they will be 1 BBB
, 2 AAA
and channels/categories from the second provider will not be used for modifications made for the first one.
Almost always when you see incorrect time it’s incorrect device setting (selected incorrect timezone), so go to the device settings and setup the time and time zone that correctly matches your region.
If this does not help, here are some options available to you to make a virtual time shift:
Settings - Extended - System - Time shift (visual)
Settings - Extended - System - Time shift (system)
channel properties - EPG - time shift
provider properties - time shift
After any of these changes you need to do manual EPG reload (settings - epg - reload
) in order to apply the changes.
Studio and PiP mode requires you either having multiple providers, or having a provider that allows more than a single connection at the same time. App tries to detect number of connections via provider API, but sometimes might not be able to detect it correctly. To set a number of connections your provider allows manually:
Settings - Provider - (..your provider..) - Properties - Connections
After changing, your will have studio mode option available on the main screen, as well as PiP menu option available from a playback menu screen if these modules are not been disabled. To enable if you previously disabled (they are disabled by default on phones):
icon on home screen - Modules
and ensure that Studio and PiP modules are enabledlong tap any player menu icon
to check if the corresponding menu item has been enabled.You can use any image service you like, here is a quick sample to get idea how to get link to the image:
https://imgur.com/upload
and upload your imagehttps://imgur.com/a/SomeID
hamburger icon -> Get share links
Share Link
(will be something like https://imgur.com/SomeID
)The exact time may vary (depending on the load auto-cleanup may be done more or less frequently), but in any case it will be available 7 days at least. General service target range lies between 1 and 5 weeks. You can also store backup on your own server - check FAQ about it
You can enable the app to auto-start on non-phone device boot via Settings > Extended > Start on boot
.
However, the newer Android version is, the lower is the chance that this feature will work (though you should try, since it depends on your device firmware), since apps are limited when launching any visual screens from background by default.
However, you can enable allow background activity starts
checkbox in Developer Settings
(unlock them by going into your device settings, About > Build Number
and tap this option 7 times).
It is highly recommended not to work with local files. Recent Android versions greatly limited the app to work with files NOT created by the app, meaning that loading playlist from network and saving as a file, or using a backup after app reinstall is not available directly. While it is not problem when using a phone, since Android on phones has built-in file manager that allows browsing for file and getting access to it, it is still a problem on Android TV devices, since the firmware does NOT come with file browsing API, so there is no way besides rooting the device to access user-created files.
For the app we prefer features that works perfectly, that means that adding feature like backup to local file that will work in some cases (when clearing app data) but will not work in other cases (when reinstalling the app) - it is unsafe, since user is expecting the feature to work. So we prefer to hide such an option on devices that has limited access to files (like Android TV devices) instead of providing only a half-working feature.
So you should use different options - use cloud storage or services like m3u4u
for playlists, and cloud backup options, etc.
There might be multiple reasons for buffering - starting from poor Internet connection to some firmware specifics. Here comes a list of actions that usually helps if the cause is hardware/firmware, rather than the network issues, try one-by-one:
settings - player - network - buffer
)settings - player - codec - hardware quality
)settings - player - codec - amlogic
)If the solutions above did not resolve your issue, then it’s definitely a connectivity issue to your IPTV provider. You should contact him to fix the issue.
Since the streams of your provider can be different, your hardware used for playback has different capabilities and your device firmware has bugs, there is no best configuration. App comes with hardware decoders, software decoders, and support for external player, defaulting to software codecs in most cases as being less dependent on firmware bugs.
Please try using these settings in the suggested order and test which works best for you:
App remembers which codec was previously selected for channel and will reuse it in the future (unless disable this in settings)
When app is using hardware codecs it has no control whatever deinterlacing will happen or not - it’s fully dependant on your device firmware. In order to insist on deinterlacing you should switch the channel to use software codecs that uses one of 3 different deinterlacing algorithms depending on what software codecs quality is selected.
Sometimes hardware codecs are unable to detect different audio tracks availability (especially in some incorrect HLS streams) and may not support subtitles. In this scenario you can use player menu to switch to software codecs, so you will be able to select a different audio and subtitles track.
App tries to detect the number of connections your provider allows to protect you against ban by your provider. Some providers do not allow the detector to work so app defaults to a single connection in that case. You can override auto-detected connections limit yourself.
Go to Settings - Provider - (select your provider) - Parameters - Number of connections
.
Bear in mind, that you still can use multiple screens (PiP / Studio) using 1-connection providers, if you have a couple of them, since each provider is counted separately.
This error means that your provider is using invalid SSL certificates (either self-signed or without a trusted root). Your solution might be:
Settings -> difficulty -> expert
Settings -> extended -> system -> ignore invalid SSL
This usually means that your provider incorrectly encodes the stream (quite common when the provider is using HLS but actually sending all tracks in the same file while they should be split to different ones).
Best option would be to ask the provider to give instructions how to setup one of the following:
When it’s not possible, you can also try one of the following:
In order to play DRM-protected contents you need to pass the correct DRM keys and extra data in the playlist. Check the M3U playlist structure on clues how to setup it.
Please note, that DRM playback is only supported using hardware codecs - so using software VLC, system or external player has no way to pass these license data.
It is a provider issue meaning that master playlist for the stream contains a link for one of the tracks in invalid format - instead of providing full url to the file with the domain, path, etc, it just only gives the path that is considered a local (like /videos/12345/segment12345.mpg
) - of course, there is no such file on your current device.
Sometimes this might happen when you were experiencing network issues loading a provider, so you can also try to exit the app using exit button (or reboot the device) and try again. If it does not help, then the only solution is to contact your provider.
Some channels are using audio tracks that might not be supported by your TV box (like 5.1, 7.1). In this case the app passes the audio stream directly to your TV, since TVs usually supports such tracks. But as a side effect the volume can be only controlled using a TV remote. Possible solutions are:
You can use as many devices as you have purchased via OttNav Companion
or other methods to your ottnav account. Standard premium package on purchase allows to be used on 5 devices.
OttNav Companion
(check the link in the bottom of the FAQ)OttNav Companion
Add Device
button if it was not automatically addedRecently Play Market stopped processing purchases when the app was not installed from it. Install application from play market and payment should work.
No, family library only apply to paid apps. Free apps with in-app purchases are not eligible for this. You can still use the app on several devices that share the same account.
If you wish to change your subscription, like switching from 3 months to annual, you need:
You can purchase more slots for device when you need and can give some of the slots to different users. In order to do this:
OttNav Companion
(check bottom of the FAQ), register an account (if do not have ottnav account yet)standalone version
of the app (check bottom of the FAQ) and log in using generated credentialsOttNav Companion
, adding new subaccounts, deleting them, or changing the number of slots (devices) allowed for this client to use. Alternatively you can use API
to manage subaccountsIn addition to manual processing of client user accounts via OttNav Companion
you are also able to achieve the same actions via the API
making network requests to the server api.ott-nav.com:8080/account/
to these endpoints:
login
(POST
)
login
, pass
session
id and subaccountsaddsub
(GET
)
session
, name
(some meaningfull title for the subaccount), slots
(number of slots to give to this subaccount){"<login>": "<password>"}
with the data of newly created subaccountrmsubacc
(GET
)
session
, login
session
id and subaccountseditsubacc
(GET
)
session
, login
name
, pwd
, slots
session
id and subaccountsSince v1.6.7.3
the app supports specifying custom url for backup service. This endpoint is called with POST
data sent to it, so you can create script that stores backups for you or your clients on your hosting with your control. A very basic acceptor script in PHP
that saves backup to backup.nav
file would look like this:
<?php
$data = file_get_contents("php://input"); // get data from POST
$fp = fopen('backup.nav', 'w'); // creates a backup.nav file in the current directory storying the backup
fwrite($fp, $data);
fclose($fp);
?>
If interested in whitelabel package (custom logo, background, etc), then contact us via email ottnav.partners@gmail.com
or reach us on Telegram (contact @FlavusV
)
There are multiple ways to achive this
settings - extended - child mode
) allows to specify which exact channels are available and hides all the other contect (PIN-protected)settings - extended - restrict
) allows you to setup a PIN code and protect settings, provider info, or categories/channels, etc to be availableYou can setup different user profiles, and some user-specific history, settings and suggestions will be saved on a user base, like custom favorites, etc. You can also protect some of the user profiles via PIN code.
You can configure the app and then hide provider details.
settings - extended
, and long press the status line.#EXTM3U
Playlist header, marks playlist start
Supported attributes:
url-epg="http://path/to/epg/api/"
: prefix for getting channel epg for exact channel (not recommended)url-tvg="http://path/to/epg.xml.gz"
: path to EPG teleguide for the whole playlist (XmlTv
format that is either xml
or xml.gz
)url-logo="http://path/to/icons/root/"
: root for all channel icons (used if channel has icon specified without scheme://domain part)catchup=".."
: alias for catchup-type
catchup-type=".."
: specifies that there are archives for channels. Supported types:
default
- only replace variablesflussonic
, flussonic-hls
- flussonic (HLS)flussonic-ts
, fs
- flussonic (MPEG-TS)flussonic-dash
- flussonic (MPEG-DASH)shift
- ?utc=startUnix&lutc=nowUnix
archive
- ?archive=startUnix&archive_end=toUnix
xc
- xtream codesappend
- appending value specified in catchup-source attribute to the base channel urltimeshift
- timeshift=startUnix&timenow=nowUnix
catchup-time="10800"
: duration for archives being available (in seconds) (not recommended)catchup-days="3"
: duration for archives being available (in days)catchup-source="..."
: allows override path for archive playback (or append to the end of the url if catchup-type=”append” is set). Supported variables:
{key}
, ${token}
- user-configured token${start}
, {utc}
- show start (unix time){start_iso}
(v1.7.1.3+
) - show start time (ISO8601)${timestamp}
, {current_utc}
- current time (unix time){now_iso}
(v1.7.1.3+
) - current time (ISO8601)${end}
, {utcend}
(v1.6.9.3+
) - show end (unix time){end_iso}
(v1.7.1.3+
) - show end time (ISO8601)${login}
, ${password}
- user-configured login and password${duration}
- show duration (seconds)${durmin}
- show duration (minutes)${offset}
- delta from current time to show start (seconds)${start-year},${start-mon},${start-day},${start-hour},${start-min},${start-sec}
- show start date/time variables (v1.6.6.5+
)${end-year},${end-mon},${end-day},${end-hour},${end-min},${end-sec}
- show end date/time variables (v1.6.6.5+
)v1.7.1.5+
):
XX
can be specified in days (with suffix d
, like +1d
, -2d
, 5d
), hours (with suffix h
), minutes (with suffix m
), or seconds (with suffix s
). It will affect all time template variables in this url.max-conn="1"
: if your provider allows user opening more connections at the same time (like watching picture-in-picture) set number of connections herebilled-till="timestamp"
: unix time when user account will expire (will be displayed for user)billed-msg="some text"
: custom message regarding user account (might be balance or any other info to be shown)refresh="N"
: period of time when the playlist should be reloaded (v1.6.6.1+
), in hours (if below 24), in minutes (if < 300), or in seconds if a large value, for example: refresh=”3” means refreshing each 3 hours)refresh_at="20241231T23:59:59Z"
: exact datetime when the playlist should be reloaded (ISO6801
, v1.7.2.1+
)vod_library
: url to vod library in otv
,m3u
or xml
format (v1.7.0.1+
), can have multiple entries (comma-separated) (v1.7.1.1+
)#EXTINF:0 tag1="value1" tag2="value2"...,Channel name
Channel declaration. Supported attributes:
ch-number="27"
: default shortcut for channel when using remote keys switching channelgroup-title="Movies"
: category this channel belongs togroup-logo="http://url/to/image.png"
: category icon (v1.6.6.7+
)parent-code="0000"
: if set, marks a channel as restricted that should be hidden by default unless code entered (like adult)ch-id=".."
: channel id. used only with combination when url-epg or url-logo are set in playlist header (appended to the end of the base url)tvg-id="abc.yz"
: channel id in epg teleguide that was linked in the playlist header (or the one user has configured in the current provider properties)tvg-name="Original"
: original channel name (channel name as declared in epg teleguide), if differs from channel name specified in playlisttvg-logo="http://path/to/logo.jpg"
: link to channel logo (or file name that should be appended to root url set in url-logo in playlist header)tvg-rec="1"
: marker that channel contains archives (0 - off, 1 - on). not needed if catchup* attribute is present (values more than 1 are parsed like aliases for catchup-days=”n”)catchup*
: all catchup settings that are explained in header can be overridden here on channel leveltype="playlist"
, content-type="playlist"
: allows to merge another playlist inside the current one. Url specified for this ‘channel’ is treated as includetype="movie"
, type="series"
: use any of these 2 markers to mark that the channel listed is not a channel, but actually a movie or a series, and should be treated as such, and should be placed to media libraryadult="1"
: marker that channel is adult (however it’s highly recommended to place all channels in single adult category for simpler user manage)tvg-shift="-2"
: marker specifying that epg data should be shifted by several hoursaudio-track="2"
: try to autoselect 2nd audio trackvideo-track="2"
: try to autoselect 2nd video track (v1.7.1.4+
)codec="auto"
: can specify which codec to use when playing this channel by default (if it is available) (v1.6.9.3+
). Can specify several codecs, separated by comma in order of priority. Supported values are auto
, hard
, exo1
, system
, soft_vlc
, and external
to open in external player#EXTGRP: Category Name
Alias for group-title
tag
#EXTHTTP:{..http tags..}
Simple way for passing extra http attrs (v1.6.6.9+
):
#EXTHTTP:{"User-Agent":"Chrome","SomeOtherTag":"SomeValue"}
#EXTVLCOPT:parameter="value"
Allows setting some custom parameters for the current channel (VLC
compatibility tags):
http-user-agent
(User-Agent)http-referrer
(HTTP referrer)#KODIPROP:parameter=value
Allows setting some custom parameters for the current channel (KODI
compatibility tags). Supported parameter
are:
inputstream.adaptive.license_type
(DRM type, can be one of the following):
inputstream.adaptive.license_key
(License key or URL depending on the DRM type; URLs should start from http://
or https://
, otherwise it’s a non-url key) and is considered being static
abc:def
, Example (multi keys): {"abc":"def","klm":"opq"}
inputstream.adaptive.license_data
base64
of default_kid
(v1.7.0.1+
)inputstream.adaptive.stream_headers
(extra headers, if required. For example param1=value1¶m2=value2¶m3=value3
) (v1.6.4.1+
)
Syntax is generally compatible with KODI inputStream.Adaptive plugin declared at xbmcThe app also accepts extra stream headers configured after |
character in license_key (v1.6.4.1+
)
#EXTATTRFROMURL:http://some/url/for/data.m3u
v1.6.9.2+
If you wish to hide some sensitive tags from the playlist itself, or wish some of these tags to be generated upon request (like DRM keys to match the content), then you can specify this attribute targeting to your server service. App will make a request to this url when user going to play this channel/vod entry.
App also supports if the whole response to this request will be BASE64
-encoded (v1.7.1.4+
).
If you need information about starting time of the show requested (if it is request for archived tv-show), then you can use {fromUnix}
template that will be replaced to utc
time (v1.7.1.6+
).
Sample response (if you choose to return response in m3u
format) from your service should look something like this:
#EXTINF:-1, Demo channel
#KODIPROP:inputstream.adaptive.license_key=...
#KODIPROP:inputstream.adaptive.license_type=...
http://example.com/channel/02
Please note, that the app will also use the url to the content that is returned from your response rather the one you have in your playlist.
#EXTM3U url-tvg="http://example.com/epg.xml.gz"
#EXTINF:-1 group-title="Music", Music 1
http://example.com/channel/01
#EXTINF:-1 group-title="Sports", Sports News
http://example.com/channel/02
(1.6.9.3+
) As a good alternative to m3u
format you can also use otc
format encoded in json
.
plain text
or BASE64
encoding (with no_padding
and no_wrap
flags).:xx
at the end of a key (check sample), where xx
is a 2-letter language code."base64": "name,url"
- specify field names (comma-separated) that are encoded with BASE64
. Defaults to none, can use *
to mark all string values."epg": "url/to/epg.xml.gz"
- url for xmltv
teleguide"archive_days": 3
- number of days of archived (catchup
) records are available"archive_type": "default"
- see catchup-type
in m3u
format description"refresh_minutes": 30
- how often to reload this playlist"refresh_at": "20241231T23:59:59Z"
: exact datetime when the playlist should be reloaded (ISO6801
, v1.7.2.1+
)"max_connections": 2
- maximal amount of connections for the user that is allowed to watch at the same time"billed_till": 214363576
- unix time when user account will expire (will be displayed for user)"user_message": "HI"
- custom message regarding user account (might be balance or any other info to be shown)"vod_library": "url/to/vods.otv"
: url to vod library in otv
,m3u
or xml
format (v1.7.0.1+
), can be array of strings to pass multiple values (v1.7.1.1+
)"name": "Sample Category"
- name"icon": "url/to/category/icon"
- icon of the category"adult": 1
- set to 1
or true
to mark this category as adult"type": ".."
- (v1.7.1.3+
) type of the category, changes icon and may add some extra related in-app features (movie
, child
, music
, news
, adult
, game
, radio
, edu
, foreign
)"category": "main"
- id of category declared earlier in this json"name": "Sample Channel"
- name"number": 123
- channel number"epg_id": "ch27"
- channel id in xmltv
teleguide that corresponds to the current channel"epg_name": "Correct Channel Name"
- if you fail to specify exact epg_id
you can also try to specify alias for the channel name to the one that you believe will have data in xmltv
teleguide"epg_shift": 2
- shift program from xmltv
teleguide by this amount of hours"icon": "url/to/icon
- channel icon"archive_days": 3
- number of days while archived shows are available"archive_source": "source/url/format"
- check catchup-source
in m3u
format description"user_agent": "Chrome.."
- allows to set custom HTTP User-Agent
"referrer": "some/url"
- allows to set custom HTTP Referrer
"drm_type": "widevine"
- check inputstream.adaptive.license_type
in m3u
format description"drm_key": "abc:xyz"
- check inputstream.adaptive.license_key
in m3u
format description"drm_url": "url/for/drm/provider"
- check inputstream.adaptive.license_key
in m3u
format description"drm_data"
: "..."
- base64
of default_kid
(v1.7.0.1+
)"headers": "..."
- check inputstream.adaptive.stream_headers
in m3u
format description"headers": {"header1":"value1"}
- check EXTHTTP
in m3u
format description (v1.7.1.4+
)"runtime_attr_url": "custom/url/for/getting/tags/at/runtime"
- in m3u
or OTC
(without base64) format channel data to patch some channel attributes before starting playback. More details available in EXTATTRFROMURL
in m3u
format description."url": "url/for/stream"
- url to the stream that should be played"codec": "auto"
- check codec
in m3u
format description"audio_track": "2"
: try to autoselect 2nd audio track (v1.7.1.4+
)"video-track": "2"
: try to autoselect 2nd video track (v1.7.1.4+
)"source-format": "..."
- specify stream format (v1.7.1.6+
), like ts
,hls
,dash
,ss
,rtsp
,rtp
,udp
Check sample_file_otc.json
Preferable format for media library is OTV
encoded in json
.
plain text
or BASE64
encoding (with no_padding
and no_wrap
flags) (v1.6.9.3+
).:xx
at the end of a key (check sample), where xx
is a 2-letter language code (v1.6.9.3+
).v1.6.6.9.5+
v1.6.6.9.5+
Sample:
"info": {
"poster": "http://poster/image.jpg",
"bg": "http://background/image.jpg",
"plot": "Something happens...",
"cast": [ "John Dow" , "Jane Dow" ],
"director": [ "Mr. Smith" ],
"country": [ "Zimbabve" ],
"rating": "5.5",
"year": 2019,
"genre": [ "drama", "history" ],
"added": 12354235,
"duration": 3600,
"adult": true,
"trailer": "HGH34ghgAU",
"backdrop": "http://video/image.jpg",
"ttl": 12354235
}
{"name":"MyCat","icon":"http:/..jpg"}
video
tag, you can also pass additional parameters (v1.6.6.7+
) like you do using m3u
format:
"drm": "..."
to pass drm type (like clearkey, widevine, etc)"drmkey": "..."
to pass drm key (for clearkey) or drm license url (you can use |
to pass additional headers to be only used for drm request)"drmdata"
: "..."
- base64
of default_kid
(v1.7.0.1+
)"headers": "header1=value1&header2=value2
to pass additional headers (will be passed both to drm request and video request) or JSON format {"User-Agent": "Chrome", "SomeOtherAttr": "SomeValue"}
(v1.6.6.9+
)"runtime_attr_url": "custom/url/for/getting/tags/at/runtime"
(v1.6.9.4+)
- in m3u
or OTC
(without base64) format data to patch attributes before starting playback. More details available in EXTATTRFROMURL
in m3u
format description."source-format": "..."
- check OTC
format for possible values (v1.7.1.6+
)Sample:
[
{
"name": "Test video",
"category": "Action",
"info": { ... },
"video": "http://video/file.mp4",
},
{
"name": "Test serial",
"category": "Drama",
"info": { ... },
"seasons": [
{
"season": 1,
"info": { ... },
"episodes": [
{
"episode": 1,
"name": "Intro",
"info": { ... },
"video": "http://episodes/file.mp4"
}
]
}
]
}
]
You can add non-video item to the list, that will not be added to the media library changing some aspects of parsing (v1.6.9.3+
).
{ "base64": "name,url" }
- specify field names (comma-separated) that are encoded with BASE64
. Defaults to none, can use *
to mark all string values.Check sample_file_otv.json
User-Agent used by the app by default is OTT Navigator/VER (Linux;Android ANDVER; LOCALE; HASH) CODECINFO
where:
VER
is app version like 1.6.8.3
ANDVER
is android versionLOCALE
(optional) is a language set in the appHASH
(optional) is installation identifier, should be quite unique between devices (may not always be passed), (v1.7.1.2+
: you can check hash in settings-extended, clicking on version number)CODECINFO
(optional) is information about the currently used codec for the channel (if it is a stream request), may contain something related for the codec used, for example when using hardware codecs will be something like ExoPlayerLib/2.15.1
Please note that this attribute might be modified by user, provider attributes in playlist or provider API (portal uses different agents)
Changes are published on Telegram or on web
OTT Navigator
app AvailabilityOttNav Companion
appDownloader
app is 982469
.stable
, beta
and alpha
update channelsOttNav Companion
)OttNav Companion
)Android 4.x
latest version is 1.6.4.4
google (downloader code 406893
).Android 5.x
latest version is 1.6.7.7
standalone (downloader code 345565
).OttNav Companion
for managing premium account, sub-accounts (for standalone builds)Android
purchase subscription, one-time, manage your account devices and subaccountsweb
manage your account devices and subaccountsAndroid
manage your account devices and subaccounts (no purchases)support@ott-nav.com
admin@ott-nav.com
ottnav.partners@gmail.com