All features
Coming soonHopper Media Engine

Playback built to hop.

I built Hopper for a job most media players rarely face: join a scheduled program in the middle, switch to a very different file a few seconds later, seek, restart, reach the end, and be ready to do it all again.

Hopper Media Engine. Designed from the ground up for channel surfing.

Coming soon in beta

Hopper is ready for the next Bunny Ears TV beta and will reach beta testers soon.

Mid-program

starts at the scheduled position

because a live channel rarely begins at the opening frame

8 phases

in a full hardware test

including EOF, restart, timeline seeks, and stress seeks

One

Apple-managed A/V sync owner

for each native, remuxed, or decoded playback session

Broad formats for channel surfing

The format ambition of a dedicated player, rebuilt around the next channel.

Infuse is a useful format-support benchmark because Plex viewers expect a good player to handle the library they already have. I want Hopper to reach that same kind of breadth inside Bunny Ears TV, with the playback behavior a live channel needs from the start.

A traditional player can begin at zero and spend the next two hours on one file. Hopper normally joins a scheduled program in progress and may be asked to leave seconds later. That makes fast startup, stale-work rejection, display stability, seeking, EOF, restart, and clean retirement part of format support, not extras.

Join in progress

Start where the schedule is.

The first frame Hopper needs may be halfway through a program, not at its title card.

Move again

Protect the next channel.

Each tune has its own generation, so late video, audio, or errors from the old file cannot take over the new session.

Hold the display

Keep the screen available.

A player-owned display lock can suppress redundant SDR and HDR negotiations that would otherwise interrupt rapid surfing.

Infuse is made by Firecore. Bunny Ears TV is not affiliated with Firecore.

Probe first, then commit

Choose the route before the expensive work begins.

Hopper reads the whole file before decoding, checks the device and display, then commits to one eligible route. This avoids falling through multiple playback methods. If native presentation stalls, Hopper makes one controlled recovery.

1 · Inspect

Read the whole file.

ContainerMKV
VideoHEVC Main 10
AudioTrueHD 7.1
SubtitlesASS
OutputApple TV + display

2 · Route once

Choose before decoding.

NATIVE

Apple-native playback

REMUX

Lossless remux

HW

Hardware decode

SW

Software decode

DOLBY

Licensed Dolby handoff

AUDIO

Audio-only playback

Unsupported combinations stop clearly before playback begins.

3 · Keep in sync

One timing owner.

Whatever preparation the file needs, one Apple-managed timeline controls picture and sound. AirPods, HomePods, ARC, and HDMI stay inside Apple's audio routing and timing model.

Picture + sound

One synchronized session

Hopper inspects the complete file, selects one playback route, and presents picture and sound through one Apple-managed timeline.

What makes Hopper different

A codec check cannot protect the next channel.

Hopper treats routing, timing, display ownership, stale-work rejection, bounded recovery, and renderer evidence as parts of playback itself.

01

Channel changes are first-class

Hopper expects to join a program in progress, move again quickly, and retire the old channel without letting late work reach the new picture.

02

Evidence before decoding

The router probes the complete source and device capabilities before expensive decode work begins, then selects one eligible route or stops clearly.

03

One Apple-managed timeline

Every valid route gives picture and sound one Apple-managed sync owner instead of running competing clocks that can drift apart.

04

Every tune and seek gets a generation

Results from an older channel or seek are rejected before they can replace the picture or sound that belongs to the current request.

05

Display lock protects the surf

A player-owned display mode can remain stable across compatible SDR and HDR channel changes while redundant display negotiations are suppressed.

06

Recovery is bounded and remembered

If native playback freezes without presenting frames, one evidence-based repair can take over. The exact source is remembered so the same failed path is not repeated in that session.

07

Tracks stay independent, not unsynchronized

Audio tracks and rich subtitles can be replaced on their own timelines while the session keeps one authoritative playback clock.

08

Presentation is verified

Hopper checks that frames reach the renderer and audio reaches its renderer. A moving timer or decoded-frame count is not mistaken for playback.

Built for channel surfing

Most players settle into one file. Hopper is ready to leave it.

A channel rarely starts at the opening frame. Hopper joins at the scheduled point, then stays prepared for a seek, restart, natural EOF, or immediate retune into a different container, codec, frame rate, audio layout, subtitle format, or dynamic range.

Each tune and seek receives a new generation. Late frames, audio, errors, and completion callbacks from the old generation are discarded before they can touch the new channel.

When a chosen output mode is compatible, Hopper's player-owned display lock can carry it across channel changes and suppress redundant display writes. That reduces avoidable black-screen negotiations while surfing between SDR and HDR sources, then restores display ownership when playback ends.

Preserve, present, synchronize

Different preparation. One Apple-managed result.

Hopper preserves compressed media when Apple can present it, decodes only when the evidence calls for it, and gives the final picture and sound one timing owner.

Styled subtitles

Rich subtitles stay rich.

Embedded and external ASS and SSA subtitles can keep their styling, positioning, animation, karaoke effects, and vector drawings instead of being reduced to plain text.

Dolby Vision

Apple performs the Dolby work.

All Dolby Vision playback is handed to Apple's licensed player. Hopper can pass compatible media through directly or losslessly repackage the container without video transcoding, while Apple's player performs the licensed decoding, synchronization, and presentation.

Apple-managed sync

One timeline owns picture and sound.

