حامد ذقاقی
حامد ذقاقی
خواندن ۳ دقیقه·۴ سال پیش

راه‌اندازی سرور استریم در ۵ دقیقه

این روز‌ها به دلایل مختلف از جمله دورکاری‌ها و نداشتن جلسات حضوری، استفاده از ابزارهای آنلاین رو بسیار زیاد کرده و خیلی‌هامون تا الان از سرویس‌های مختلف استفاده کرده‌ایم. یکی از این سرویس‌ها، استریم ویدئو است، چه برای استریم بازی و چه استریم یک وبینار یا یک کلاس درس. البته کلی هم ارائه دهنده سرویس خود چه در ایران و چه در جهان داریم که نیازی به معرفی نیست.

اما چرا نیاز هست که با وجود سرویس‌دهندگان خوب، خودمون این کار رو انجام بدیم؟ یکی از دلایلش که دلیلی هست که خودم سراغش رفتم، ارائه یک وبینار در داخل شرکت بود، به نحوی که نیاز نباشه همکاران من توی اتاق کنفرانس دور هم جمع بشوند. برای همین با کمی گشتن و با کمک نرم‌افزارهای متن باز و رایگان این امر در شرکت شدنی شد و خلاصه این روال رو اینجا با شما به اشتراک می‌گذارم.

برای شروع از یک معماری کلی و خیلی خیلی خیلی ساده شروع می‌کنم.

معماری بسیار ساده برای استریم سرور
معماری بسیار ساده برای استریم سرور

در این معماری سه عنصر اصلی وجود داره:

  • ضبط کننده، که اطلاعات ویدئویی را ضبط کرده و برای سرور استریم ارسال می‌کند
  • تماشاگران، که از طریق مرورگر یا یک مدیاپلیر استریم را تماشا می‌کنند
  • سرور استریم که وظیفه دریافت استریم از ضبط کننده و در اختیار قرار دادن آن به تماشاگران است. همچنین وظیفه نگهداری تمام استریم را هم دارد.

سرور استریم

برای راه‌اندازی سرور استریم از 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 استفاده کنند.

استفاده از VLC برای تماشای استریم پروتکل HLS+HTTP
استفاده از VLC برای تماشای استریم پروتکل HLS+HTTP


استفاده از VLC برای تماشای استریم پروتکل RTMP
استفاده از VLC برای تماشای استریم پروتکل RTMP

اگر بخواهید پروتکل RTMP برای تماشاگران قابل استفاده باشد باید در فایل تنظیمات NGINX این مورد را حذف کنید.

deny play all;

امیدوارم که این مطلب کوتاه براتون مفید بوده باشه.




استریموبینارnginx
شاید از این پست‌ها خوشتان بیاید