About this project
AetherEngine is a media player engine for Apple platforms (iOS, tvOS, macOS, visionOS), distributed as a Swift package. It is an embeddable engine rather than a full player: it exposes a single view (AetherPlayerView for UIKit/AppKit, AetherPlayerSurface for SwiftUI) plus async methods, and leaves transport controls, menus and visual design to the host app. No analytics are included.
Architecture: FFmpeg handles demuxing, while decoding leans on the platform where possible. H.264, HEVC and hardware-capable AV1 go through VideoToolbox; other formats (AV1 via dav1d, VP9/VP8, MPEG-2, VC-1, MPEG-4 Part 2 and more) use libavcodec software decoding. The hosted layer is swapped per session between AVPlayerLayer and AVSampleBufferDisplayLayer without the host needing to know.
Format coverage includes containers such as MKV, MP4, WebM, MPEG-TS, AVI, ASF/WMV, OGG and FLV, plus decrypted DVD-Video and Blu-ray ISO with title and chapter selection. HDR support covers HDR10, HDR10+ (per-frame ST 2094-40), Dolby Vision (P5, P7 as single-layer 8.1, P8.1, P8.4, AV1 P10.x) and HLG. Audio handles AAC, AC3, EAC3, FLAC, ALAC and many others, bridging unsupported codecs to EAC3 5.1 or lossless FLAC; Dolby Atmos (EAC3+JOC) is stream-copied on HDMI MAT, AirPods spatial and Bluetooth routes. An audio-only load option provides a lean pipeline with system Now-Playing integration.
Live TV support includes unbounded live playback with optional DVR timeshift, direct HLS ingest with AES-128 clear-key and SSAI ad-pod handling. Subtitles cover text formats (SRT, ASS, SSA, VTT, mov_text), bitmap formats (PGS, DVB, DVD) rendered as CGImage, in-band CEA-608 closed captions, and DVB teletext decoded via libzvbi with selectable caption pages. External subtitle files are treated as first-class tracks. Optional native WebVTT renditions let subtitles survive Picture-in-Picture, AirPlay and external displays; bitmap tracks can be OCR-recognized on-device into text renditions for those contexts.
Other capabilities include an off-playback FrameExtractor for thumbnails and frame-accurate snapshots, an opt-in audio tap delivering decoded PCM for transcription or audio recognition, metadata parsing, cache-friendly seeking for watched content, a long-lived reconnecting streaming connection with configurable buffering, source prewarming, Picture-in-Picture support on both native and software paths, background audio on iOS, SMB2/3 shares via an optional product, custom byte sources through an IOReader protocol, and per-origin TLS trust evaluation for self-signed or private-CA media servers.
The README also presents a comparison with AVPlayer, VLCKit, libmpv and KSPlayer, and benchmark numbers measured on an M1 MacBook Air with 4K HDR HEVC Matroska files at 38 and 90 Mbit/s, from local disk and over HTTP. The project states the benchmark harness is maintained by its author and links to the raw data and methodology. Licensing is LGPL-3.0 with an App Store exception.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.