#سامانهی پخش زندهی ACM سامانهی پخش زندهی ACM که هماکنون در دانشگاه تهران استفاده میشود در سال ۱۳۹۳ راهاندازی شد. سعی شده است که مراحل راهاندازی و استفاده از این سامانه تا حد ممکن ساده سازی شود، اما همچنان دشواریهایی در این روند وجود دارد. در صورت نیاز میتوانید با ما در تماس باشید.
اگر عجله دارید میتوانید مستقیم به بخش راه اندازی سرور و یا آموزش استفاده از سرویس بروید.
##معماری کلی ACMLive سامانه از دو بخش کلی سرور و کلاینت تشکیل شده است که هر کدام بر اساس تکنولوژیهای مختلفی پیادهسازی شدهاند. قسمت کلاینت مسئول دریافت تصاویر از دوربینهای آنالوگ، دیجیتال و یا IPcamera و همچنین صدا از طریق فیش ورودی صدا است. کلاینت پس از میکس و پردازش ورودیهای مختلف آنها را برای سرور میفرستد. سرور با دریافت استریم ورودی آن را به چندین کیفیت متفاوت تبدیل [Transcode] میکند. سرور به صورت همزمان استریم را برای پخشهای بعدی و استفاده به صورت [VOD] ذخیره میکند. استریمهای ایجاد شده (کیفیتهای متفاوت استریم اولیه) به کمک یک ویدیو پلیر در مرروگر کاربران نهایی نمایش داده میشود.
##راهاندازی ###سرور سرور شامل بخشهای زیر است:
- پردازش
- سرور استریمینگ
- نرمافزارهای پردازش مولتیمدیا
- مدیریت
- نرمافزار مدیریت استریمها
- سرویسهای مونیتورینگ سرور
- پخش
- ویدیو پلیر
- وبسایت نمایش
####پردازش #####سرور استریمینگ برای پخش زنده پروتکلهای بسیاری وجود دارند که هر کدام گسترهی پشتیبانی (مرورگر - سیستمعامل) متفاوتی دارند. برخی از این پروتوکلها اطلاعات را به کمک HTTP منتقل می کنند و برخی دیگر با پروتوکلهای خاص خود. برخی از Adaptive Bit rate برای انتخاب کیفیت بهینه پشتیبانی میکنند.
برای مثال RTMP یکی از قدیمیترین و پر استفادهترین پروتکلهای استریمینگ بوده که با تکنولوژی Adobe Flash کار میکرده است. HLS که توسط Apple توسعه داده شده است و به خوبی بر روی iDeviceها و OS X پشتیبانی میشود. DASH پروتوکل جدیدی است که توسط کمیتهی مشترکی بین شرکتهای این حوزهی فناوری طراحی شده است تا مشکلات پروتکلهای قبلی را برطرف کند. هماکنون YouTube و Netflix از این پروتکل استفاده میکنند.
سرور استریمینگ مسئولیت دریافت استریم ورودی، ضبط آن، تغییر پروتکل (در صورت نیاز) و ایجاد استریم با کیفیتهای پایینتر و سِرو کردن کلاینتها را دارد.
گزینههای مختلفی به عنوان سرور وجود دارد. برخی از آنها همچون nginx-rtmp-module رایگان هستند. برخی از سرورها همچون Wowza به طور خاص برای این کار طراحی شدهاند.
سامانهی ACMLive از nginx قدرت می گیرد که برای راه اندازی آن میتوانید راهنمای OBS را ببینید و یا از Docker ما استفاده کنید.
برای تبدیل استریم و پروتکل از نرمافزارهایی همچون FFmpeg و MP4Box استفاده میشود. FFmpeg به عنوان آچارفرانسه در کارهای تبدیل و پردازش محتوای مولتی مدیا شناخته میشود. اما هنوز پشتیبانی خوبی از DASH ندارد.
ACM Live به FFmpeg نیاز دارد، اگر از docker استفاده نکردید آن را به کمک package maneger خود و یا به کمک سورس نصب کنید. #####نرمافزارهای پردازش مولتیمدیا باتوجه به استاندارد بودن تمامی ارتباطات، شما میتوانید از تمامی نرمافزارهایی که قابلیت ارسال فیلم با استفاده از پروتوکل RTMP را دارند استفاده کنید. پیشنهاد ما استفاده از نرمافزار Telestream Wirecast است. تمامی توضیحاتی که در ادامه این مستند داده میشود با فرض استفاده از این نرمافزار است. تمامی ورودیهای تصویر و صدا از منابع مختلف وارد این نرمافزار شده، سپس یک دور Encode شده و به سمت سرور ارسال میشود. باتوجه با این موضوع، کامپیوتری که این مسولیت را دارد باید قدرت پردازشی بالایی داشته باشد. حداقل سیستم موردنیاز برای اجرای این نرمافزار در این لینک آمده است. ####مدیریت #####نرمافزار مدیریت استریمها برای هر پخش زندهای در ابتدا باید آن پخش زنده در این نرمافزار تعریف شود.
نرمافزار فوق با زبان PHP و به کمک چارچوب Laravel نوشده شده است. برای آشنایی بیشتر و نحوه نصب آن به مخزن مربوطه مراجعه کنید.
پس از نصب نرمافزار فوق میتوانید از طریق آدرس http://<server>/admin/login
وارد پنل مدیریتی شوید.
برای ساخت استریم جدید، به قسمت کاربران لایو > افوزدن
مراجعه کنید. در این قسمت نام استریم را باید یک نام یکتا بگذارید. پس از مشخص کردن نام کاربری و رمزعبور و محدود کردن زمان استریم، میتوانید فایل تنظیمات را دانلود کنید. این فایل را برای شروع کار به همراه نام کاربری و رمزعبور برای فرد مورد نظر ارسال کنید.
توجه داشته باشید به دلایل امنیتی فایل تنظیمات فقط یکبار قابل دانلود میباشد. درصورتی که دوباره بخواهید دانلود کنید باید رمزعبور را تغییر دهید.
کاربر موردنظر پس از این مراحل میتواند با استفاده از این فایل تنظیمات و یا آدرس rtmp://<stream-server>/encoder/<stream-name>?username=<username>&password=<password>
اطلاعات ویدویی را به سرور ارسال کند.
پس از ساخت کاربر مربوطه، ۱ کد HTML به شما داده میشود که میتوانید با استفاده از این کد، پخش زنده را در وبسایت خود (به عنوان مثال CMS) داشته باشید. #####ابزارهای مونیتورینگ سرور یکی از ابزارهای مونیتورینگ سرور Munin است که به شما امکان مانیتور کردن منابع سرور را میدهد.
عملیات پردازش استریمها بسیار سنگین است و باید مطمئن شوید که سرور شما توانایی پشتیبانی از تعداد استریمهای ورودی و تعداد بازدیدکنندگان دلخواه شما را دارد. همچنین در صورت نیاز به load balancing اکثر سرورها توانایی push کردن یک استریم را بر روی دیگر سرورها دارند. پروتکلهای مبتنی بر http همچون dash از transparent caching پشتیبانی میکنند و می توان از کش سرورهای معمولی برای آنها استفاده کرد.
برای مونیتور کردن بازدیدکنندگان میتوانید از Google Analytics استفاده کنید.
####پخش پلیرهای مختلفی همچون JWPLAYER و hls.js و native html5 players و ... وجود دارند. نکتهی مهم در مورد این پلیرها پشتیبانی آنها از پروتکل مورد استفادهی شما (و adaptive bit rate) است. وضعیت پشتیبانی از DASH به مرور زمان در حال بهتر شدن است. HLS بر روی پلتفرمهای موبایل به صورت native پشتیبانی میشود. برخی پلیرها به شما قابلیت افزودن تبلیغات یا آمارگیری را هم میدهند. hls.js میتواند HLS را به کمک MediaSource Extensions بر روی پلتفرمهای دسکتاپ پخش کند.
سایت steaming media مقایسهای از پلیرها و قابلیتهای آنان را انجام داده است. (که ممکن است در طول زمان به روز نباشد. آخرین وضعیت پشتیبانی از تکنولوژیها و پروتکلهای مختلف را جستجو کنید.)
ما از hls.js استفاده کردیم. یکی از خوبیهای این کتابخانه این است که در صورتی که خود مرورگر از hls پشتیبانی کند (مثل سافاری) از خود مرورگر استفاده میکند، در غیر این صورت یک پلیر که با جاوااسکریپت نوشته شده است برای این منظور اجرا میکند.
پس از انتخاب پلیر، تنظیمات آن را برای پخش از آدرس زیر انجام دهید:
http://<streaming-server>/hls/<stream-name>.m3u8
###کلاینت کلاینت از بخشهای زیر تشکیل شده است:
- نرمافزار استریم
- دوربینها
- دوربینهای تحت شبکه
- سایر دوربینها
- صدا
- شبکه
####نرم افزارهای استریم. مشهورترین نرمافزار موجود Wirecast است که نسخهی رایگان آن به شدت محدود است. از گزینههای دیگه میتوان به OBS اشاره کرد. در این نرمافزار باید منبعهای ورودی صدا و تصویر را مشخص کرد. سپس با مشخص کردن آدرس سرور استریم آنها را پخش کرد.
####دوربینها انتخابهای زیادی به عنوان دوربین برای پخش زنده در اختیار دارید که به چند دسته مهم آنها اشاره میکنیم. #####دوربینهای تحت شبکه با این دوربینها پس از اتصال به شبکه به صورت بیسیم یا باسیم و گرفتن IP Address میتوانید از طریق پروتوکلهایی که ارایه میکنند در ارتباط باشید. این دوربینها معمولا از POE پشتیبانی میکنند. نکته مهم، پیدا کردن IP دوربین است که بسته به شرایط شبکه محیط میتواند راهحلهای متفاوتی داشته باشید. برای این کار، با انفورماتیک مجموعه تماس بگیرید.
به عنوان مثال دوربین D-Link DCS-3010 از طریق آدرس زیر قابل دسترسی است
rtsp://<CAMERA_IP_ADDRESS>/live1.sdp
در نرمافزار Wirecast میتوایند این نوع از دوربینها را در قسمت Web Stream اضافه کنید.
#####کارتهای کپچر این کارتها ارتباطهای مختلفی که از دوربینها به عنوان خروجی میآید را گرفته و به کامپیوتر از طریق کابلهای USB خروجی میدهند. نمونه این کارتهای کپچر BlackMagic Intensity Shuttle است. این کارتها پس از اتصال به کامپیوتر به صورت معمول توسط نرمافزارهای مالتیمدیا شامل Wirecast شناخته میشوند. #####موبایلها شما میتوانید از موبایلها نیز به عنوان دوربین استفاده کنید. کافیاست یکی از نرمافزارهای زیر را با توجه به سیستمعامل موبایل خود نصب کنید و موبایل را به شبکه بیسیم متصل کنید. بقیه مراحل مانند دوربینهای تحت شبکه است.
iOS Android Windows Phone
####صدا یکی از مشکلات این قسمت، هماهنگ بودن صدا با تصویر است. در نرمافزارهای مالتیمدیا، صدای تمامی دوربینها باید قطع شده و صدا فقط باید از یک منبع به صورت Line-In به کامپیوتر و یا به کارت کپچر داده شود. این منبع باید همان خروجی باشد که به بقیه محیطها خروجی میدهد. دقت کنید که دوربینهای تحت شبکه مقداری تاخیر دارند و این باعث عدم هماهنگی صدا و تصویر میشود. پس از این دوربینها در جاهایی که این هماهنگی مهم است استفاده نکنید.
در همایشهای میتوانید این دوربینها را در محیط خارج سالن و یا سالنهای دیگر نصب کنید. ####شبکه شبکه بستر اصلی تمامی ارتباطات است. مطمن شوید که ارتباط شما تا سرور استرمینگ با کیفیت و با پهنایباند بالا است. همچنین ارتباط کامپیوتر با دوربینهای تحت شبکه و موبایلها نیز باید همین ویژگیها را داشته باشد. میتوانید از ابزارهایی مانند ping برای تست کیفیت ارتباط استفاده کنید. جهت کسب اطلاعات بیشتر و راهنمایی با انفورماتیک مجموعه در ارتباط باشید.