มาทำ streaming server เล่นกันด้วย docker NGINX RTMP Server

โจทย์ของวันนี้คือเรื่องการทำ live streaming ในวง LAN ต้องการทำถ่ายทอดสดไปยังโปรแกรม VLC บน android box แทนการหา source streaming จากที่อื่น เพราะต้องการควบคุมเนื้อหาเอง จนเจอ docker แจ่มๆ และใช้งานง่ายมากๆ คือ alfa/nginx-rtmp มาดูวิธีการตั้งค่าและใช้งานกัน

การใช้ Docker ในการตั้งค่า Streaming Server สำหรับ OBS Studio และเล่นบน VLC เป็นวิธีที่สะดวกและติดตั้งง่ายกว่า เนื่องจาก Docker ช่วยให้คุณสามารถรันเซิร์ฟเวอร์ที่ต้องการได้โดยไม่ต้องติดตั้งและตั้งค่าซอฟต์แวร์ต่าง ๆ ด้วยตนเอง นี่คือขั้นตอนการตั้งค่าที่แนะนำ

ติดตั้ง Docker Desktop บน Windows 10

  1. ดาวน์โหลด Docker Desktop
  1. ติดตั้ง Docker Desktop
  • เปิดไฟล์ติดตั้งที่ดาวน์โหลดมาและทำตามขั้นตอนการติดตั้ง
  • หลังจากติดตั้งเสร็จ ให้รีสตาร์ทเครื่องคอมพิวเตอร์ถ้ามีการแจ้งเตือน
  1. ตรวจสอบการติดตั้ง
  • เปิด Command Prompt หรือ Terminal และพิมพ์คำสั่ง
    docker -v
  • คุณควรเห็นเวอร์ชันของ Docker ที่ติดตั้งอยู่

รัน NGINX RTMP Server ด้วย Docker

เราจะใช้ Docker image ที่มี NGINX พร้อม RTMP module อยู่แล้ว เช่น tiangolo/nginx-rtmp หรือ alfg/nginx-rtmp

ตัวอย่างการใช้ alfg/nginx-rtmp

  1. ดึง Docker Image
    เปิด Command Prompt หรือ PowerShell และรันคำสั่ง
docker pull alfg/nginx-rtmp
  1. รัน Docker Container
    รันคำสั่งด้านล่างเพื่อเริ่มต้นเซิร์ฟเวอร์ RTMP
docker run -d -p 1935:1935 -p 8080:80 --name nginx-rtmp alfg/nginx-rtmp
  • -d: รัน container ในโหมด background
  • -p 1935:1935: เปิดพอร์ต RTMP
  • -p 8080:80: เปิดพอร์ต HTTP สำหรับหน้าเว็บเพจ (ถ้ามี)
  • –name nginx-rtmp: ตั้งชื่อ container
  • alfg/nginx-rtmp: ชื่อ image
  1. ตรวจสอบการทำงานของ Container
docker ps

คุณควรเห็น container ที่ชื่อ nginx-rtmp กำลังทำงาน

ตั้งค่า OBS Studio ให้สตรีมไปยัง RTMP Server

  1. เปิด OBS Studio
  2. ตั้งค่าการสตรีม
  • ไปที่ Settings > Stream
  • ตั้งค่าดังนี้
    • Service: Custom…
    • Server: rtmp://localhost:1935/stream (ถ้ารันบนเครื่องเดียวกัน) หรือ rtmp://<IP ของเครื่องที่รัน Docker>/stream
    • Stream Key: moremeng (สามารถเปลี่ยนได้ตามที่คุณตั้งค่าใน RTMP server)
  1. เพิ่มแหล่งสื่อ (Source)
  • คลิกที่ + ในกล่อง “Sources” เพื่อเพิ่มแหล่งสื่อที่ต้องการสตรีม เช่น Display Capture, Window Capture หรือ Media Source
  1. เริ่มการสตรีม
  • คลิก Start Streaming ใน OBS Studio

เล่นสตรีมมิงใน VLC

  1. เปิด VLC Media Player
  2. เปิด Network Stream
  • ไปที่ Media > Open Network Stream…
  1. ใส่ URL ของสตรีม:
  • หากรัน OBS และ RTMP server บนเครื่องเดียวกัน:
    rtmp://localhost/stream/<stream key>
  • หากรันบนเครื่องอื่นใน LAN:
    rtmp://<IP ของเครื่องที่รัน Docker>/stream/<stream key>
rtmp://192.168.1.142/stream/moremeng
  1. คลิก Play เพื่อเริ่มเล่นสตรีม

การตรวจสอบและแก้ไขปัญหา

1. ตรวจสอบสถานะของ Docker Container

docker ps

ตรวจสอบว่า container nginx-rtmp กำลังทำงานอยู่

2. ตรวจสอบ Log ของ NGINX RTMP

docker logs nginx-rtmp

ตรวจสอบว่าไม่มีข้อผิดพลาดในการเริ่มต้นเซิร์ฟเวอร์

3. ตรวจสอบไฟร์วอลล์

ตรวจสอบว่าไฟร์วอลล์ของ Windows อนุญาตให้ผ่านพอร์ต 1935 (RTMP) และ 8080 (HTTP) หรือไม่

4. ทดสอบการเชื่อมต่อจาก OBS Studio

หากพบข้อผิดพลาด “failed to connect to server” ให้ตรวจสอบ

  • URL และ Stream Key ใน OBS Studio ถูกต้องหรือไม่
  • RTMP server กำลังทำงานอยู่และฟังอยู่ที่พอร์ตที่ถูกต้อง
  • เครื่องทั้งสอง (ถ้าไม่ใช่เครื่องเดียวกัน) สามารถสื่อสารกันได้ (ใช้คำสั่ง ping <IP ของเครื่อง RTMP>)

ข้อแนะนำเพิ่มเติม

การใช้ Docker Compose

หากคุณต้องการจัดการหลายๆ container หรือปรับแต่งการตั้งค่าเพิ่มเติม สามารถใช้ docker-compose ได้ นี่คือตัวอย่างไฟล์ docker-compose.yml สำหรับ NGINX RTMP

version: '3'

services:
  nginx-rtmp:
    image: alfg/nginx-rtmp
    container_name: nginx-rtmp
    ports:
      - "1935:1935"
      - "8080:80"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf

สร้างไฟล์ nginx.conf ในโฟลเดอร์เดียวกันกับ docker-compose.yml หากต้องการปรับแต่งการตั้งค่า RTMP

การดูหน้าเว็บเพจของ NGINX RTMP

บาง Docker image มีหน้าเว็บเพจสำหรับดูสถิติการสตรีมมิง คุณสามารถเข้าถึงได้ที่

http://localhost:8080/stats

สรุป

การใช้ Docker ในการตั้งค่า Streaming Server สำหรับ OBS Studio บน Windows 10 ช่วยให้การติดตั้งและการจัดการเป็นเรื่องง่าย เพียงแค่รัน container ที่มี NGINX RTMP module แล้วตั้งค่า OBS Studio ให้สตรีมไปยัง RTMP server นี้ จากนั้นคุณสามารถเล่นสตรีมผ่าน VLC ได้ทันที หากมีปัญหาใด ๆ สามารถตรวจสอบการตั้งค่าและ log เพื่อหาสาเหตุและแก้ไขได้หากมีคำถามเพิ่มเติมหรือปัญหาในการตั้งค่า