پردازش رسانه در مرورگر واقعاً چگونه کار میکند
سالها، ویرایش یک ویدیو یا تبدیل یک تصویر بهصورت آنلاین یعنی آپلود کردن فایل روی سرور شخص دیگری، انتظار کشیدن و دانلود کردن نتیجه. مرورگرهای امروزی دیگر چنین معاملهای را لازم ندارد. بهلطف مجموعهای از رابطهای بالغشده پلتفرم وب، یک صفحه وب اکنون میتواند رسانه را مستقیماً روی دستگاه شما، یعنی همان رایانهای که این صفحه را میخواند، رمزگشایی، تغییر و دوباره رمزگذاری کند. این راهنما به زبان ساده فناوریهایی را که این کار را ممکن میکند توضیح میدهد و نشان میدهد چگونه میتوانید خودتان محلی ماندن فایلهای خود را بررسی کنید.
«پردازش رسانه در مرورگر» دقیقاً یعنی چه؟
وقتی یک وبسایت رسانه را در مرورگر پردازش میکند، کار درون همان موتور ایزولهای اجرا میشود که صفحه را نمایش میدهد و از رابطهایی استفاده میکند که مرورگر شما از پیش دارد. فایل شما از دیسک به حافظه دستگاه خودتان خوانده میشود، همانجا تغییر میکند و دوباره بهصورت یک دانلود بیرون داده میشود، بدون هیچ رفتوبرگشتی با سرور برای خود فایل. صفحه همچنان کد و داراییهای خودش را از شبکه دریافت میکند، اما ویدیو، صدا، تصویر یا فایل PDF شما هرگز از رایانه شما خارج نمیشود.
چگونه WebAssembly کدکهای ویدیو را با سرعتی نزدیک به سرعت بومی اجرا میکند؟
WebAssembly (WASM) یک قالب دستورالعمل باینری فشرده است که مرورگرها آن را با سرعتی نزدیک به سرعت بومی اجرا میکند. کتابخانههای بالغی که به زبان C یا C++ نوشته شده است، مانند FFmpeg برای ویدیو یا یک رمزگذار تصویر، به WASM کامپایل و بهصورت ماژولی عرضه میشود که صفحه یک بار آن را دانلود میکند. منظور از ویدیوی WASM سمت کاربر همین است: همان محاسبات رمزگشایی و رمزگذاری که یک برنامه دسکتاپ انجام میدهد، درون محیط ایزوله مرورگر و روی پردازنده خودتان اجرا میشود. چون WASM از نظر حافظه ایمن و ایزوله است، میتواند یک فایل بزرگ را پردازش کند بدون آنکه به بقیه سیستم شما دسترسی پیدا کند.
رابط WebCodecs چیست و چرا میتواند سریعتر از WASM بهتنهایی باشد؟
WebCodecs رابطی جدیدتر در مرورگر است که کدکهای صوتی و ویدیویی داخلی دستگاه را، که اغلب شتاب سختافزاری دارد، مستقیماً در اختیار جاوااسکریپت میگذارد. صفحه بهجای عرضه یک کدک به شکل WASM، فریمهای خام را به رمزگذار یا رمزگشایی میسپارد که سیستمعامل از پیش فراهم کرده است؛ این روش میتواند بهمراتب سریعتر و کممصرفتر برای باتری باشد. پشتیبانی هنوز بسته به مرورگر و فرمت متفاوت است، بنابراین ابزارهای خوشساخت هرجا WebCodecs در دسترس باشد از آن استفاده میکند و در غیر این صورت به سراغ نسخه WASM میرود. در هر دو حالت، خود رسانه روی دستگاه شما میماند.
رابط Canvas و رندر PDF چگونه با تصاویر کار میکند؟
Canvas API یک سطح پیکسلی قابل ترسیم در اختیار جاوااسکریپت میگذارد. برای تغییر اندازه، برش، چرخاندن، افزودن واترمارک یا تبدیل یک تصویر، ابزار آن را روی یک بوم خارج از صفحه میکشد، پیکسلها را تغییر میدهد و نتیجه را بهصورت یک فایل JPG، PNG یا WebP جدید بیرون میخواند. همین سطح است که صفحههای PDF را به تصویر تبدیل میکند و یک فریم از ویدیو را بهصورت عکس ثابت میگیرد. تمام این کارها محاسبات مستقیم پیکسلی روی دستگاه شماست و هیچ چیزی آپلود نمیشود.
رابط Web Audio چگونه صدا را بهصورت محلی پردازش میکند؟
Web Audio API گرافی از گرههای صوتی بههمپیوسته است، شامل منابع، فیلترها، بهره و تحلیلگرها، که به صفحه اجازه میدهد صدا را در حافظه رمزگشایی، برش، بازنمونهبرداری و دوباره رمزگذاری کند. برش یک کلیپ یا استخراج مسیر صوتی از یک ویدیو بهطور کامل از طریق همین گراف و روی دستگاه شما اجرا میشود. در ترکیب با یک رمزگذار WASM، میتواند خروجی MP3، WAV یا فرمتهای دیگر بنویسد، بدون آنکه ضبط شما هرگز به سروری برسد.
MediaRecorder و Web Workers چه چیزی اضافه میکند؟
MediaRecorder یک جریان زنده را ضبط میکند، مانند صفحه، دوربین یا میکروفون شما، و همانطور که ضبط پیش میرود آن را به یک فایل قابل دانلود رمزگذاری میکند؛ دقیقاً همان کاری که ضبط صفحه در مرورگر انجام میدهد. Web Workers کارهای سنگین را روی یک ریسه پسزمینه اجرا میکند تا رمزگذاری یا تبدیل، صفحه را قفل نکند و زبانه در طول یک خروجی طولانی پاسخگو بماند. این رابطها در کنار هم به مرورگر اجازه میدهد مانند یک ایستگاه کاری کوچک و محلی رسانه رفتار کند.
چگونه ثابت کنم فایلهایم هرگز از دستگاهم خارج نمیشود؟
ابزار DevTools مرورگر خود را باز کنید، به زبانه Network بروید و یک فایل را پردازش کنید؛ خواهید دید که کد و داراییهای خودِ صفحه دریافت میشود، اما هیچ درخواستی رسانه شما را آپلود نمیکند. تنها استثنای عمدی، ابزار تبدیل گفتار به متن است که در نخستین استفاده یک بار مدل تشخیص گفتار را دانلود و ذخیره میکند تا تبدیلهای بعدی آفلاین هم اجرا شود؛ آن دانلود خودِ مدل هوش مصنوعی است، نه صدای شما. این یک ادعای ابطالپذیر است که میتوانید خودتان بررسی کنید و دقیقاً به همین دلیل ابزارهای با اولویت حریم خصوصی اینگونه ساخته میشود.
ابزارهای مرتبط
پرسشهای متداول
- آیا پردازش در مرورگر یعنی فایلهای من هرگز آپلود نمیشود؟
- بله. فایلهای رسانهای شما در حافظه دستگاه خودتان خوانده و تغییر داده میشود و بهصورت یک دانلود در اختیار شما قرار میگیرد؛ بنابراین هرگز به سرور فرستاده نمیشود. خود صفحه همچنان کد و داراییهایش را از شبکه دریافت میکند، که برای هر وبسایتی عادی است؛ تفاوت در این است که فایل شما بخشی از آن ترافیک نیست. میتوانید این را در زبانه Network ابزار DevTools مرورگر خود بررسی کنید.
- آیا ویدیوی WASM سمت کاربر بهخوبی یک برنامه دسکتاپ است؟
- برای بیشتر تبدیلها، فشردهسازیها و برشها از همان کتابخانههای پایهای استفاده میکند که برنامههای دسکتاپ به آنها تکیه دارد، مانند FFmpeg؛ بنابراین کیفیت خروجی قابل مقایسه است. تفاوت اصلی در سرعت و حافظه است: یک زبانه مرورگر فضای کمتری از یک برنامه بومی دارد، بنابراین فایلهای بسیار بزرگ یا بسیار طولانی کندتر پردازش میشود. ابزارهایی که از WebCodecs هم پشتیبانی میکند میتواند از شتاب سختافزاری بهره بگیرد و بخش زیادی از این فاصله را جبران کند.
- چرا ابزار تبدیل گفتار به متن باید چیزی دانلود کند؟
- تشخیص گفتار به یک مدل هوش مصنوعی نیاز دارد و آن مدل فقط یک بار در اولین استفاده در مرورگر شما دانلود و سپس ذخیره میشود. از آن پس، تبدیل گفتار به متن بهصورت محلی اجرا میشود و حتی آفلاین هم کار میکند. آنچه دانلود میشود وزنهای مدل است؛ ضبطهای صوتی شما همچنان هرگز آپلود نمیشود.
- آیا این ابزارها آفلاین کار میکند؟
- پس از اینکه صفحه و ماژولهای لازم دریافت شد، بیشتر پردازشها بدون اتصال اینترنت اجرا میشود، چون محاسبات روی دستگاه شما انجام میگیرد. ابزار تبدیل گفتار به متن پس از دریافت و ذخیره مدل خود، آفلاین کار میکند. یک بازدید تازه یا پاک کردن حافظه نهان، دوباره برای دریافت داراییهای صفحه به شبکه نیاز دارد.
- آیا مرورگر من برای فایلهای رسانهای بزرگ بهاندازه کافی قدرتمند است؟
- مرورگرهای امروزی میتواند فایلهای شگفتآور بزرگی را مدیریت کند، اما در محدوده حافظه اجرا میشود؛ بنابراین ویدیوهای بسیار بزرگ ممکن است کند پردازش شود یا نیاز به تقسیم داشته باشد. استفاده از مرورگر دسکتاپ با حافظه بیشتر، بستن سایر زبانههای سنگین و ترجیح دادن ابزارهایی که از WebCodecs استفاده میکند، همگی کمک میکند. اگر فایلی برای یک مرحله بیش از حد بزرگ باشد، برش زدن آن پیش از پردازش راهحلی عملی است.