آنچه در این مقاله میخوانید
آموزش راهاندازی سرور پخش ویدئو با Nginx-RTMP در اوبونتو 22.04
۱۷ فروردین ۱۴۰۴
پخش ویدئو در بسیاری از پلتفرمها مانند Twitch و با استفاده از نرمافزارهایی مثل OBS Studio انجام میشود، اما ممکن است بخواهید سرور اختصاصی برای پخش ویدئو راهاندازی کنید. در این آموزش، نحوه پیکربندی وب سرور Nginx را برای میزبانی یک جریان ویدیوی RTM را بهشما میگوییم.RTMP، پروتکل پیامرسانی بلادرنگ است که اصول پایهای پخشهای ویدئویی اینترنتی را تعریف میکند. همچنین خواهید آموخت که چگونه میتوانید جریانهای HLS و DASH را با استفاده از همین فناوری برای پلتفرمهای مدرن میزبانی کنید.
پیشنیازها
برای این آموزش به موارد زیر نیاز خواهید داشت:
- یک سرور مجازی اوبونتو که با دنبال کردن آموزش راهاندازی اولیه سرور برای Ubuntu، راهاندازی شده و شامل یک کاربر غیر root با دسترسی sudo و یک فایروال فعال است؛ برای این کار، میتوانید از سرور مجازی لیارا، استفاده کنید.
- نصب Nginx روی سرور مجازی اوبونتو با مطالعه آموزش نصب Nginx بر روی Ubuntu.

