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হেডার ব্যবহার করুন, যাতে আবার চেষ্টা করলে দ্বিতীয় রেন্ডার তৈরি না হয়। statusযতক্ষণ নাcompletedহয়, ততক্ষণGET /v1/renders/{id}পোল করুন, তারপর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 আর প্লেলিস্ট মিডিয়া হিসেবে গ্রহণ করা হয় না।