Introduction
What does it do?
This extension delivers FAL videos as adaptive HLS streams. Videos are encoded asynchronously with ffmpeg in a Symfony Messenger worker. Until a stream is ready, and in browsers without JavaScript, the original file is delivered.
- Works with all output via
<f:/ themedia> Renderer, e.g. the Text & Media content element.Registry - Native HLS where available (Safari, iOS), otherwise hls.js (light build, loaded only when needed).
- Poster images from b13/poster-image are supported.
How it works
- Scan (
adaptive-, scheduled): finds supported FAL files with at least one active file reference that have no version for their current content (video: scan sys_) and encoding profile. For each it creates afile. sha1 pendingversion intx_and queues a message.adaptivevideo_ version - Worker (
messenger:): analyzes the source with ffprobe, encodes all renditions with ffmpeg into a working directory, validates the result, moves it toconsume adaptive_ video <artifactand marks the versionDirectory>/<file Uid>/<version Uid>/ ready. Then the page caches showing the file are flushed. - Rendering: the renderer delivers the newest
readyversion whose content fingerprint matches the current file. If the file was replaced, the original is delivered until the new version is ready.
Short videos (below minimum) and videos above the configured
limits are marked skipped and keep using the original. Errors mark a
version failed; there is no automatic retry.
A file is only processed once it is referenced, not on upload. References saved, copied or localized in the backend are queued right away by a DataHandler hook; everything else (imports, migrations, direct database changes) is picked up by the next scan.
Limitations
- Only output through
<f:/ themedia> Renderer. Templates with their ownRegistry <video>markup are not covered. - One active encoding profile for all sites.
- No automatic cleanup of old versions.
Screenshots
This extension has no backend module. It works through the frontend renderer, the CLI commands and the Messenger worker.