در ادامه بخوانید:
- مرحله اول: نصب و پیکربندی Nginx-RTMP
- مرحله دوم: ارسال ویدئو به سرور RTMP
- مرحله سوم: پخش ویدئو از طریق OBS (اختیاری)
- مرحله چهارم: افزودن مانیتورینگ (اختیاری)
- جمعبندی
- سوالات متداول
مرحله اول: نصب و پیکربندی Nginx-RTMP
برای شروع، دستورات زیر را بهعنوان یک کاربر غیر root اجرا کنید تا فهرست پکیجهای خود را بهروزرسانی کرده و ماژول Nginx را نصب کنید:
sudo apt update
sudo apt install libnginx-mod-rtmp
سپس با nano
یا هر ویرایشگر دلخواه خود، فایل پیکربندی اصلی Nginx یعنی /etc/nginx/nginx.conf
را باز کنید و کد زیر را به آن اضافه کنید:
sudo nano /etc/nginx/nginx.conf
. . .
rtmp {
server {
listen 1935;
chunk_size 4096;
allow publish 127.0.0.1;
deny publish all;
application live {
live on;
record off;
}
}
}
سپس فایل را با کلید CTRL+X
ذخیره کرده و با فشردن کلید Y
و ENTER
ببندید و خارج شوید.
این پیکربندی برای RTMP است که بهطور پیشفرض روی پورت 1935 گوش میدهد، بنابراین باید این پورت را در فایروال باز کنید. اگر از ufw
در تنظیمات اولیه سرور استفاده کردهاید، دستور زیر را اجرا کنید:
sudo ufw allow 1935/tcp
حالا میتوانید Nginx را راهاندازی مجدد کنید:
sudo systemctl reload nginx.service
تبریک:) در آخر این مرحله شما یک سرور RTMP فعال دارید.
همین الان، بدون کمترین پیچیدگی، سرور مجازی خودتون رو در کمتر از ۳۰ ثانیه، راهاندازی کنید.
✅ عملکرد پایدار ✅ ترافیک نامحدود ✅ هزینه بهصرفه
خرید سرور مجازی ابری
مرحله دوم: ارسال ویدئو به سرور RTMP
راههای مختلفی برای ارسال ویدئو به سرور RTMP وجود دارد. یکی از گزینهها استفاده از ffmpeg
است، که یک ابزار محبوب خط فرمان برای پردازش ویدئو و صدا است، تا فایل ویدئویی را مستقیماً روی سرور پخش کنید. اگر فایل ویدئویی در سرور ندارید، میتوانید یکی از ویدئوها را با استفاده از ابزار youtube-dl
که برای دانلود ویدئو از پلتفرمهای پخش مانند یوتیوب طراحی شده است، دریافت کنید. برای استفاده از youtube-dl
، به نصب نسخه بهروز پایتون بر روی سرور خود نیاز دارید.
ابتدا، پایتون و مدیر پکیج آن، pip
، را نصب کنید:
sudo apt install python3-pip
سپس، از pip
برای نصب youtube-dl
استفاده کنید:
sudo pip install youtube-dl
اکنون با دستور زیر میتوانید از youtube-dl
برای دانلود ویدئو از یوتیوب استفاده کنید:
youtube-dl https://www.youtube.com/watch?v=iom_nhYQIYk -f mp4
توجه: گاهی اوقات با خطای ERROR: unable to download video data: HTTP Error 403: Forbidden
مواجه میشوید. در این صورت، دوباره بررسی کنید که URL درست است. اگر URL صحیح باشد، اجرای دوباره دستور معمولاً مشکل را حل میکند.
خروجی شما بهطور معمول بهصورت youtube-dl خواهد بود، که استریمهای ویدئو و صدا را که در حال دانلود است، به یک فایل واحد ترکیب میکند.
[youtube] iom_nhYQIYk: Downloading webpage
[download] Destination: Introducing App Platform by DigitalOcean-iom_nhYQIYk.mp4
[download] 100% of 7.90MiB in 01:39
حالا یک فایل ویدئویی در دایرکتوری فعلی خود دارید. برای پخش آن، ffmpeg
را نصب کنید:
sudo apt install ffmpeg
سپس از ffmpeg
برای ارسال ویدئو به سرور RTMP خود استفاده کنید:
ffmpeg -re -i "Introducing App Platform by DigitalOcean-iom_nhYQIYk.mp4" -c:v copy -c:a aac -ar 44100 -ac 1 -f flv rtmp://localhost/live/stream
همانطور که از آدرس پیداست، ویدئو به آدرس rtmp://localhost/live/stream
ارسال میشود.
در حین پخش ویدئو توسط ffmpeg
، زمانبندیها نمایش داده میشوند:
Output
frame= 127 fps= 25 q=-1.0 size= 405kB time=00:00:05.00 bitrate= 662.2kbits/s speed=frame= 140 fps= 25 q=-1.0 size= 628kB time=00:00:05.52 bitrate= 931.0kbits/s speed=frame= 153 fps= 25 q=-1.0 size= 866kB time=00:00:06.04 bitrate=1173.1kbits/s speed=
حالا که نحوه پخش ویدئو از منابع ثابت از طریق خط فرمان را یاد گرفتید، در ادامه نحوه پخش ویدئو از منابع پویا با استفاده از OBS در دسکتاپ را خواهید آموخت.
مرحله سوم: پخش ویدئو از طریق OBS (اختیاری)
پخش ویدئو با ffmpeg برای ویدئوهای آماده مناسب است، اما پخش زنده میتواند پویا و انعطافپذیرتر باشد. محبوبترین نرمافزار برای پخش زنده OBS است که رایگان، متنباز و قدرتمند است.
OBS یک برنامه دسکتاپ است که از کامپیوتر شما به سرور متصل میشود. پس از نصب OBS، تنظیمات آن شامل انتخاب پنجرهها و منابع صوتی دسکتاپ برای استریم و وارد کردن اعتبارنامههای سرویس پخش است.
این مرحله به تنظیمات استریم نمیپردازد. برای تنظیم اعتبارنامههای استریم، منوی تنظیمات OBS را باز کرده، به بخش Stream بروید و گزینهها را وارد کنید:
Streaming Service: Custom
Server: rtmp://your_domain/live
Play Path/Stream Key: obs_stream
در اسکریپت بالا obs_stream
یک مسیر دلخواه است، در این حالت ویدئوی شما در آدرس rtmp://your_domain/live/obs_stream
در دسترس خواهد بود. نیازی به فعالسازی احراز هویت نیست، اما باید یک ورودی اضافی به لیست سفید IP که در مرحله اول تنظیم کردهاید اضافه کنید.
برای این کار، فایل پیکربندی اصلی Nginx را باز کرده و ورودی allow publish برای آدرس IP محلی خود اضافه کنید. اگر آدرس IP محلی خود را نمیدانید، میتوانید از سایتهایی مانند What’s my IP برای شناسایی آن استفاده کنید.
sudo nano /etc/nginx/nginx.conf
. . .
allow publish 127.0.0.1;
allow publish your_local_ip_address;
deny publish all;
. . .
فایل را ذخیره کرده و ببندید، در نهایت برای اعمال تغییرات، Nginx را مجددا بارگذاری کنید:
sudo systemctl reload nginx.service
پیشنهاد مطالعه: نحوه ارتقای نسخه اوبونتو 22.04 به 24.04 در سرور مجازی Ubuntu
مرحله چهارم: افزودن مانیتورینگ (اختیاری)
پس از پیکربندی Nginx برای استریم ویدئو با استفاده از ماژول Nginx-RTMP، میتوانید صفحه RTMP را فعال کنید.
میتوانید بهجای افزودن آنها به فایل اصلی nginx.conf
، یک فایل پیکربندی جداگانه به نام rtmp در دایرکتوری sites-available/
ایجاد کنید تا تنظیمات مربوط به مانیتورینگ سرور پخش ویدئو را اضافه کنید.
ابزارهای مانیتورینگ به شما کمک میکنند تا از مشکلات پخش، بارگذاری زیاد یا هر گونه مشکل فنی دیگر باخبر شوید و در صورت لزوم اقدام کنید.
sudo nano /etc/nginx/sites-available/rtmp
خطوط زیر را به فایل اضافه کنید:
server {
listen 8080;
server_name localhost;
# rtmp stat
location /stat {
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl {
root /var/www/html/rtmp;
}
# rtmp control
location /control {
rtmp_control all;
}
}
فایل را ذخیره کرده و ببندید.
فایل stat.xsl
در این بلاک پیکربندی برای نمایش صفحه RTMP در مرورگر شما استفاده میشود. این فایل توسط کتابخانه libnginx-mod-rtmp
که قبلاً نصب کردهاید، ارائه میشود، اما به طور پیشفرض فشرده است، بنابراین باید آن را از حالت فشرده خارج کرده و در دایرکتوری /var/www/html/rtmp
قرار دهید تا با پیکربندی نمونه مطابقت داشته باشد. اطلاعات بیشتر در مورد هر یک از این گزینهها را در مستندات Nginx-RTMP پیدا کنید.
برای انجام این کار، ابتدا دایرکتوری /var/www/html/rtmp
را ایجاد کنید و سپس فایل stat.xsl.gz
را با دستورات زیر از حالت فشرده خارج کنید:
sudo mkdir /var/www/html/rtmp
sudo cp /usr/share/doc/libnginx-mod-rtmp/examples/stat.xsl /var/www/html/rtmp/stat.xsl
در نهایت، برای دسترسی به صفحه نمایش و مانیتورینگ، باید پورت 8080 را در فایروال باز کنید و دسترسی را محدود به آدرس IP خود کنید. برای این کار از دستور زیر استفاده کنید:
sudo ufw allow from your_ip_address to any port http-alt
حالا، برای فعالسازی پیکربندی جدید، یک پیوند نمادین از فایل rtmp
در دایرکتوری sites-available/
به sites-enabled/
بسازید:
sudo ln -s /etc/nginx/sites-available/rtmp /etc/nginx/sites-enabled/rtmp
در آخر، برای اعمال تغییرات، سرویس Nginx را مجددا راهاندازی کنید:
sudo systemctl reload nginx.service
حالا باید بتوانید به آدرس http://your_domain:8080/stat
در مرورگر بروید و صفحه آمار RTMP را مشاهده کنید. در حین پخش ویدئو، صفحه را باز و رفرش کنید و ببینید که آمار استریم تغییر میکند.
اکنون یاد گرفتهاید که چگونه استریم ویدئو خود را نظارت کرده و آن را به سرویسهای شخص ثالث ارسال کنید:)
جمعبندی
پس از یادگیری نحوه راهاندازی و نظارت بر سرور RTMP با استفاده از Nginx، میتوانید ویدئوها را به راحتی استریم کرده و به سرویسهای شخص ثالث ارسال کنید. با استفاده از ابزارهایی مانند ffmpeg و OBS، ویدئوهای خود را از منابع مختلف پخش کنید و در نهایت، آمار استریم خود را در مرورگر مشاهده کنید. در آینده، میتوانید حتی ویدئوها را بدون نیاز به پلتفرمهای خارجی، مستقیماً در مرورگر نمایش دهید. این امکانات به شما قدرت کنترل کامل بر استریمهای ویدئویی میدهد. امیدواریم این مطلب از وبلاگ لیارا برای شما مفید باشد.
با ثبتنام در لیارا، ۱۰۰ هزار تومان اعتبار هدیه بگیرید و از سرور مجازی رایگان با کیفیت بالا و امکانات عالی استفاده کنید!
پشتیبانی ۲۴ ساعته برای کاربران سرور مجازی رایگان!
خرید سرور مجازی رایگان
سوالات متداول
1-چگونه میتوانم از OBS برای پخش ویدئو به سرور RTMP خود استفاده کنم؟
بعد از نصب OBS، کافی است تنظیمات استریم را برای اتصال به سرور RTMP خود انجام دهید و سپس منبع ویدیویی مورد نظر را انتخاب کنید تا پخش شروع شود.
2- آیا میتوانم از Nginx برای پخش ویدئو به چندین پلتفرم مختلف استفاده کنم؟
بله، با استفاده از Nginx و ماژول RTMP، میتوانید ویدئوهای خود را به چندین پلتفرم پخش ارسال کنید یا آنها را در سرور خود بهطور مستقیم منتشر کنید.
3- چگونه میتوانم آمار استریم خود را مشاهده کنم؟
با فعالسازی صفحه آمار RTMP در Nginx، میتوانید آمار پخش خود را از طریق مرورگر مشاهده کنید. کافی است آدرس http://your_domain:8080/stat
را وارد کنید تا آمار مربوط به پخش ویدئویی خود را مشاهده کنید.