مدیابانی؛ پردازش ویدیو و صدا مستقیم توی مرورگر
خلاصهٔ کاملتر
تیم Mediabunny این کتابخونه رو یه جعبهابزار کامل مدیا برای وب معرفی میکنه: خوندن، ساختن و تبدیل فایلهای ویدیویی و صوتی، همه مستقیم توی مرورگر. حرف اصلیشون اینه که این ابزار از اول برای وب ساخته شده، نه اینکه از دنیای دسکتاپ به وب پورت شده باشه. نصبش هم فقط یه npm install mediabunny هست.
برای خوندن، Mediabunny اجازه میده فقط همون بخشی از فایل که لازم داری بارگذاری شه — مدتزمان، رزولوشن، چرخش، ترکها، کدکها و بقیهٔ متادیتا، یا حتی یه فریم از وسط ویدیو، بدون اینکه کل فایل خونده شه:
const input = new Input({
source: new UrlSource('./bigbuckbunny.mp4'),
formats: ALL_FORMATS, // .mp4, .webm, .wav, ...
});
const duration = await input.computeDuration();
const videoTrack = await input.getPrimaryVideoTrack();سمت خروجی هم میشه فایل تازه ساخت یا با Conversion API یه فایل رو به فرمت دیگه تبدیل کرد؛ ترنسماکسینگ، ترنسکدینگ، تغییر اندازه، چرخش، ریسمپل صدا و تریم همه پشتیبانی میشن:
const output = new Output({
format: new WebMOutputFormat(),
target: new StreamTarget(writableStream),
});
const conversion = await Conversion.init({ input, output });
await conversion.execute();توی بنچمارکهای خود پروژه، استخراج متادیتا با ۸۶۲ عملیات در ثانیه انجام شده، در برابر ۴۳.۵ برای mp4box.js و ۱.۸۳ برای ffmpeg.wasm. کل کتابخونه با TypeScript و بدون هیچ وابستگیای نوشته شده و tree-shakable هست، پس خوندن فایل wav فقط حدود ۵.۱ کیلوبایت به باندل اضافه میکنه و همهٔ قابلیتها روی هم ۶۹.۶ کیلوبایته. لایسنس هم MPL-2.0 هست، یعنی استفادهٔ تجاری و حتی کلوزسورس آزاده.
نکات کلیدی:
- خوندن، ساختن و تبدیل ویدیو و صدا کاملاً سمت کلاینت و بدون سرور
- استفاده از WebCodecs برای کدگذاری و کدگشایی با شتاب سختافزاری
- بدون وابستگی، ۱۰۰٪ TypeScript و tree-shakable
- پشتیبانی دوطرفه از فرمتها و کدکهای رایج مثل mp4، webm، wav و m3u8
- متنباز با لایسنس MPL-2.0




