TiviMini
IPTV player · iPhone · iPad · Apple TV · Android

Light, fast,
battery-friendly IPTV

Built on RustMedia, our own playback engine, with hardware-only video decoding. Load an m3u / txt playlist and tap to play. The Android app is just 3.3 MB.

  • iPhone · iPad
  • Android phones · tablets
  • Apple TV · Android TV
Channel list
Home · live previews
  • 0.26s

    From tap to moving picture

  • 10%

    App CPU while playing 1080i

  • 3.3MB

    Android download size

  • 12ms

    To parse a 20,000-channel playlist

Our own engine

RustMedia: a playback engine built for live streams

Streaming protocols, demuxing and bitstream handling are all written in Rust in-house, and iPhone, Apple TV and Android share the same code. No bundled FFmpeg: networking goes through the system stack, decoding runs on the chip's hardware decoder, and frames go straight to the screen.

  1. System network stackHTTP · TLS · proxy follow the OS
  2. Source detectionFormat from the URL and first bytes
  3. Protocols & demuxTS · FLV · HLS · RTMP · RTSP · multicast
  4. Bitstream prepParameter sets · keyframes · field pairing · timestamps
  5. Hardware decodeVideoToolbox · MediaCodec
  6. Straight to screenSystem layer compositing, no pixel copies

Light

The engine is about 1 MB with a single audio library dependency. The Android app is 3.3 MB; iPhone, iPad and Apple TV share one app.

One codebase, four platforms

Playlist parsing, demuxing, start-up strategy and catch-up rules live in the engine. Fix once, and every platform behaves the same.

Pure compute, no networking

The engine has no HTTP or TLS of its own. Proxies, certificates and HTTP/2 follow the system, which also saves power.

Solid

Every entry point is crash-guarded and every buffer for malformed streams is capped. 90 channel switches in a row: no memory growth, no crash.

Start-up speed

Tap, and it's moving

Joining a live stream means waiting for a keyframe. RustMedia shows the first keyframe immediately; if the buffer is short it plays at 0.92× while it catches up, with pitch-corrected audio, then returns to normal speed.

From tap to moving picture

TiviMini · RustMedia
264 ms
Typical player stack
1128 ms

App CPU during playback

TiviMini · RustMedia
10.1 %
Typical player stack
27.4 %
  • Connect on touchThe connection starts the moment your finger lands on a channel, so data is already flowing when the player opens.
  • FCC fast channel changeWorks with operator FCC servers (Telecom / ZTE / FiberHome and Huawei styles): playback starts from the latest keyframe and switches seamlessly from unicast to multicast.
  • Fast on tricky sources tooStreams without IDR frames start from an I-frame carrying parameter sets, and open-GOP leading frames are dropped. No smearing, no black screen.
  • 4K is fast tooA 4K H.265 Main10, 50 fps, 36 Mbps live stream shows its first picture in 0.35 s on a TV box.

Test setup: Snapdragon 8 Elite phone, Android 16, release build; 1080i H.264 multicast-over-HTTP source; connect-on-touch, median of 5 runs. The comparison is Media3 ExoPlayer on the same phone and source, also hardware-decode only. 4K figure from a Realtek-based TV box; playlist parsing timed in the engine alone.

Home screen previews

Live previews

Every channel, a live snapshot

The home screen tiles show a fresh frame from each channel, not a logo, so you can see what's on at a glance.

  • Only what you can seeOnly on-screen channels are captured. Nothing while you scroll fast; capture starts when you stop.
  • Stops at the first frameDisconnects at the first keyframe, decodes one frame in hardware and shrinks it. About 0.1–0.2 s each.
  • No repeat capturesSnapshots aren't refreshed automatically, saving data and battery. Refresh from the channel options any time.
  • Your data, your callCapture on Wi-Fi only, always, or turn previews off and show logos.

Protocols & formats

Common live sources, natively

No transcoding, no plug-ins. Everything below plays natively in RustMedia or the system player.

Streaming protocols

  • HTTP / HTTPS raw TS
  • HLS · TS segments
  • HLS · fMP4 / encrypted
  • HTTP-FLV
  • RTMP
  • RTMPS
  • Enhanced RTMP (H.265)
  • RTSP
  • RTSPS
  • RTSP over TCP
  • RTSP over UDP
  • MPEG-TS over RTP
  • UDP multicast
  • RTP multicast
  • SSM source-specific multicast
  • UDP unicast
  • FCC fast channel change
  • MP4 on demand

Relays & networking

  • udpxy
  • msd_lite
  • rtp2httpd
  • Operator IPTV networks
  • HTTP 302 redirects
  • RTSP redirects
  • Custom redirects
  • Per-host request headers

Video codecs

  • H.264 / AVC
  • H.265 / HEVC
  • 10-bit Main10
  • 4K · 50 / 60 fps
  • Interlaced 1080i
  • PAFF field coding
  • MBAFF

