Media Library Management
The media library is where you manage all your learning materials. You can import video and audio files, organize them, and quickly find what you need.
Importing Media
Supported Formats
- Video formats: MP4, WebM, MOV, etc.
- Audio formats: MP3, WAV, OGG, etc.
Import Methods
- Click "Import" or "Upload" button
- Select files to import
- Wait for upload and processing to complete
- Files will appear in the media library
Browsing and Searching
Browsing Media
- Media library displays all media in grid or list view
- Sort by name, date, type, etc.
- Support pagination browsing
Search Function
- Use search box to quickly find media
- Search by title, tags, etc.
- Search results update in real-time
Media Management
Editing Information
- Click media card to edit title, description, etc.
- Add tags for categorization and searching
Deleting Media
- Select media and click delete button
- Deletion cannot be undone, please be careful
Playing Media
- Click media card or play button to start playback
- Player will automatically load subtitles (if available)
Cover Images
Enjoy generates cover thumbnails automatically so every video and audio has something to show in the library grid, the Continue Learning sidebar card, and the mini player bar.
What Gets a Cover
| Media source | Cover |
|---|---|
| Video imported from YouTube or another provider with a thumbnail URL | Provider thumbnail |
| Local video file (MP4, WebM, MOV, etc.) | JPEG frame extracted from the file |
| Local audio file with embedded artwork | Embedded artwork |
| Anything else | A generated cover, seeded from the media ID |
How Local Video Covers Work
When you import a local video, Enjoy decodes the file in the browser, seeks to about 10% of the duration, and captures a single frame as a JPEG (max width 320px, quality 0.85). The frame is stored in your local database alongside the video and reused wherever the video appears.
- Extraction runs once per video and is skipped if it has already been attempted.
- Frames are extracted lazily — when a video without a cover is rendered, Enjoy extracts one in the background and updates the card once it is ready.
- If extraction fails (unsupported codec, missing file handle, browser blocks decoding), the video falls back to a generated cover instead of a blank tile.
- Files are never uploaded to extract the frame. The whole pipeline runs locally.
Refreshing a Cover
Covers are generated from the file as-is. If you replace a file or want a different frame:
- Delete the video from the library.
- Re-import the file.
- Enjoy will treat it as new and capture a fresh frame.
Organizing Media
- Use tags to categorize media
- Create favorites to save frequently used content
- Filter by language, difficulty, etc.