چرا برای اتاق مجازی لحظهنگار از بیگبلوباتن استفاده کردیم؟
یکی از تغییرات اساسی محصول لحظهنگار در سال کرونا، اضافه کردن سرویس ویدیو کنفرانس بود. ما بعد از چند سال تجربه در حوزهی استریمینگ و ویدیوی آنلاین، نیاز به وجود یک سرویس چندطرفه برای برگزاری رویدادهای کاملا آنلاین و کلاسهای درس را احساس کردیم و تصمیم گرفتیم نسخهی اولیهی آن را هرچه سریعتر راهاندازی کنیم.
وقتی برنامهنویسان با تصمیمی برای راهاندازی یک سرویس جدید روبرو میشوند، اولین کارشان جستجو و یافتن راهحلهای پیشین است. چنانچه آن راهحلها پاسخگو باشند، بصرفهترین کار این است که از آنها استفاده شود و اگر پاسخگو نباشند، به سراغ تولید و توسعهی آن سرویس میروند. ما هم بعد از بررسی تلاشهایی که پیش از این در صنعت ویدیوکنفرانس شده بود، به این نتیجه رسیدیم که فعلا بهترین کار این است که از یک نرمافزار اپنسورس استفاده کنیم تا هم سریعتر آن سرویس ارائه شود و هم بتوانیم به مرور آن را بهتر کنیم.
بعد از بررسیهای مختلف به دو سلوشن جیتسی (Jitsy) و بیگبلوباتن (BigBlueButton)رسیدیم. هر کدام از اینها مزایا و معایبی داشتند ولی از آنجایی که هدف ما بیش از «جلسهی مجازی» باشد، «کلاس مجازی» بود، تصمیم گرفتیم تا بیگبلوباتن را انتخاب کنیم. البته در همان بررسیهای اولیه مشخص بود که در برنامههای بلندمدتمان میبایست تولید و توسعهی نرمافزار اختصاصی خودمان را داشته باشیم. دقیقا مشابه محصول قبلیمان که یک موتور استریمینگ بود. در تجربهی قبلی هم ما در ابتدا از Wowza استفاده کرده بودیم و پس از مدتی که بازار و محصولمان به یک بلوغ نسبی رسید، موتور استریمینگ Negarbone را توسعه دادیم.
بیگبلوباتن دقیقا چیست؟
بیگ بلو باتن که اختصارا به آن به شکل BBB هم مینویسند یک نرمافزار متن باز تحت وب است که امکان برقراری ویدیو کنفرانس را فراهم میکند. این پروژه در سال ۲۰۰۷ در دانشگاهی در کانادا شکل گرفت و تاکنون با دهها آپدیت و تغییر در اختیار میلیونها استفادهکننده قرار گرفته است. توسعهدهندگان این نرمافزار میگویند بیگبلوباتن برای معلمان است. رویای آنها این است که معلمها بتوانند با این نرمافزار به خوبی با دانش آموزان خود از راه دور ارتباط برقرارکنند. چیزی که لحظهنگار هم در آن راستا حرکت میکند و به عنوان یکی از مشارکتکنندگان در این پروژه به توسعهی آن کمک کرده است. موضوع این مشارکت را در ادامه خواهیم گفت.
خوبیها و بدیهای بیگبلوباتن
آنهای که با بیگبلوباتن کار کردهاند در کنار بهرههایی که بردهاند، نارضایتیهایی هم داشتهاند. با تمام احترامی که برای توسعهدهندگان این سرویس قائلیم و آن را همینطور که هست ارزشمند میدانیم، باید گفت این سرویس یک انتخاب از میان انتخابهای بسیار محدود است و یک جاهایی ما ناچاریم که از این نرمافزار استفاده کنیم.
بیگبلوباتن از جهات مختلف قابل بررسی است. من میخواهم در اینجا تا حد ممکن عمیق شوم و با ذکر هر موردی که از بیگبلوباتن، راهحل خودمان را هم توضیح دهم. با من همراه شوید.
صدای بیگبلوباتن مطلوب نیست!
یکی از مهمترین اشکالاتی که به بیگبلوباتن وارد است، صدای آن است. ما راههای متعددی را برای رفع این مشکل امتحان کردیم تا بالاخره به این نتایج رسیدیم:
- سرور اختصاصی (Dedicated) با شبکهی ۱۰Mbps در کیفیت صدای بیگبلوباتن بسیار موثر است.
- کلاینت بیگبلوباتن نسبتا سنگین است و بار زیادی را به دیوایس کاربر تحمیل میکند. کسی که میخواهد صحبت کند از موبایل یا لپ تاپ ضعیف یا یک مرورگر نامناسب (مثل نسخههای قدیمی کروم یا اج) استفاده کند، به احتمال زیاد صدایی که ارسال میشود با خش و قطع و وصلی زیاد خواهد بود.
- بیگبلوباتن برای صدای خود از FreeSwitch استفاده میکند. این مساله نیز تا حدی به این مشکل مربوط میشود که عملا قابل تغییر نیست.
کدهای بیگبلوباتن شلخته است!
اگر فکر کردید بیگبلوباتن یک نرمافزار متن باز تر و تمیز است که میتوانید به راحتی آن را دستکاری کنید، پیشنهاد میکنیم سری به کدهای بیگبلوباتن بزنید. معماری این سیستم قدیمی است و کدها تا حد زیادی شلخته هستند. این هم راهحل خاصی ندارد جز این که اگر واقعا میخواهید تغییری در بیگبلوباتن ایجاد کنید و آن را شخصیسازی کنید، وقت زیادی بگذارید.
بیگبلوباتن ضبط خوبی ندارد!
یکی از امکاناتی که واقعا کلاسها و رویدادها به آن نیاز دارند ضبط باکیفیت است. برگزارکنندگان معمولا میخواهند بعد از رویدادشان یک فایل MP4 از برنامه خودشان داشته باشند تا بتوانند به راحتی در پلتفرمهای مختلف آپلود کنند و یا آن را آرشیو کنند. خود بیگبلوباتن یک سرویس ضبط دارد و به این صورت کار میکند که المانهای مختلف کلاس از جمله صدا و تصویر و چت و فایل ارائه و تخته سفید را جداگانه ذخیره و در هنگام اجرا هم همه آنها را در قالب HTML و تحت وب پلی میکند. این خیلی مطلوب برگزارکنندگان نیست چون معمولا میخواهند فایل ضبط شدهی رویدادشان را جاهای مختلف آپلود کنند و برای بینندگان هم مطلوب نیست چون هیچ چیز به راحتی پلی شدن فایل ویدیویی نیست. پس کاری که ما کردیم این بود که یک سرویس ضبط ابری برای بیگبلوباتن بنویسیم. به این صورت که دکمهای اضافه شده که برگزارکننده با فشردن آن (شروع ضبط) کل صفحه به همان صورتی که دیده میشود ضبط و بلافاصله بعد از رویداد به صورت hls جهت پخش آنلاین و MP4 برای دانلود در اختیارش قرار میگیرد.
شرکت در اتاق مجازی بدون صدا؟ دست بردار BBB!
یکی از تفاوتهای عمدهی بیگبلوباتن با بقیهی سرویسهای ویدیوکنفرانس معمول این است که بیگبلوباتن از دو راه برای انتقال صدا استفاده میکند. یکی کانالی برای ارائهکننده و دیگر کانالی که شنوندگان. این باعث شده که از جمله چیزهای اذیتکننده بیگبلوباتن این باشد که وقتی یک نفر میخواهد وارد اتاق مجازی شود، از او میپرسد میخواهی صحبت کنی یا فقط شنونده باشی؟ این سوال Foul است. درواقع در یک سرویس ویدیوکنفرانس درست، همه باید راحت و سریع وارد اتاق شده و هر زمان هر کسی خواست صحبت کند، بتواند با زدن دکمهی Unmute صحبت کند. (البته بعد از داشتن اجازهی صحبت کردن) این موضوع باعث میشود خیلیها دیر به اتاق وصل شوند یا با زدن دکمهی X که من نمیدانم چرا آنجا قرار دارد، اصلا به هیچ کدام از این دو حالت وصل نشود! یعنی نه بخواهد صحبت کند نه بخواهد بشنود! مگر داریم؟! کاری که ما کردیم این بود که حداقل آن دکمه X را برداشتیم. کار دیگهای از دستمان بر نمیآمد. الان حداقل افراد با صدا وصل میشوند به اتاقهای مجازی لحظهنگار و نمیخواهند یکبار بروند بیرون و بیایند تا صدایشان وصل شود.
نیاز به وبینار و کلاس در بیگبلوباتن با کاربران بیشتر!
یکی از نیازهایی که واقعا بیگبلوباتن راهکاری برایش ندارد این است که یک اتاق به تنهایی مقیاسپذیر نیست و بیش از یک تعداد محدود شرکتکنندهی همزمان را تحمل نمیکند. در این مورد زیاد صحبت شده است اما بگذارید خیالتان را راحت کنم. در بیگبلوباتن تازه اگر منابع خوبی اختصاص داده باشید و پیکربندی مناسبی کرده باشید، تا ۱۰۰ نفر به صورت همزمان با خیال راحت میتوانند در یک اتاق حضور پیدا کنند. البته که این عدد را با ترس و لرز تا ۲۰۰ نفر هم میتوان رساند ولی بیش از این واقعا شدنی نیست و میبینید که یا افراد مشکلات مختلفی پیدا میکنند یا کلا اتاق میرود روی هوا! پس بنابر این قید مقیاسپذیر کردن از این طریق را بزنید. اما راهکاری که لحظهنگار ارائه داده این است که ما آمدیم این سیستم را وصل کردیم به سیستم ویدیو استریمینگ خودمان. استریم به دلیل استفاده از تکنولوژی HLS و CDN عملا نامحدود بیننده را میتواند هندل کند با این تفاوت که اولا یک طرفه است و دوما چند ثانیه تاخیر دارد. این دو موضوع لطمهای به اصل ماجرا وارد نمیکند. چون معمولا در کلاسها و وبینارها اکثر افراد میخواهند بیننده باشند و نهایتا از طریق چت با سخنرانان ارتباط برقرار کنند. بنابر این راهکار مطلوب این است: کسانی که میخواهند صحبت کنند یا وبکمشان را روشن کنند مستقیما واحد اتاق بیگبلو شوند و دیگر افراد به لینک پخش زنده بروند. این امکان و امکانات دیگری که در این متن توضیح دادیم تماما روی پلتفرم لحظهنگار هماکنون قابل استفاده است.
نظرسنجی بیگبلوباتن با زبان فارسی مشکل دارد!
خود بیگ بلوباتن یعنی قسمت ارائه و چت و تخته سفید هیچ مشکلی با زبان عزیز فارسی ندارد. اما نظرسنجی آن دارد! آن هم مربوط به RTL بودن زبان فارسی است و این که بیگ بلو باتن نتیجهی نظرسنجی را از طریق SVG نمایش میدهد. همین باعث شده تا جواب بلی را با خیر جا به جا نشان دهد! و ببینید که چه افتضاحی به بار میآید وقتی در یک جلسهی مهم چنین نتیجهای داشته باشیم. ما این مشکل را حل کردهایم و از این طریق در توسعهی بیگبلوباتن هم کانتریبیوت کردهایم. غیر از این، در نسخهای که ما برای لحظهنگار استفاده میکنیم، نتیجهی نظرسنجی در قسمت چت هم نمایش داده میشود. بنابر این دیگر این مشکل را نخواهید دید.
پخش ویدیو داخل اتاق، معضل مضاعف!
معمولا غیر از آپلود و ارائهی اسلاید، برگزارکننده به آپلود و پخش صوت و ویدیو هم نیاز دارد. بیگ بلوباتن مورد اولی را خوب دارد اما مورد دومی را ندارد. این مشکل ایجاد میکند. هرچند میتوانید لینک ویدیو از یوتیوب یا توییچ بگذارید و پخش کنید اما برای مایی که مثلا یوتیوب برایمان فیلتر است چی؟ یا اگر ویدیو روی اینترنت نبود چی؟ راهکار ما برای حل موقت این موضوع این بوده که یک سرویس آپلود موقت ویدیو و فایل صوتی راهاندازی کنیم برای استفادهی محدود کاربران لحظهنگار. پس از آپلود آنها میتوانند لینک را با فرمت MP4 در بیگ بلو باتن پخش کنند.
سر و کله زدن با ارورهای رنگوارنگ بیگبلوباتن!
اولی که بیگبلوباتن را نصب میکنید با کلی ارور مواجه میشوید. البته طبیعی است و جای نگرانی نیست. برای هر کدام راهحلی وجود دارد ولی ممکن است کمی طول بکشد که بتوانید همهی آنها را فیکس کنید.
بالاخره از BigBlueButton استفاده کنیم؟
به نظر من قدیمی بودن بیگبلوباتن و تجاری نبودن آن باعث شده که یک سیستم بروز نباشد و همراه با تکنولوژی رشد نکند. من مهمترین مشکل بیگبلوباتن را این میدانم که خیلی وابسته به Client است و گویی بار زیادی را سمت دستگاه کاربر مدیریت میکند. این باعث میشود که در نهایت سرویسدهنده نتواند با تضمین قول یک تجربهی عالی را به همه بدهد. اما این را هم بدانید که در بیزینس فقط تکنولوژی نیست که تعیینکنندهی تصمیمات است. هزینه و زمان راهاندازی هم المانهای بسیار مهمی هستند. پس اگر میخواهید سریع یک سرویس ویدیوکنفرانس داشته باشید و هزینه برایتان مهم است، قطعا رفتن سراغ نمونههای آماده گزینهی عقلانی به حساب میآید. از بین آنها نیز بیگبلوباتن را میتوان به عنوان مشهورترین و شایدهم بهترین سرویس ویدیوکنفرانس برای کلاس مجازی به حساب آورد که هم رایگان است و هم جواب خودش را پس داده و مزایا و معایبش مشخص است.
حالا چگونه از بیگبلوباتن استفاده کنیم؟
شما میتوانید خودتان یک سرور تهیه و یک نسخه از بیگبلوباتن را به صورت رایگان بر روی آن نصب کنید. این کار نیاز به یکی دو روز زمان دارد اما پس از راهاندازی میبایست مرتب حواستان به نگهداری آن باشد. راهحل بهتر این است که شما از نسخه بیگبلوباتن لحظهنگاراستفاده کنید که بیگبلوباتن را برای زبان فارسی و کاربر ایرانی مناسبسازی کرده، آن را داکرایز و قابل اسکیلشدن کرده و با همان API خود بیگبلوباتن به صورت سرویس ارائه میدهد. این راهحل از نظر هزینه و زمان و کیفیت خدمات برای شما بهصرفه خواهد بود.
اگر شما هم تجربهای با بیگبلوباتن دارید، راهحلی برای بهتر کردن قسمتهای مختلف آن دارید یا مایلید از نسخهی بیگبلوباتن لحظهنگار بیشتر بدانید و استفاده کنید از طریق فرزاد ات لحظهنگار با من در ارتباط باشید.