Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/NuvioMedia/NuvioTV/llms.txt

Use this file to discover all available pages before exploring further.

NuvioTV’s playback settings control everything from which player engine is used to how streams are selected, how the next episode is triggered, and how the internal buffer manages memory. Settings are split across two surfaces: a simplified view in Essential mode (EssentialPlaybackSettingsContent) and the full expandable sections in Advanced mode (PlaybackSettingsSections).

Essential Playback

Manual/Auto stream selection, auto-play next episode, P2P toggle, preferred subtitle language, forced subtitles, preferred audio language, and decoder priority.

Advanced Playback

Player preference, internal engine selection, regex stream matching, frame-rate matching, buffer tuning, decoder priority, MPV settings, and more.

Player Preference

The first choice in every playback settings surface is how NuvioTV launches content. The PlayerPreference enum has three values:
ValueBehavior
INTERNALUses the built-in player (ExoPlayer or MPV)
EXTERNALHands the stream URL to a system player app
ASK_EVERY_TIMEShows a choice dialog on every stream launch
When the player preference is EXTERNAL, the app can optionally forward subtitle tracks and skip-segment data to compatible external players.

Internal Engine: ExoPlayer vs MPV

When PlayerPreference.INTERNAL is active, you can choose the underlying engine. This setting is Advanced mode only.
EngineStrengthsNotes
EXOPLAYERHardware decode, smooth playback for most content, Dolby Vision handling, tunneling supportDefault engine
MVP_PLAYER (MPV)Better subtitle rendering (especially ASS/SSA), broader codec support, configurable hardware decode modesRequires libass for full subtitle styling
AUTOApp selects the best engine per streamNot always predictable; use for experimentation

Auto-Switch on Error

When autoSwitchInternalPlayerOnError is enabled (PlaybackSettingsSections), the app automatically falls back to the other internal engine if the current one fails to open a stream. This is the PlayerRuntimeControllerEngineFailover behavior and is Advanced mode only.

Stream Auto-Play Mode

Stream auto-play controls what happens after stream resolution returns results. The StreamAutoPlayMode enum covers three behaviors:
StreamAutoPlayMode.MANUAL — the stream list is shown and the user selects a stream. This is the default for new installs and the only mode surfaced in Essential.
// EssentialPlaybackSettingsContent toggle
val next = if (current == StreamAutoPlayMode.MANUAL) {
    StreamAutoPlayMode.FIRST_STREAM
} else {
    StreamAutoPlayMode.MANUAL
}
viewModel.setStreamAutoPlayMode(next)

Auto-Play Next Episode

streamAutoPlayNextEpisodeEnabled enables automatic progression to the next episode in a series. When enabled, additional options become available (Advanced):
  • Binge group awareness (streamAutoPlayPreferBingeGroupForNextEpisode): prefers a stream from the same add-on/group that served the current episode.
  • Reuse binge group (streamAutoPlayReuseBingeGroup): re-uses the resolved binge group across episode transitions without re-querying.
  • Next episode threshold: how far into an episode the next-episode prompt appears. Configurable as either a percentage of runtime (NextEpisodeThresholdMode.PERCENT) or minutes before the end (NextEpisodeThresholdMode.MINUTES_BEFORE_END).
  • Still Watching prompt: after a configurable number of consecutive episodes (stillWatchingEpisodeThreshold, range 2–6), NuvioTV asks if you’re still watching before continuing.

P2P Streaming

P2P (torrent) streaming is disabled by default and requires explicit user consent before the first torrent stream is played. Even when the P2P settings row is not visited, the P2pConsentDialog is always shown on the first torrent stream attempt. Never enable this feature on behalf of a user without explicit interaction.
The TorrentSettings.p2pEnabled flag controls whether torrent-backed streams are resolved and played. In both Essential and Advanced mode:
  1. The P2P toggle is visible as a SettingsToggleRow.
  2. Toggling it on triggers P2pConsentDialog rather than immediately enabling the feature.
  3. Only after the user confirms consent in the dialog is viewModel.setP2pEnabled(true) called.
Advanced-only P2P options:
  • Hide torrent stats overlay (hideTorrentStats): suppresses the peer/speed HUD that appears during torrent playback.
  • Parallel connections (useParallelConnections, parallelConnectionCount, parallelChunkSizeMb): tunes how the torrent engine fetches pieces in parallel.

Loading and Player Overlays

