Skip to content

Technical Storage

Daniel Neto edited this page Oct 29, 2026 · 1 revision

Technical storage and media delivery

Audience: developers and advanced administrators. Baseline reviewed: 2026-10-29.

Distinguish the representations

A video has database metadata, a logical filename/path, physical media objects and playback/download URLs. These are related representations, not interchangeable strings. Use the existing Video/storage/plugin helpers to resolve them.

Backend Technical reference What to verify
Local media Core Video/file helpers in the source references Actual storage root, mount, file and generated URL
S3-compatible AWS_S3 Endpoint, bucket/key, object availability, access mode and generated URL
Backblaze B2 Blackblaze_B2 Object key, public/private path and authorized URL
FTP storage FTP_Storage Transfer destination and separately configured delivery address
AVideo Storage YPTStorage Transfer direction, real remote object and local placeholder
CDN CDN Origin, cached response, URL mapping and real backend object

Upload and completion hooks

Storage plugins can participate in onUploadIsDone, onEncoderNotifyIsDone, URL modification and file-delivery hooks. Trace the actual enabled plugin and hook implementation. A finished Encoder transfer can be followed by storage work before the final backend is ready.

Copying or moving one file does not necessarily move every resolution, audio variant, preview or HLS resource associated with a video. Use the backend's existing operations instead of constructing paths from assumptions.

HLS delivery

Validate master playlists, referenced variant playlists, segments and any encryption keys as one chain. Check relative URL resolution and the actual player's network requests. A 200 response can contain an HTML error page, a placeholder or an incomplete playlist.

The VideoHLS integration and live HLS paths have distinct lifecycles. Direct file access, watch-page visibility and download authorization are different layers. Inspect SecureVideosDirectory, xsendfile.php and the active rewrites when file-layer protection is relevant.

Local placeholders

YPTStorage can leave small local dummy files for remotely stored media. Test the actual stored object and backend URL before reporting those local files as corrupt. A comparison based only on local size or a local media probe can give the wrong result.

Rewrites and generated configuration

videos/.htaccess has multiple writers: the core security check and Scheduler watchdog use separate templates. A manual edit can be overwritten. Diagnose the active file and the generating templates together, preserving HLS/key/download behavior.

Diagnostic sequence

Identify the video's logical filename and backend, locate the real object, resolve the exact playback URL, inspect the response content, follow its dependencies, and test the player. Keep data-transfer failure, stale CDN content, authorization failure and media corruption as separate hypotheses.

Remote-backend and playback flows were not executed by documentation generation. Troubleshooting explains how to record evidence without exposing signed URLs or credentials.

Clone this wiki locally