Acceptance checklist
Manual checks before enabling delivery in an environment. Automated tests cover the logic; this list covers real ffmpeg output, browsers and operation.
Use vendor/ to look up the
version and playlist URL of a test video.
Encoding
Run a scan and the worker with -vv and check each case with
adaptive-.
- Landscape video (e.g. 1920×1080):
ready, renditions up to the source size. - Portrait video (e.g. 1080×1920):
ready, player shows it upright and not stretched. - Video with rotation metadata (e.g. recorded on a phone): orientation as in the original.
- Video without audio track:
ready, plays without errors. - 60 fps source: output limited to the profile frame rate (30 fps by default).
- Source below 360p: one rendition in the source size.
- Video below
minimum:Duration skipped, original is delivered. - Defective or non-video file with a supported extension:
failedwith a readable message. - Working directory is empty after success and after failure.
Delivery
On a page with a ready video, page cache flushed:
- Markup contains
data-and the original asadaptive- video- src <source>. - Chrome, Firefox, Edge: stream plays via hls.js (requests to
master.andm3u8 .m4sin the network tab). - Safari macOS and iOS: stream plays natively.
- No CSP violations in the browser console.
- Quality adapts when throttling the network in the developer tools.
- With
preloadnoneormetadata, no segments are loaded before playing. - Autoplay videos start muted, without loading the original first.
- Poster from file metadata is shown.
- Without JavaScript the original plays.
- If the playlist is not reachable (e.g. blocked in the developer tools), the original plays.
- Files without ready version, short videos and unsupported formats are delivered unchanged.
Changes and operation
- New reference saved in the backend: the video is queued right away
(
adaptive-), the page shows the stream after encoding without flushing the cache manually.video: status - Copying or translating a content element with an unprocessed video queues it right away.
- Reference created outside the backend (e.g. import): the next scan queues the video.
- Replacing the file: the page shows the original right away, the stream again after the next scan and encoding.
delivery: all pages deliver the originals after flushing the page cache.Enabled = 0 - Site set setting
adaptive: the site delivers the originals.Video. enabled = false processing: the scan queues nothing, existing streams are still delivered.Enabled = 0 - Worker restart during an encoding: the version is processed again after
redeliver.Timeout adaptive-shows running, failed and (withvideo: status -v) skipped versions.- Deleting a failed version and scanning again queues the file again.
- Database and artifact directory copied to another environment: streams play there.