ถ้าต้องการไลฟ์สตรีมวิดีโอเองโดยไม่พึ่งพลัตฟอร์มเช่น YouTube หรือ Twitch คำตอบคือ Nginx RTMP (Real-Time Messaging Protocol Module) สามารถสตรีมมิ่งไลฟ์ที่มีเวลาหน่วงน้อยเพียง 1-3 วินาที ผ่านเซิร์ฟเวอร์ VPS ของคุณเอง ไม่ว่าจะเป็นการถ่ายทำสด พูดประชุม หรือเกมเมอร์เล่น Twitch โดยรักษาข้อมูลและบันทึกวิดีโอให้อยู่ที่เซิร์ฟเวอร์ของคุณตลอดเวลา บทความนี้จะสอนการติดตั้ง Nginx RTMP ตั้งแต่เริ่มต้นจนสามารถสตรีมมิ่งได้ด้วยเครื่องมือยอดนิยมเช่น OBS Studio
🎯 RTMP คืออะไร? และทำไมถึงใช้บน Nginx?
RTMP (Real-Time Messaging Protocol) คือโปรโตคอลที่ออกแบบมาเพื่อการสตรีมมิ่งวิดีโอและเสียงแบบเรียลไทม์ โดยมีข้อดีดังนี้:
- เวลาหน่วงน้อย (Low Latency) — เพียง 1-3 วินาที แตกต่างจาก HLS/DASH ที่มี 10-60 วินาที
- เสถียรและต่อเนื่อง — ใช้ TCP ที่เชื่อมต่อเดิมตลอดการสตรีม ไม่ต้องสร้าง segment ใหม่
- เหมาะกับไลฟ์ประกาศและเกม — ผู้ชมเห็นเกือบพร้อมกับการถ่ายทำจริง
- บันทึก VOD ได้ง่าย — Nginx เก็บสตรีม RTMP เป็นไฟล์ FLV อัตโนมัติ
- ออกแบบมาสำหรับเซิร์ฟเวอร์แบบเบา — ใช้ทรัพยากรน้อยขึ้นกับเวบเซิร์ฟเวอร์เต็มแบบ
Nginx เป็นเวบเซิร์ฟเวอร์ที่เบา (lightweight) และเร็วมาก ค่อนข้างเหมาะกับการเพิ่มโมดูล RTMP เพื่อสตรีมมิ่ง ไม่ต้องติดตั้งซอฟต์แวร์แยกเช่น Wowza หรือ Red5 ที่กินทรัพยากรมาก
🛠️ สิ่งที่ต้องเตรียมก่อนเริ่มต้น
- VPS Linux (Ubuntu 20.04+ แนะนำ) พร้อม SSH access และสิทธิ์ root
- CPU 2+ cores และ RAM 2GB+ (พอสำหรับ 100-500 concurrent viewers)
- SSD storage เพื่อบันทึก VOD ได้อย่างรวดเร็ว
- Bandwidth ขาออกที่เพียงพอ (แต่ละ bitrate ขึ้นอยู่กับคุณภาพ)
- Domain หรือ IP ที่เชื่อถือได้ (ถ้าต้องการใช้ SSL/TLS)
- Nginx ที่คอมไพล์พร้อมโมดูล RTMP (ส่วนใหญ่ต้องคอมไพล์เอง)
- OBS Studio หรือซอฟต์แวร์อื่นเพื่อสตรีมต่อเซิร์ฟเวอร์
📦 ขั้นที่ 1 — อัพเดท System และติดตั้ง Nginx Dependencies
เริ่มต้นด้วยการอัพเดท package manager และติดตั้งเครื่องมือที่ต้องการสำหรับการคอมไพล์ Nginx:
sudo apt update && sudo apt upgrade -y
sudo apt install -y build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev \
libgd-dev libgeoip-dev git curl
คำสั่งนี้ติดตั้ง gcc, make, และไลบรารี่ที่ Nginx ต้องการสำหรับการคอมไพล์
⬇️ ขั้นที่ 2 — ดาวน์โหลด Nginx และ RTMP Module
ดาวน์โหลด Nginx source code และโมดูล RTMP จาก GitHub:
cd /tmp
wget http://nginx.org/download/nginx-1.24.0.tar.gz
git clone https://github.com/arut/nginx-rtmp-module.git
tar -zxf nginx-1.24.0.tar.gz
cd nginx-1.24.0
ตรวจสอบว่าเวอร์ชัน Nginx ที่ดาวน์โหลดเป็นเวอร์ชันใหม่ล่าสุด (หรือตรวจสอบบน nginx.org)
🔨 ขั้นที่ 3 — คอมไพล์ Nginx พร้อมโมดูล RTMP
ตั้งค่า Nginx ด้วยโมดูล RTMP และอื่น ๆ ที่ต้องการ:
./configure \
--prefix=/etc/nginx \
--sbin-path=/usr/sbin/nginx \
--modules-path=/usr/lib64/nginx/modules \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--with-http_gzip_static_module \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_geoip_module \
--add-module=../nginx-rtmp-module
จากนั้นคอมไพล์และติดตั้ง:
make && sudo make install
ขั้นตอนนี้อาจใช้เวลา 5-15 นาที ขึ้นอยู่กับความเร็ว CPU ของ VPS
⚙️ ขั้นที่ 4 — ตั้งค่า Nginx RTMP Configuration
แก้ไขไฟล์ config หลักของ Nginx เพื่อเพิ่มการตั้งค่า RTMP:
sudo nano /etc/nginx/nginx.conf
ที่ส่วนท้ายของไฟล์ (ก่อน closing bracket `}`)) เพิ่มบล็อก RTMP นี้:
rtmp {
server {
listen 1935;
application live {
live on;
record off;
# Allow push from any IP (แก้ตามที่ต้องการสำหรับความปลอดภัย)
allow publish all;
allow play all;
}
application vod {
play /mnt/vod/videos;
}
}
}
บันทึกการเปลี่ยนแปลง (Ctrl+X → Y → Enter)
🚀 ขั้นที่ 5 — เตรียม Directory สำหรับ VOD (บันทึก)
สร้างโฟลเดอร์สำหรับบันทึกวิดีโอ:
sudo mkdir -p /mnt/vod/videos
sudo chown -R www-data:www-data /mnt/vod
sudo chmod 755 /mnt/vod/videos
โฟลเดอร์นี้จะเก็บไฟล์ FLV/MP4 ที่บันทึกจากการสตรีม
▶️ ขั้นที่ 6 — เริ่มต้น Nginx และตรวจสอบ
เริ่มต้น Nginx ด้วยคำสั่ง:
sudo nginx -t # ตรวจสอบ syntax ว่าถูกต้อง
sudo systemctl start nginx
sudo systemctl enable nginx
ตรวจสอบว่า Nginx ทำงาน:
sudo netstat -tlnp | grep 1935
# หรือ
ss -tlnp | grep 1935
ถ้าผลลัพธ์แสดง LISTEN บนพอร์ต 1935 แสดงว่า RTMP server เปิดอยู่แล้ว
⚠️ Firewall: ต้องเปิดพอร์ต 1935 ใน firewall ของ VPS ถ้ามี ufw หรือ cloud firewall ดำเนินการ:
sudo ufw allow 1935/tcp
🎬 ขั้นที่ 7 — เชื่อมต่อ OBS Studio และเริ่มสตรีม
ใน OBS Studio ไปที่ Settings → Stream ตั้งค่าดังนี้:
- Service: Custom...
- Server: rtmp://your-vps-ip:1935/live
- Stream Key: ตั้งชื่ออะไรเป็นการส่วนตัว เช่น mystream123
จากนั้นคลิก "Start Streaming" และวิดีโอของคุณจะประมวลผลไปยัง VPS แล้ว URL ในการดูคือ rtmp://your-vps-ip:1935/live/mystream123
🔍 การตรวจสอบและแก้ไขปัญหา
เมื่อเริ่มตั้ง Nginx RTMP อาจพบปัญหาต่างๆ ต่อไปนี้คือวิธีแก้ไขปัญหาทั่วไป การตรวจสอบ log file คือขั้นตอนแรกในการหาสาเหตุ:
sudo tail -f /var/log/nginx/error.log
ถ้ากำลัง broadcasting และมีปัญหา หรือ viewers ต่อไม่ได้ ให้ตรวจสอบ Nginx error log ก่อน เพราะจะแสดงข้อมูลว่าโปรแกรมประชุมกับเซิร์ฟเวอร์ตรงไหน
📊 ประสิทธิภาพและการปรับแต่ง
สำหรับสตรีมที่ขึ้นไปถึง 1000+ concurrent viewers เพิ่มการตั้งค่า:
worker_processes auto;
worker_connections 10000;
events {
use epoll;
}
http {
client_max_body_size 100m;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 30;
}
และในบล็อก RTMP เพิ่ม:
chunk_size 4096;
idle_streams off;
🔒 ความปลอดภัย — จำกัดการสตรีม
ถ้าต้องการป้องกัน unauthorized broadcast ให้ใช้ on_publish webhook:
application live {
live on;
on_publish http://localhost:8080/auth;
}
แล้วสร้าง PHP script ที่ localhost:8080 เพื่อตรวจสอบ stream key
ต้องการ VPS ที่มั่นคงสำหรับ Streaming?
AsiaGB VPS ไทยและสิงคโปร์ มี SSD, 99% uptime, DirectAdmin, ไม่จำกัดแบนด์วิดท์เหมาะสำหรับ Nginx RTMP streaming เริ่มต้น 500 บาท/เดือน
สมัครใช้งาน AsiaGB