Об этом проекте
AetherEngine — это медиаплеерный движок для платформ Apple (iOS, tvOS, macOS, visionOS), распространяемый как Swift-пакет. Это встраиваемый движок, а не полноценный плеер: он предоставляет единственное представление (AetherPlayerView для UIKit/AppKit, AetherPlayerSurface для SwiftUI) плюс асинхронные методы, а элементы управления воспроизведением, меню и визуальный дизайн оставляет принимающему приложению. Аналитика не включена.
Архитектура: FFmpeg выполняет демультиплексирование, тогда как декодирование по возможности опирается на платформу. H.264, HEVC и AV1 с аппаратной поддержкой проходят через VideoToolbox; другие форматы (AV1 через dav1d, VP9/VP8, MPEG-2, VC-1, MPEG-4 Part 2 и другие) используют программное декодирование libavcodec. Хостируемый слой переключается для каждой сессии между AVPlayerLayer и AVSampleBufferDisplayLayer без необходимости знать об этом принимающему приложению.
Покрытие форматов включает контейнеры, такие как MKV, MP4, WebM, MPEG-TS, AVI, ASF/WMV, OGG и FLV, а также расшифрованные DVD-Video и Blu-ray ISO с выбором титла и главы. Поддержка HDR охватывает HDR10, HDR10+ (покадровый ST 2094-40), Dolby Vision (P5, P7 как single-layer 8.1, P8.1, P8.4, AV1 P10.x) и HLG. Аудио обрабатывает AAC, AC3, EAC3, FLAC, ALAC и многие другие, преобразуя неподдерживаемые кодеки в EAC3 5.1 или lossless FLAC; Dolby Atmos (EAC3+JOC) передаётся потоковым копированием по HDMI MAT, пространственному звуку AirPods и Bluetooth-маршрутам. Опция загрузки только аудио обеспечивает облегчённый конвейер с интеграцией системного Now-Playing.
Поддержка эфирного ТВ включает неограниченное живое воспроизведение с опциональным DVR-таймшифтом, прямой приём HLS с AES-128 clear-key и обработкой рекламных вставок SSAI. Субтитры охватывают текстовые форматы (SRT, ASS, SSA, VTT, mov_text), растровые форматы (PGS, DVB, DVD), отрисовываемые как CGImage, встроенные закрытые субтитры CEA-608 и DVB-телетекст, декодируемый через libzvbi с выбираемыми страницами субтитров. Внешние файлы субтитров рассматриваются как полноценные дорожки. Опциональные нативные представления WebVTT позволяют субтитрам сохраняться при Picture-in-Picture, AirPlay и на внешних дисплеях; растровые дорожки могут быть распознаны на устройстве через OCR в текстовые представления для этих контекстов.
Другие возможности включают FrameExtractor вне воспроизведения для миниатюр и покадрово точных снимков, опциональный аудиоперехват, выдающий декодированный PCM для транскрипции или распознавания звука, разбор метаданных, удобный для кэша поиск по просмотренному контенту, долгоживущее переподключающееся потоковое соединение с настраиваемой буферизацией, предварительный прогрев источника, поддержку Picture-in-Picture как на нативных, так и на программных путях, фоновое аудио на iOS, ресурсы SMB2/3 через опциональный продукт, пользовательские байтовые источники через протокол IOReader и оценку доверия TLS для каждого источника для медиасерверов с самоподписанными сертификатами или частными CA.
README также представляет сравнение с AVPlayer, VLCKit, libmpv и KSPlayer, а также результаты бенчмарков, измеренные на M1 MacBook Air с 4K HDR HEVC Matroska-файлами на 38 и 90 Мбит/с, с локального диска и по HTTP. Проект указывает, что стенд для бенчмарков поддерживается его автором, и ссылается на необработанные данные и методологию. Лицензия — LGPL-3.0 с исключением для App Store.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.