این روزها به دلایل مختلف از جمله دورکاریها و نداشتن جلسات حضوری، استفاده از ابزارهای آنلاین رو بسیار زیاد کرده و خیلیهامون تا الان از سرویسهای مختلف استفاده کردهایم. یکی از این سرویسها، استریم ویدئو است، چه برای استریم بازی و چه استریم یک وبینار یا یک کلاس درس. البته کلی هم ارائه دهنده سرویس خود چه در ایران و چه در جهان داریم که نیازی به معرفی نیست.
اما چرا نیاز هست که با وجود سرویسدهندگان خوب، خودمون این کار رو انجام بدیم؟ یکی از دلایلش که دلیلی هست که خودم سراغش رفتم، ارائه یک وبینار در داخل شرکت بود، به نحوی که نیاز نباشه همکاران من توی اتاق کنفرانس دور هم جمع بشوند. برای همین با کمی گشتن و با کمک نرمافزارهای متن باز و رایگان این امر در شرکت شدنی شد و خلاصه این روال رو اینجا با شما به اشتراک میگذارم.
برای شروع از یک معماری کلی و خیلی خیلی خیلی ساده شروع میکنم.
در این معماری سه عنصر اصلی وجود داره:
برای راهاندازی سرور استریم از nginx و ماژول nginx-rtmp استفاده کردم و البته در داکرهاب، داکر آمادهاش رو پیدا کردم با این نام tiangolo/nginx-rtmp و برای راهاندازی آن چیزی که نیاز داشتم یک docker-compose نوشتم که در گیتهاب به آدرس zaghaghi/live-stream-server قابل دسترس هست.
برای راهاندازی سرور استریم به روش زیر عمل کنید.
git clone https://github.com/zaghaghi/live-stream-server.git cd live-stream-server docker-compose up
ضبط کننده یا استریمر میتواند از نرمافزار OBS Studio استفاده کند و در تنظیمات همانند تصویر زیر عمل کند.
در قسمت Server به جای streamserver از آدرس و یا نام سرور استریم که در مرحله قبل راهاندازی کردید استفاده کنید.
در قسمت Stream Key میتوانید یک کلید به ازای هر وبینار در نظر بگیرید و ضبط کننده از اون کلید استفاده کنه که در اینجا از webinar1 استفاده کردم. در ادامه از این کلید استفاده میکنیم تا استریم این ضبط کننده را ببینیم.
بعد از اینکه سرور استریم را راهاندازی کردید و ضبط کننده شروع به استریم کرد. تماشاگران میتوانند با استفاده از یک مرورگر و با رفتن به آدرس http://streamserver:8080?webinar1 ویدئوی استریم شده را به صورت زنده مشاهده کند. برای نمایش در مرورگر از کتابخانه جاوااسکریپتی videojs استفاده شده است و این کتابخانه به کمک پروتکل HLS بر روی HTTP استریم را نمایش میدهد.
همچنین تماشاگران میتوانند از مدیاپلیرهایی که امکان نمایش استریم را دارند همانند VLC استفاده کنند و از یکی از دو پروتکل RTMP یا HLS استفاده کنند.
اگر بخواهید پروتکل RTMP برای تماشاگران قابل استفاده باشد باید در فایل تنظیمات NGINX این مورد را حذف کنید.
deny play all;
امیدوارم که این مطلب کوتاه براتون مفید بوده باشه.