Join in progress
Start where the schedule is.
The first frame Hopper needs may be halfway through a program, not at its title card.
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.

Coming soon in beta
Hopper is ready for the next Bunny Ears TV beta and will reach beta testers soon.
Mid-program
because a live channel rarely begins at the opening frame
8 phases
including EOF, restart, timeline seeks, and stress seeks
One
for each native, remuxed, or decoded playback session
Broad formats for channel surfing
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
The first frame Hopper needs may be halfway through a program, not at its title card.
Move again
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
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
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
2 · Route once
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
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
What makes Hopper different
Hopper treats routing, timing, display ownership, stale-work rejection, bounded recovery, and renderer evidence as parts of playback itself.
01
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
The router probes the complete source and device capabilities before expensive decode work begins, then selects one eligible route or stops clearly.
03
Every valid route gives picture and sound one Apple-managed sync owner instead of running competing clocks that can drift apart.
04
Results from an older channel or seek are rejected before they can replace the picture or sound that belongs to the current request.
05
A player-owned display mode can remain stable across compatible SDR and HDR channel changes while redundant display negotiations are suppressed.
06
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
Audio tracks and rich subtitles can be replaced on their own timelines while the session keeps one authoritative playback clock.
08
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
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
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
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
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
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
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
Matroska/MKV, WebM, MP4, M4V, MOV, M4A, AVI, MPEG transport stream, MPEG program stream, and HLS
VIDEO
H.264/AVC, HEVC/H.265, AV1, VP9, MPEG-4 Part 2, VC-1, WMV3, MPEG-2 Video, and MPEG-1 Video
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
SRT/SubRip, WebVTT, ASS, SSA, MOV text/TX3G, PGS, DVB subtitles, DVD/VobSub, XSub, CEA-608, CEA-708, and DVB Teletext
HDR
SDR, HDR10, HLG, and Dolby Vision through Apple's licensed player
OUT
Stereo, standard 5.1, and multichannel PCM through eight channels, depending on the device and output
Tested beyond the play button
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.
The opening must present picture and sound smoothly. Later recovery cannot erase a stuttering start.
Picture continuity, unexpected drops, sound, and playback smoothness are measured over time.
Playback is pushed near the end and through a natural finish so final picture, sound, and EOF behavior are verified.
Seeks to one-third, one-half, and three-quarters must land with fresh renderer-backed picture and sound.
Alternating forward and backward landings pressure stale-frame rejection, clock ownership, and decoder recovery.
The same source must restart cleanly instead of inheriting EOF state, an old frame, or an exhausted decoder.
Testing correlates presented video with audio-renderer activity, delivered format, smoothness, drops, CPU, and memory.
The job is not finished until the session stops once, releases ownership, and leaves the next channel a clean start.
Quick answers
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.
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.
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.
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.
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.
Not when TrueHD or DTS-HD is converted to multichannel PCM. Hopper labels that delivered sound as PCM rather than Atmos or DTS:X.
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.
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.
Hopper is coming to a new Bunny Ears TV beta soon, followed by a wider release.
Something is already on
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.