API डॉक्यूमेंटेशन
Llumi Cut एक HTTP सेवा है। आप मीडिया अपलोड करते हैं, JSON टाइमलाइन भेजते हैं और नतीजा डाउनलोड करते हैं। यह पेज फ़ील्ड का सार देता है; पूरा, जाँचा हुआ स्कीमा हर इंस्टॉलेशन पर /openapi.json में है।
ऑथेंटिकेशन
हर इंस्टॉलेशन की अपनी key होती है। इसे हर /v1 रूट पर भेजें:
Authorization: Bearer <आपकी-key>प्रक्रिया
- हर फ़ाइल को
POST /v1/assets?kind=image|video|audioसे अपलोड करें, फ़ाइल को बाइनरी बॉडी में भेजें। यह{"id": "…"}लौटाता है। - एडिट को
POST /v1/rendersसे, टाइमलाइन को JSON के रूप में भेजकर कतार में डालें।Idempotency-Keyहेडर इस्तेमाल करें, ताकि दोबारा कोशिश करने पर दूसरा रेंडर न बने। GET /v1/renders/{id}को तब तक पोल करें जब तकstatusका मानcompletedन हो जाए, फिरresult.filesसे हर फ़ाइल डाउनलोड करें।
एंडपॉइंट
| मेथड | पाथ | यह क्या करता है |
|---|---|---|
| GET | /health | सेवा की स्थिति |
| POST | /v1/assets?kind=image|video|audio | बाइनरी फ़ाइल अपलोड करता है और उसकी ID लौटाता है |
| POST | /v1/renders | टाइमलाइन की जाँच करता है और उसे कतार में डालता है |
| GET | /v1/renders | पिछले 100 रेंडर |
| GET | /v1/renders/{id} | स्थिति, प्रगति, इवेंट और त्रुटियाँ |
| POST | /v1/renders/{id}/cancel | कतार में या चल रहे रेंडर को रद्द करता है |
| POST | /v1/renders/{id}/retry | रुके हुए रेंडर को दोबारा चलाता है |
| DELETE | /v1/renders/{id} | रुके हुए रेंडर और उसकी फ़ाइलें हटाता है |
| GET | /v1/renders/{id}/files/{name} | एक आउटपुट डाउनलोड करता है |
| POST | /v1/maintenance/purge?older_than_days=N | N दिन से पुराने रुके हुए रेंडर हटाता है |
टाइमलाइन
सिर्फ़ title, duration और clips ज़रूरी हैं। शॉट की अवधियों का जोड़ duration के बराबर होना चाहिए।
| फ़ील्ड | मान |
|---|---|
duration | 3–600 s |
width · aspect | 640, 1280 या 1920 (लंबी साइड) · 16:9, 9:16, 1:1 |
fps | 24 या 30 |
background | किनारे की पट्टियों का रंग, #RRGGBB |
transition · transition_duration | cut, fade, fadeblack, fadewhite, dissolve, slideleft, slideright, wipeleft, wiperight, smoothleft, smoothright, circleopen, circleclose · 0.1–2 s |
image_motion | none, zoom_in, zoom_out, pan_left, pan_right, auto |
fade_in · fade_out | पूरे वीडियो और उसकी आवाज़ का फ़ेड, 0–5 s |
audio_asset_id · pauses | वैकल्पिक मुख्य गाना और डिजिटल ख़ामोशी के दस तक विराम |
शॉट (clips[])
| फ़ील्ड | मान |
|---|---|
asset_id · duration | इमेज या वीडियो · 60 s तक |
trim_start · speed | सोर्स में शुरुआती सेकंड · 0.25–4 |
volume | क्लिप की अपनी आवाज़, 0–2 (0 पर म्यूट) |
fit | contain (पट्टियों के साथ) या cover (क्रॉप करके भरता है) |
freeze · motion | पहला फ़्रेम रोक देता है · Ken Burns मूवमेंट |
effects | grayscale, sepia, vintage, noir, warm, cool, blur, sharpen, vignette, invert, mirror, flip में से छह तक |
brightness · contrast · saturation | −0.5–0.5 · 0.3–2 · 0–3 |
transition · transition_duration | पिछले शॉट से ट्रांज़िशन |
साउंड (audio_tracks[])
asset_id, start, trim_start, duration, volume (0–2), fade_in, fade_out, loop और duck। duck: true वाला ट्रैक लगभग 10 dB धीमा हो जाता है जब गाना, कोई आवाज़ या किसी क्लिप की साउंड चल रही हो।
टाइटल (texts[])
text (पाँच लाइन तक), start, end, position (नौ पोज़िशन) या फ़्रेम के अंश के रूप में x/y, size, color, outline_color, outline, box, box_color, box_opacity, font, bold, italic और animation (none, fade, slide_up, slide_left, pop, typewriter)।
लेयर (overlays[])
asset_id (इमेज या वीडियो), start, end, position या x/y, width, height (दोनों देने पर बॉक्स भर जाता है: स्प्लिट स्क्रीन और ग्रिड), margin, opacity, trim_start, volume, fade, border और border_color।
सबटाइटल (captions[])
start, end और text। ये SRT और WebVTT में एक्सपोर्ट होते हैं और burn_subtitles: true होने पर तस्वीर में जोड़ दिए जाते हैं।
आउटपुट
video.mp4 (H.264 + AAC), audio.wav (अंतिम साउंडट्रैक), song.wav (सिर्फ़ मुख्य गाने के साथ), subtitles.srt, subtitles.vtt, qc.json (अवधि, रिज़ॉल्यूशन, साउंड सोर्स, चेतावनियाँ) और manifest.json।
सीमाएँ
- फ़ाइलें 250 MB तक, इमेज 8192 × 8192 तक और मीडिया 610 s तक।
- 150 शॉट, 20 ऑडियो ट्रैक, 20 लेयर, 100 टाइटल और 500 सबटाइटल तक।
- टाइटल, लेयर और सबटाइटल वीडियो के भीतर ही ख़त्म होने चाहिए। ट्रांज़िशन उन दोनों शॉट में से किसी के भी आधे से लंबा नहीं हो सकता जिन्हें वह जोड़ता है।
- डिस्क पाथ, URL और प्लेलिस्ट मीडिया के रूप में स्वीकार नहीं किए जाते।