প্রকল্প সম্পর্কে

Null Motion হলো একটি সেলফ-হোস্টেড ওয়েব অ্যাপ্লিকেশন, যা লম্বা ভিডিওকে ভার্টিক্যাল ক্লিপে এডিট করার জন্য ব্যবহৃত হয়। এটি বিরতি কেটে দেয়, শব্দে ক্যাপশন যোগ করে এবং টাইমলাইনে এডিট পর্যালোচনা করার সুযোগ দেয়। এর মূল বৈশিষ্ট্য হলো একটি প্রিভিউ পেজ, যেখানে উপরে একটি সম্পূর্ণ মোশন-গ্রাফিক্স বিজ্ঞাপন চলে এবং নিচে দেখানো হয় সেই বিজ্ঞাপন থেকে জন্ম নেওয়া সাধারণ সাদা-কালো HyperFrames ড্রাফট—প্রতিটি সেকশনের জন্য একটি ড্রাফট (Hook, Reveal, App, End card), সবই ফিল্মের সাথে ফ্রেম-বাই-ফ্রেম সিঙ্ক করা। ড্রাফটগুলোর ওপর একটি প্লেহেড চলে; সক্রিয় সেকশন কমলা আউটলাইন পায়, বাকিগুলো লুপ করে। এক ক্লিকে এক্সপোর্ট ফিল্ম ও ড্রাফটগুলোকে ফিল্মের অডিওসহ উচ্চ-বিটরেট MP4-তে রেন্ডার করে, WebCodecs ও mp4-muxer ব্যবহার করে, প্রতিটি ডিকোড করা ফ্রেম ধারণ করে—রিয়েল-টাইম রেকর্ডিং ছাড়াই, তাই কোনো ফ্রেম বাদ পড়ে না। রিপোতে তিনটি শোকেস রেফারেন্স রয়েছে (Infinite Global payments 0:30, SaaS Launch sequence 1:02, Motion study 08 0:03) এবং সেগুলোর ড্রাফট চালানোর জন্য প্রস্তুত। কুইক স্টার্টের জন্য শুধু Node.js 22+ প্রয়োজন; কোনো ডিপেন্ডেন্সি ইনস্টল করতে হয় না, কোনো কী লাগে না। এক্সপোর্টের জন্য Chrome বা Edge দরকার। ওয়ার্কফ্লো: scripts/plan-sections.mjs FFmpeg scene detection ব্যবহার করে রেফারেন্সগুলোকে প্রকৃত দৃশ্য পরিবর্তনের জায়গায় ৩–৮টি সেকশনে ভাগ করে; public/drafts.mjs একটি ছোট HyperFrames ইঞ্জিন, যেখানে প্রতিটি ড্রাফট হলো একটি ৬৪০×৩৬০ HTML দৃশ্য, যা একটি paused GSAP টাইমলাইনে চলে এবং beats (text, logo, phone, window, input, chat, cards, list, chart, cloud) দিয়ে বর্ণিত। প্লেব্যাক ফিল্মের ঘড়ি থেকে প্রতিটি ড্রাফটের টাইমলাইন চালায়। Python, FFmpeg ও ffprobe দিয়ে নিজের রেফারেন্স আনা যায়: scripts/import-motionclone.py দিয়ে ইমপোর্ট করুন, তারপর সেকশন প্ল্যান করুন। ইমপোর্ট করা মিডিয়া .local-media/ এবং public/references/ (Git-ignored) এ লোকাল থাকে এবং শোকেসের ওপর প্রাধান্য পায়। ইমপোর্টার নন-ডেস্ট্রাকটিভ, থাম্বনেইল এক্সট্রাক্ট করে, সোর্স ভিডিও লিংক করে, এবং সার্ভার byte ranges স্ট্রিম করে, তাই সিক করতে গেলে পুরো ভিডিও মেমোরিতে লোড হয় না। ঐচ্ছিক PORT ও HOST env ভেরিয়েবল বাইন্ড অ্যাড্রেস বদলায়। প্রজেক্ট লেআউট: public/demo.html, demo.mjs, demo.css (প্রিভিউ পেজ ও এক্সপোর্টার), public/drafts.mjs (ড্রাফট ইঞ্জিন), public/scraps.mjs (Interface রেফারেন্সের জন্য হাতে তৈরি ড্রাফট), public/editor.* (আগের launch editor, /editor-এ), showcase/ (তিনটি প্রকাশিত রেফারেন্স), scripts/ (import, sections, showcase, waveforms, checks), server.js ও media.js (স্ট্যাটিক সার্ভার, মিডিয়া স্ট্রিমিং, অডিও এক্সট্রাকশন), test/ (server, media, editor টেস্ট)। ডেভ কমান্ড: npm run dev (পরিবর্তনে রিস্টার্ট), npm run check (UI ফাইল চেক), npm test (node --test)। নোট: ব্রাউজার শুধু এই প্রজেক্টের নিজস্ব origin-এ কল করে; generation, rendering services ও Premiere সংযুক্ত নয়। ড্রাফটগুলো লেখা, AI-জেনারেটেড নয়। আগের launch editor (reference timeline, trimming, brand overlay) /editor-এ, এবং মূল Null Motion template gallery /index.html-এ। বান্ডল করা GSAP ও mp4-muxer তাদের লাইসেন্স ধরে রাখে (দেখুন THIRD_PARTY_NOTICES.md)। ব্র্যান্ড আর্টওয়ার্ক ও রেফারেন্স ফুটেজ তাদের নিজ নিজ মালিকের। প্রজেক্ট-ব্যাপী কোনো ওপেন-সোর্স লাইসেন্স নির্বাচন করা হয়নি।