AVPlayer owns native and remuxed sessions. Apple's sample-buffer render synchronizer owns Hopper's decoded sessions. That keeps AirPods, HomePods, ARC, and HDMI within Apple's audio routing and timing model instead of asking a second video clock to chase the sound.

Dolby licensing note

Dolby Vision and other licensed Dolby formats are handed to Apple's licensed player. Bunny Ears TV and Hopper do not decode them.

Format support

The formats Hopper plays.

These are the containers, video codecs, audio formats, subtitles, and display formats Hopper supports. Because one file can combine several of them, Hopper reads the whole file before choosing how to play it.

FILE

Containers and delivery

Matroska/MKV, WebM, MP4, M4V, MOV, M4A, AVI, MPEG transport stream, MPEG program stream, and HLS

VIDEO

Video

H.264/AVC, HEVC/H.265, AV1, VP9, MPEG-4 Part 2, VC-1, WMV3, MPEG-2 Video, and MPEG-1 Video

AUDIO

Audio

AAC and AAC-LATM, AC-3, E-AC-3/Dolby Digital Plus/JOC, ALAC, MP3, DTS core, DTS-HD MA, TrueHD, MP2, Opus, FLAC, Vorbis, PCM, Blu-ray PCM, and AC-4 on compatible Apple devices

SUBS

Subtitles and captions

SRT/SubRip, WebVTT, ASS, SSA, MOV text/TX3G, PGS, DVB subtitles, DVD/VobSub, XSub, CEA-608, CEA-708, and DVB Teletext

HDR

Dynamic range

SDR, HDR10, HLG, and Dolby Vision through Apple's licensed player

OUT

Audio output

Stereo, standard 5.1, and multichannel PCM through eight channels, depending on the device and output

Tested beyond the play button

A moving timer is not the same as a picture.

I have run hundreds of Apple hardware playback jobs across mixed video, audio, subtitle, and container combinations. A full job deliberately jumps through the file, presses EOF and restart behavior, checks real picture and sound presentation, and verifies that the session retires cleanly for the next channel.

01

Beginning and startup

The opening must present picture and sound smoothly. Later recovery cannot erase a stuttering start.

02

Sustained playback

Picture continuity, unexpected drops, sound, and playback smoothness are measured over time.

03

Near EOF and natural finish

Playback is pushed near the end and through a natural finish so final picture, sound, and EOF behavior are verified.

04

Timeline seeks

Seeks to one-third, one-half, and three-quarters must land with fresh renderer-backed picture and sound.

05

Six stress seeks

Alternating forward and backward landings pressure stale-frame rejection, clock ownership, and decoder recovery.

06

Restart

The same source must restart cleanly instead of inheriting EOF state, an old frame, or an exhausted decoder.

07

Renderer and audio evidence

Testing correlates presented video with audio-renderer activity, delivered format, smoothness, drops, CPU, and memory.

08

Clean retirement

The job is not finished until the session stops once, releases ownership, and leaves the next channel a clean start.

Quick answers

What Plex users ask about Hopper

Is Hopper an Infuse alternative for Plex on Apple TV?

Infuse is the format-support benchmark I want Hopper to meet for Plex media. Hopper's advantage is its different job: it is designed to join scheduled programs in progress, change files rapidly, seek and restart under pressure, protect the next channel from stale work, and keep the display stable while surfing.

What kinds of files can Hopper play?

Hopper supports the common and less-common containers, video codecs, audio formats, subtitles, and HDR formats listed on this page. It checks the complete file because an MKV or MP4 can contain many different combinations.

Does Hopper Direct Play every Plex file?

No. Plex first decides how to deliver a file using Direct Play, Direct Stream, or a transcode based on the server, connection, quality setting, media, and device. Hopper then decides how to play what it receives.

How does Hopper handle Dolby Vision?

All Dolby Vision playback is handed to Apple's licensed player. Hopper can pass compatible media through directly or losslessly repackage the container without video transcoding, while Apple's player performs the licensed Dolby decoding and presentation.

Why does Hopper use more than one playback route?

Different containers, codecs, profiles, subtitles, and Apple devices need different preparation. Hopper probes those facts first, then selects native AVPlayer, lossless remux, hardware decode, software decode, compressed Dolby handoff, audio-only playback, or an explicit unsupported result. Every valid route still ends with one Apple-managed audio/video timeline.

Does TrueHD or DTS-HD output Atmos or DTS:X?

Not when TrueHD or DTS-HD is converted to multichannel PCM. Hopper labels that delivered sound as PCM rather than Atmos or DTS:X.

Does Hopper support styled ASS and SSA subtitles?

Yes. Embedded and external ASS or SSA subtitles can keep their styling, positioning, animation, karaoke effects, and vector drawings instead of being reduced to plain text.

Does Hopper require Docker, IPTV setup, or another server?

No. Hopper is part of Bunny Ears TV itself and uses the Plex server you already maintain. It is not another scheduler, IPTV handoff, or server-management project.

When can I use Hopper?

Hopper is coming to a new Bunny Ears TV beta soon, followed by a wider release.

Something is already on

Channel surf your own library.

Bunny Ears TV turns your Plex library into a live lineup on Apple TV, iPhone, and iPad. The 26-channel Basic package is free, with no Docker, IPTV configuration, separate scheduling server, or ads added to your media.

Bunny Ears TV is available now. Hopper is coming in the next beta.