Audio codecs

  • AAC · ADTS
  • AAC · LATM / LOAS
  • AAC 5.1
  • MP2
  • MP3
  • AC3 (Dolby Digital)
  • E-AC3 (Dolby Digital Plus)
  • G.711 A-law / μ-law

Playlists & guides

  • m3u / m3u8
  • txt (with #genre# groups)
  • XMLTV guide
  • gzip guide
  • tvg-id · tvg-name · tvg-logo
  • Multiple lines per channel
  • Multiple playlists

Catch-up & auth

  • Catch-up default · append
  • shift · timeshift
  • flussonic
  • xc
  • vod
  • RTSP Basic / Digest auth
  • Custom User-Agent · Referer

What system players can't play, RustMedia can

  • MP2 audio inside HLS
  • H.265 in TS segments
  • TS segments disguised as images
  • Live streams without IDR frames
  • UDP-only RTSP servers
  • Huawei / ZTE-style RTSP

Video is hardware-decoded only. If a device has no hardware decoder for a codec (such as MPEG-2 or AVS2), TiviMini says so clearly instead of quietly falling back to software decoding and heating up your device.

Power

Battery life comes first

Hardware decoding only

Video goes to the chip's dedicated decoder; the CPU barely takes part.

Direct-to-screen video

Hardware layer compositing; zero UI redraws during playback.

No preloading

No connections to other channels in advance. In the background, CPU and network drop to zero.

Zero data when nothing changed

Playlists and guides ask the server first. Unchanged means no download, no parsing, no redraw.

Native UI

UIKit and Android system views, no cross-platform framework: quick to launch, light on memory.

Fewer wake-ups

Network data is batched for about 40 ms before reaching the engine, cutting network-thread CPU from 6.6% to 0.7%.

Apple's hardware decoders don't support interlaced H.264; that one case uses the system's built-in decoder, and the info panel says so.

Everywhere

Phone, tablet, TV — one experience

Each platform uses its native UI, designed around how you actually use it.

Apple TV · Android TV

tvOS 18 · Android 10 or later
  • Guide-first home with list and grid layouts
  • Full remote control and number-key zapping
  • Add sources and edit custom playback from your phone by QR code
  • Apple TV: motion-adaptive deinterlacing for 1080i, 25i to 50p
  • Apple TV: Dolby AC3 / E-AC3 output per system settings
  • Android TV: native multicast and FCC on IPTV networks
  • Android TV: Dolby audio fallback when the system lacks it
  • Android TV: one-tap in-app updates

Swipe for more screenshots

Apple TV · Android TV · Grid layout
Grid layout
Apple TV · Android TV · Channel list
Channel list
Apple TV · Android TV · Programme guide
Programme guide
Apple TV · Android TV · Full screen and zapping
Full screen and zapping
Apple TV · Android TV · Info panel
Info panel
Apple TV · Android TV · Catch-up
Catch-up
Apple TV · Android TV · Add from your phone
Add from your phone

Both share the same TV interface; screenshots taken on Apple TV.

iPhone · iPad

iOS / iPadOS 18 or later
  • Live preview tiles on the home screen
  • Swipe up or down to change channels
  • Picture in Picture
  • Programme guide and catch-up
  • Favourites, history, multiple playlists

Swipe for more screenshots

iPhone · iPad · Home · live previews
Home · live previews
iPhone · iPad · Home · list
Home · list
iPhone · iPad · Player
Player
iPhone · iPad · Programme guide
Programme guide
iPhone · iPad · Info panel
Info panel
iPhone · iPad · iPad home
iPad home
iPhone · iPad · iPad player
iPad player

Android phones · tablets

Android 10 or later
  • 3.3 MB download
  • Switch between RustMedia and ExoPlayer engines
  • Picture in Picture
  • Programme guide and catch-up
  • One-tap in-app updates

Swipe for more screenshots

Android phones · tablets · Home · live previews
Home · live previews
Android phones · tablets · Home · list
Home · list
Android phones · tablets · Player
Player
Android phones · tablets · Programme guide
Programme guide
Android phones · tablets · Info panel
Info panel

Channel names, logos and programme guides in the screenshots are fictional demo content.

More highlights

Everything you need, nothing you don't

Catch-up

Works with the common catch-up formats, 7 days by default. Scrub within a programme; the next one plays automatically.

Programme guide

Streaming XMLTV parser; channels matched automatically by tvg-id, name and common short names.

Custom playback

Rewrite redirects and set request headers per host, including *.domain and IP ranges. Misconfigurations can't loop forever.

Multiple lines

Channels with the same name merge into one with several lines. Switch in one tap; your choice is remembered.

Live previews

Only visible channels are captured, never while scrolling fast. Logos are cached at display size.

Update check on open

304s and content comparison mean no redraw when nothing changed, and no checks in the first 5 s of playback.

Info panel

Bitrate, resolution, frame rate, packet loss, decoder, and how long each start-up step took.

Three languages

Simplified Chinese, Traditional Chinese and English. Follows the system, or pick one yourself.

TiviMini is a player only. It doesn't provide any channels, programmes or playlists. Please use sources you're entitled to watch.