These settings are Advanced mode only. Defaults are active in Essential.
SettingDefaultDescription
showPlayerLoadingStatusOnShows a loading status text during buffering
loadingOverlayEnabledOnShows a spinner overlay while the stream loads
pauseOverlayEnabledOnShows a content card/overlay when playback is paused
osdClockEnabledOnShows a clock in the player OSD

Skip Intro

skipIntroEnabled is on by default and controls whether the skip-intro button appears when a segment is detected via Anime-Skip. This setting is hidden in Essential (it stays enabled). Advanced users can disable it under Settings → Playback → General.

Frame-Rate and Resolution Matching

Advanced mode only. NuvioTV can switch the HDMI display mode to match the content frame rate and resolution, which is required for smooth 24 fps film playback on compatible Android TV hardware. FrameRateMatchingMode has three values:
ValueBehavior
OFFNo display mode switching
STARTSwitch display mode at playback start
START_STOPSwitch at start and restore original mode at stop
resolutionMatchingEnabled can be toggled independently to switch display resolution to match the stream. A warning is shown in the UI when the current device does not support resolution switching via the API even if resolutionMatchingEnabled is true (DisplayCapabilities.supportsResolutionSwitching). Advanced mode only. streamReuseLastLinkEnabled caches the resolved stream URL for a configurable number of hours (streamReuseLastLinkCacheHours). On subsequent play attempts for the same item, the cached URL is tried first, skipping stream resolution entirely.

Buffer and Network Settings

Advanced mode only. These settings tune the ExoPlayer buffer behavior and NuvioTV’s internal buffer engine. Memory usage is estimated and displayed in real time when any of these features are enabled.
SettingDescription
nuvioPerformanceModeEnabledNuvioTV-managed native memory mode; auto-sizes buffer to device capability
bufferEngineEnabledEnables the custom buffer engine with manual target size
bufferBudgetManagedLets the app manage the buffer budget within a safe device limit
bufferSettings.targetBufferSizeMbManual target buffer size in MB
bufferSettings.minBufferMsMinimum buffer before playback starts (ms)
bufferSettings.maxBufferMsMaximum buffer maintained during playback (ms)
bufferSettings.bufferForPlaybackMsBuffer required to start playback after initial load (ms)
bufferSettings.bufferForPlaybackAfterRebufferMsBuffer required to resume after a rebuffer event (ms)
bufferSettings.backBufferDurationMsDuration of back-buffer retained for backward seeking (ms)
allowLargeTargetBufferAllows target size above the default safe limit
parallelNetworkEnabledEnables parallel HTTP fetch connections
enableHttp2Enables HTTP/2 for compatible CDNs
vodCacheEnabledEnables an on-disk VOD cache for repeated seeks
vodCacheSizeMode / vodCacheSizeMbCache size mode and manual size cap
A Reset buffer settings to defaults action and a Reset network settings to defaults action are available at the bottom of the buffer/network section.

Essential Mode Surface

In Essential mode, EssentialPlaybackSettingsContent renders two groups. Player preference is not surfaced here — it is an Advanced-mode setting. Playback Basics
  • Stream selection (Manual ↔ Auto-play first result toggle)
  • Auto-play next episode toggle
  • P2P streaming toggle (with consent gate)
Subtitles and Audio
  • Preferred subtitle language
  • Use forced subtitles toggle
  • Preferred audio language
  • Decoder priority
All other settings listed on this page are hidden until the user switches to Advanced mode.

Advanced Mode Surface

In Advanced mode, PlaybackSettingsSections renders the full settings as collapsible sections:
  1. General — player preference, loading/pause overlays, OSD clock, skip intro, still watching, parental guide
  2. Frame-Rate Matching — AFR mode, resolution matching (with device capability detection)
  3. Auto-Skip — per-segment type toggles (intro, outro, recap, filler, etc.)
  4. Stream Selection — auto-play mode, source scope, allowlists, regex, timeout, next episode threshold, reuse last link
  5. Audio & Video — preferred/secondary languages, decoder priority, skip silence, audio delay, tunneling, optical passthrough, downmix, Dolby Vision P7 handling, HDR10+ SEI strip, MPV hardware decode
  6. Subtitles — preferred/secondary language, startup mode, size, offset, bold, colors, outline, libass, render type
  7. P2P — enable toggle, hide stats toggle
  8. Buffer & Network — all buffer and network tuning options listed above

Build docs developers (and LLMs) love