Llumi Cut · Nordic Byte

API ডকুমেন্টেশন

Llumi Cut একটি HTTP সার্ভিস। আপনি মিডিয়া আপলোড করেন, JSON টাইমলাইন পাঠান আর ফলাফল ডাউনলোড করেন। এই পেজে ফিল্ডগুলোর সারসংক্ষেপ আছে; সম্পূর্ণ, যাচাই করা স্কিমা প্রতিটি ইনস্টলেশনে /openapi.json-এ পাবেন।

অথেন্টিকেশন

প্রতিটি ইনস্টলেশনের নিজস্ব key আছে। প্রতিটি /v1 রুটে এটি পাঠান:

Authorization: Bearer <আপনার-key>

ধাপসমূহ

  1. প্রতিটি ফাইল POST /v1/assets?kind=image|video|audio দিয়ে আপলোড করুন, ফাইলটি বাইনারি বডিতে পাঠিয়ে। এটি {"id": "…"} ফেরত দেয়।
  2. এডিটটি POST /v1/renders দিয়ে, টাইমলাইন JSON হিসেবে পাঠিয়ে কিউতে দিন। Idempotency-Key হেডার ব্যবহার করুন, যাতে আবার চেষ্টা করলে দ্বিতীয় রেন্ডার তৈরি না হয়।
  3. 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=NN দিনের বেশি পুরোনো থেমে যাওয়া রেন্ডার মুছে ফেলে

টাইমলাইন

শুধু title, duration আর clips আবশ্যক। শটগুলোর দৈর্ঘ্যের যোগফল duration-এর সমান হতে হবে।

ফিল্ডমান
duration3–600 s
width · aspect640, 1280 বা 1920 (লম্বা দিক) · 16:9, 9:16, 1:1
fps24 বা 30
backgroundপাশের বারের রঙ, #RRGGBB
transition · transition_durationcut, fade, fadeblack, fadewhite, dissolve, slideleft, slideright, wipeleft, wiperight, smoothleft, smoothright, circleopen, circleclose · 0.1–2 s
image_motionnone, 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 দিলে মিউট)
fitcontain (বারসহ) বা cover (ক্রপ করে ভরায়)
freeze · motionপ্রথম ফ্রেম স্থির রাখে · Ken Burns মুভমেন্ট
effectsgrayscale, 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।

সীমা