OTT Navigator

OTT Navigator FAQ

What is OTT Navigator?

OTT Navigator is a video player dedicated to work with streamed and vod content, usually provided by OTT/IPTV providers

Which IPTV service should I use, or which is used by the app?

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.

How can I contribute to the app development?


Installation

How to install

How to install on my Windows PC/Mac

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.

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.

Will the app work on my TV? Why not WebOS/Tizen?

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.

Cannot update to a newer version, or how to update to beta versions

The app development cycle goes in the following cycle:

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.


Provider (playlist) configuration

Which provider template should I choose?

What playlist formats are supported

Playlist setup

Your options are one of the following (it’s always preferred to use links over files):

Streams not playing (401, 403 or other 4xx and 5xx errors)

These 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.

Getting IP blocked by provider (or 403 error)

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:

EPG setup

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.

Want easier way to input characters on my Android TV device (from Phone)

Some of the control apps recommended to serve as a secondary output to your TV/box:

Fail to connect to the portal, however it works well in the other app


General issues

Part of the screen is being cut by my TV (fighting against overscan)

Some TVs are coming with overscan enabled in their configuration (especially for HDMI ports). Possible solutions (better to worse sorted):

Want to stream video from phone to my TV, how to do it?

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.

Having multiple providers, how to manage channels?

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)

My list of channels messed up when I added a new provider

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.

Time is shown incorrectly on EPG, how to fix that?

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:

After any of these changes you need to do manual EPG reload (settings - epg - reload) in order to apply the changes.

Want to use Studio mode (up to 9 videos at the same time) or Picture-in-Picture, but cannot find how to enable them

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:

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):

I want to use my own background wallpaper image

You can use any image service you like, here is a quick sample to get idea how to get link to the image:

How long does backup in a cloud available?

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

Auto-start on device reboot

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).

Cannot use local files for playlist, backup or other features

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.


Playback

Buffering way too much

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:

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.

Problems with video/audio playback

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)

Horizontal scrolling text is unreadable

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.

Audio track selection / Subtitles enabling

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.

Trying PiP / Studio Mode, but app says that connections limit reached

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.

Hostname … not verified / Chain validation failed / SSL error when trying to playback

This error means that your provider is using invalid SSL certificates (either self-signed or without a trusted root). Your solution might be:

The app does not see all audio tracks

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:

Playing DRM content and it’s not playing

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.

Experiencing ENOENT (FileNotFoundException) while trying to play a channel

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.

Cannot change volume on some channels

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:


Premium

How many devices does Premium allow

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.

Purchase premium on a Firestick (or other device without play market)

Unable to process purchase (Error DF-PDP-3)

Recently Play Market stopped processing purchases when the app was not installed from it. Install application from play market and payment should work.

Will the premium purchase work for Family Library?

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.

Currently subscribed to premium, willing to purchase via single payment forever

How to change subscription period

If you wish to change your subscription, like switching from 3 months to annual, you need:


Managing activations for multiple users (Partnership / Reseller)

I want to purchase a lot of premium access and provide them to some users (clients), acting like a dealer

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:

API to manage client subaccounts

In 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:

Backup directly to your server for you and/or your clients

Since 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);
?>

Re-branding / white-label app

Branded app with customizations

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)


Restricting functionality for users of the app

How to protect some content from other users (parental control)

There are multiple ways to achive this

Sharing same device between muktiple users

You 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.

Preparing devices for other users and wish to hide provider details

You can configure the app and then hide provider details.


Technical staff (playlist edit)


M3U Playlist file sample (brief info on supported tags)

#EXTM3U

Playlist header, marks playlist start
Supported attributes:

#EXTINF:0 tag1="value1" tag2="value2"...,Channel name

Channel declaration. Supported attributes:

#EXTGRP: Category Name

Alias for group-title tag

#EXTHTTP:{..http tags..}

Simple way for passing extra http attrs (v1.6.6.9+):

#EXTVLCOPT:parameter="value"

Allows setting some custom parameters for the current channel (VLC compatibility tags):

#KODIPROP:parameter=value

Allows setting some custom parameters for the current channel (KODI compatibility tags). Supported parameter are:

The 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.

A basic M3U file format sample

#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

OTC playlist format

(1.6.9.3+) As a good alternative to m3u format you can also use otc format encoded in json.

OTC playlist format provider properties

OTC playlist format category properties

OTC playlist format channel properties

Simple OTC playlist sample

Check sample_file_otc.json


Media library file (json)

Preferable format for media library is OTV encoded in json.

Inner structure of the item (“info” field of movie/series/season/episodes)

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
}

Outer structure of the json file

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"
                }
            ]
        }
    ]
}
]

Technical headers in OTV format

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+).

full sample of json VOD libarary

Check sample_file_otv.json


Default app user-agent

User-Agent used by the app by default is OTT Navigator/VER (Linux;Android ANDVER; LOCALE; HASH) CODECINFO where:

Please note that this attribute might be modified by user, provider attributes in playlist or provider API (portal uses different agents)


More information

Changelog

Changes are published on Telegram or on web

OTT Navigator app Availability

Standalone version of the app

Aptoide

Google Play

Huawei AppGallery

Other stores where you can get OTT Navigator

Versions for old devices not longer supported

OttNav Companion for managing premium account, sub-accounts (for standalone builds)

Contacts