Repository navigation
Technical Storage
Audience: developers and advanced administrators. Baseline reviewed: 2026-10-29.
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 |
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.
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.
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.
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.
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.
Start
Install and update
- Install on Ubuntu 24.04 or 26.04
- Installation Setup Page
- Scheduler cron job (required)
- Set up email
- Use HTTPS
- Own Encoder
- Docker
- Update AVideo
- Backup
- Secure file permissions
- Server command-line tools
- Hidden configuration options
Videos
- Upload a video
- Local Encoder (on your computer)
- Bulk upload by FTP
- Import a channel
- Publish on YouTube and social media
- Privacy options
- Only for logged-in users
- Resolutions by user group
- Storage options
- Move and protect video files
- Video does not play
Users
Live
- Make a live stream
- Stream with OBS
- Own live server
- One live server, many sites
- Live server install errors
- Live does not play
Plugins
Problems
Other
- Translate your site
- Write a plugin (developers)
- Technical reference (developers and advanced administrators)
Old and retired guides