Δημιουργία βίντεο και ήχου
Το Libre WebUI 0.18.0 επεκτείνει τη δημιουργία πέρα από εικόνες: plugin παρόχων δηλώνουν video/audio και όλα — εικόνες, video, speech, sound — αποθηκεύονται σε συλλογή ανά χρήστη.
Είναι διαθέσιμη σε κάθε πιστοποιημένο χρήστη και κάθε ανάγνωση, content fetch και διαγραφή περιορίζεται στον λογαριασμό.
Blocks δυνατοτήτων plugin
Κάθε media capability δηλώνεται χωριστά:
"capabilities": {
"image": { "endpoint": "...", "model_map": ["..."], "config": { ... } },
"tts": { "endpoint": "...", "model_map": ["..."], "config": { ... } },
"audio": { "endpoint": "...", "model_map": ["..."], "config": { ... } },
"video": { "endpoint": "...", "model_map": ["..."], "config": { ... } }
}
Κάθε block έχει endpoint, fallback model_map, προαιρετικό models_endpoint και
config για μεγέθη/aspect εικόνας, φωνές/formats, αναλύσεις, aspect και duration video.
Ο video πάροχος μπορεί να δηλώσει cancel_endpoint και cancel_method με prompt ID.
Το Libre δεν συμπεραίνει cancellation από γενικό endpoint.
Δύο audio capabilities καταλήγουν ως ήχος:
tts: κείμενο εκφωνείται με επιλεγμένη φωνή.audio: μοντέλο δημιουργεί ήχο από prompt.
Το OpenRouter (plugins/openrouter.json) είναι το μόνο bundled plugin με video και
audio. Με models_endpoint, η λίστα ανανεώνεται στον κανονικό κύκλο (βλ.
Μεταβλητές περιβάλλοντος); model_map μένει fallback.
Δημιουργία media
Ανοίξτε Imagine (/gallery). Υπάρχουν Generate, Video, Audio.
Speech και sound είναι synchronous: αίτημα, αποθήκευση, τελικό item. Cancel ακυρώνει browser και outbound αίτημα και δεν αποθηκεύει. Εικόνες ακολουθούν ίδιο contract.
Για accepted ComfyUI workflow, το Libre στέλνει cancel job και διαγραφή queue με prompt
ID και περιμένει έως 3 s. Δεν καλεί unscoped interrupt που μπορεί να σταματήσει άλλο
χρήστη. Τρέχον ComfyUI προσφέρει /api/jobs/:promptId/cancel. Παλιό release μπορεί να
αφαιρέσει pending queue item αλλά όχι να σταματήσει ασφαλώς running workflow· αναβαθμίστε.
TTS plugin μπορούν να δηλώνουν voice cloning. Το Audio δείχνει reference upload και ενδεχομένως ακριβή transcript. Το Libre επικυρώνει τύπο/μέγεθος, κρατά στη μνήμη και στέλνει μόνο στον επιλεγμένο πάροχο. Μόνο generated speech μπαίνει στη συλλογή.
Ο κλώνος μπορεί να αποθηκευτεί ως ονομασμένη φωνή για ίδιο plugin/model με ξεχωριστή συναίνεση. Η αρχική reference και transcript κρυπτογραφούνται σε προφίλ χρήστη, όχι η generated speech. Επιλογή/διαγραφή στο Settings → Text-to-Speech. Ο πάροχος λαμβάνει ξανά reference σε κάθε batch. Το προφίλ δένεται με approved routing· αν αλλάξει ο ορισμός ή endpoint, δημιουργήστε το ξανά. Χρησιμοποιείτε μόνο συναινετικές εγγραφές.
Τα voice profiles εξαιρούνται από γενικό export λόγω βιομετρικού υλικού. Για disaster
recovery αντιγράψτε κρυπτογραφημένη βάση και ENCRYPTION_KEY μαζί.
Κύκλος ζωής video job
Η δημιουργία είναι async. POST /api/media/video/generate επιστρέφει 202 και το job
περνά pending, in_progress, completed ή failed.
- Η υποβολή αποσυνδέεται από browser μετά validation και provider job ID αποθηκεύεται αμέσως, ακόμη αν κλείσει panel/network.
GET /api/media/video/jobsπαραθέτει μόνο handles χρήστη, έως 100 active όταν ανοίγει. Pending job ανοίγει ξανά μετά navigation, refresh ή disconnect.- Μόνιμο
media.video.resume.v1κάνει polling και download με κλειστό panel. Solo χρησιμοποιεί embedded worker, team external. Leases, bounded retry, actor revalidation και conditional completion επιτρέπουν reclaim χωρίς duplicate row/blob. Τα resume/GET endpoints μένουν boundaries και το UI μπορεί να poll. - Κλείσιμο ή Stop waiting ακυρώνει μόνο status/download transport. Cancel job εμφανίζεται μόνο με δηλωμένο job-ID endpoint και σε επιβεβαίωση αφαιρεί το handle.
- Backend κατεβάζει video με όριο 200 MB και χωρίς HTTP redirects και το αποθηκεύει.
- Η εγγραφή έχει plugin, model, options, status και κρυπτογραφημένο prompt. Terminal records άνω 30 ημερών καθαρίζονται· pending handles όχι.
- Completed στέλνει media-ready, failure media-failed, linked στη gallery, deduplicated και μέσω inbox/webhooks.
Επεξεργασία εικόνας και inpainting
Με edit-capable model, εικόνα αποκτά Edit image. Ο editor ζωγραφίζει mask: οι
βαμμένες περιοχές επαναδημιουργούνται, άθικτο canvas επεξεργάζεται όλη την εικόνα, και
μπορούν να προστεθούν references. Χρησιμοποιείται OpenAI-compatible multipart edits.
Plugin δηλώνει edit_endpoint και προαιρετικά supports_mask, max_reference_images,
edit_mime_types, max_edit_image_bytes.
Κάθε input ελέγχεται πριν φύγουν bytes: MIME, magic PNG/JPEG/WebP, όριο 10 MiB. Mask πρέπει PNG για alpha channel. Αποτελέσματα αποθηκεύουν provenance source item, count references και χρήση mask. Η μέτρηση είναι ίδια με generation.
Ενιαία συλλογή
Όλα τα media ταξινομούνται κατά χρόνο με filters All, Images, Videos,
Audio. Video/audio παίζουν inline, εικόνες lightbox και κάθε item κατεβαίνει ή
διαγράφεται. Admin μπορεί να ορίσει GALLERY_RETENTION_DAYS; scheduler διαγράφει παλιά
με ίδιο μόνιμο lifecycle. Unset κρατά μέχρι διαγραφή ιδιοκτήτη.
- Media κρυπτογραφούνται στη βάση κάτω από
DATA_DIR, όχι loose files. Backup βάση καιENCRYPTION_KEYμαζί. - API responses δεν embed payload, αλλά per-item URL.
- Content πρέπει να ταιριάζει MIME allowlist/τύπο, έως 200 MB, με
X-Content-Type-Options: nosniffκαι sandboxContent-Security-Policy.
Τα παλιά image endpoints και panel συνεχίζουν στην ίδια gallery.
Rate limits
| Λειτουργία | Όριο |
|---|---|
| Generation video/speech/sound | 10 ανά λεπτό |
| Video polling | 60 ανά λεπτό |
| Gallery list/content/delete | 120 ανά λεπτό |
Το UI poll 30 s είναι εντός budget.
Μέτρηση και ιδιωτικότητα
Οι κλήσεις μετρώνται στο Usage Analytics: plugin, model, status, duration, units. Prompt και content δεν γράφονται. Media και video prompt υπάρχουν μόνο σε κρυπτογραφημένες γραμμές χρήστη. Ο πάροχος λαμβάνει prompt και ισχύουν pricing, retention και content policies.