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 gives you granular control over both subtitle rendering and audio output. Subtitle settings live in PlaybackSubtitleSettings.kt and are backed by the subtitleStyle object inside PlayerSettings. Audio settings live in PlaybackAudioSettings.kt. Both sections are accessible in Settings → Playback in Advanced mode; Essential mode surfaces a minimal subset for quick setup.

Subtitle Settings

Preferred Subtitle Language

Essential + Advanced. Selects the language NuvioTV tries to activate automatically when a stream loads. The value is a BCP-47 language code or the special string "none" to disable subtitles by default.Set via viewModel.setSubtitlePreferredLanguage(language). Displayed using AVAILABLE_SUBTITLE_LANGUAGES sorted by display name.

Secondary Subtitle Language

Advanced only. A fallback language used when the preferred language track is not available. Set via viewModel.setSubtitleSecondaryLanguage(language).

Forced Subtitles

Essential + Advanced. When useForcedSubtitles is enabled, only tracks flagged as forced (typically foreign-language segments) are shown automatically. Useful for watching content where subtitles appear only for non-primary-language dialogue.

Show Only Preferred Languages

Advanced only. When enabled (subtitleStyle.showOnlyPreferredLanguages), the subtitle selector in the player filters out tracks that do not match the preferred or secondary language. Useful for content with many subtitle tracks.

Subtitle Startup Mode

Advanced only. Controls which subtitle tracks are loaded and active when a stream starts. The AddonSubtitleStartupMode enum values are surfaced as a single-choice dialog:
// Values from AddonSubtitleStartupMode, displayed in PlaybackSubtitleSettings
subtitleStartupModeLabel(playerSettings.addonSubtitleStartupMode)
The default is All subtitles (loads all available tracks). Other modes restrict which tracks are fetched from add-ons at startup.

Subtitle Size

Advanced only. A percentage slider from 50% to 200% in steps of 10. Stored as subtitleStyle.size. Displayed in the player using the active renderer.
SliderSettingsItem(
    minValue = 50,
    maxValue = 200,
    step = 10,
    value = playerSettings.subtitleStyle.size
)

Subtitle Vertical Offset

Advanced only. Moves subtitles up or down relative to their default position. Range: −20 to +50, step 1. Stored as subtitleStyle.verticalOffset.

Subtitle Style: Colors, Bold, and Outline

Advanced only. These settings control the visual appearance of subtitle text:
SettingTypeDescription
subtitleStyle.textColorColor (ARGB)Foreground text color; supports transparency via alpha slider
subtitleStyle.backgroundColorColor (ARGB)Box background behind text; Transparent is a valid option
subtitleStyle.boldBooleanRenders subtitle text in bold weight
subtitleStyle.outlineEnabledBooleanEnables a colored outline around text characters
subtitleStyle.outlineColorColor (ARGB)Color of the outline when enabled
Available presets for text color include White, Light Grey, Yellow, Cyan, Green, Magenta, Red-Orange, Orange, and Light Green. Background presets include Transparent, Black, 50% Black, Dark Grey, and Medium Grey. Outline presets include Black, Dark Grey, Medium Grey, and White.

libass Subtitle Renderer

Advanced only.
libass is strongly recommended for anime content or any .ass/.ssa subtitle files. These formats use complex per-line positioning, karaoke effects, and custom fonts that the platform’s built-in subtitle renderer does not support correctly. Enable libass whenever subtitles appear misaligned or unstyled.
useLibass enables the native libass renderer, which is bundled with NuvioTV (not a system dependency). When enabled, a render type must also be selected:
LibassRenderTypeDescription
OVERLAY_OPEN_GLRenders subtitles via an OpenGL overlay; best performance on modern hardware
OVERLAY_CANVASRenders subtitles via a Canvas overlay; more compatible but may be slower
EFFECTS_OPEN_GLOpenGL-based effects renderer; supports advanced ASS effects and animations
EFFECTS_CANVASCanvas-based effects renderer; broader device compatibility for effects
CUESStandard platform cue renderer via libass; most compatible fallback
Set via:
viewModel.setUseLibass(enabled)
viewModel.setLibassRenderType(renderType)

Subtitle Timing Offset

Player UI (both modes). A per-session subtitle delay can be adjusted directly from the player’s subtitle side panel (SubtitleStyleSidePanel). This is a runtime offset and is not persisted to PlayerSettings unless the user saves it. The underlying delay configuration is managed by SubtitleDelayConfig.

Essential Mode Surface

In Essential mode, EssentialPlaybackSettingsContent shows a Subtitles and Audio group with the following rows:
  • Preferred subtitle language (opens LanguageSelectionDialog with a None option)
  • Use forced subtitles toggle
  • Preferred audio language (opens LanguageSelectionDialog with Default, Device, and Original options)
  • Decoder priority (opens DecoderPriorityDialog)
All other subtitle and audio settings on this page are hidden until the user switches to Advanced mode.

Advanced Mode Surface

In Advanced mode, PlaybackSettingsSections renders the full Subtitles and Audio & Video collapsible sections within PlaybackSettingsScreen. Both sections are collapsed by default and can be expanded independently. The player also exposes a SubtitleStyleSidePanel for live subtitle style adjustment without leaving playback.

Build docs developers (and LLMs) love