คู่มือเหล่านี้จับคู่แนวคิดของอุตสาหกรรมกับออบเจ็กต์ที่แพลตฟอร์มมีอยู่ในวันนี้ (bouquet ไลน์ แพ็กเกจ บัญชีพาร์ตเนอร์ node และ API) เป็นการจับคู่เชิงแนวคิด ไม่ใช่ฟีเจอร์เฉพาะอุตสาหกรรม และบัญชีพาร์ตเนอร์คือบัญชีที่มอบหมายสิทธิ์ ไม่ใช่ tenant ที่แยกขาด
การจับคู่เชิงแนวคิด
ไม่มีสิ่งใดในแผงควบคุมที่เรียกว่ารายวิชาหรือนักเรียน ตารางบอกว่าออบเจ็กต์ใดทำหน้าที่อะไร บทด้านล่างตั้งค่าตามลำดับนั้น
| ในอุตสาหกรรมของคุณ | บนแพลตฟอร์ม | อยู่ที่ไหนในแผงควบคุม |
|---|---|---|
| ศูนย์ฝึกอบรมหรือพาร์ตเนอร์จัดจำหน่าย | บัญชีพาร์ตเนอร์ (รีเซลเลอร์): แดชบอร์ดที่มอบหมายสิทธิ์พร้อมเครดิต สิทธิ์ และไลน์ของตนเอง | Users → เพิ่มรีเซลเลอร์ กลุ่มสิทธิ์ที่ Groups |
| ชุดรายวิชา | Bouquet: ชุดช่อง ภาพยนตร์ หรือซีรีส์ที่มีชื่อ ซึ่งแพ็กเกจมอบให้ | Bouquets จาก Streams และ Movies / Series |
| บทเรียนที่บันทึกไว้ | แคตตาล็อก VOD: ภาพยนตร์และซีรีส์พร้อมซีซันและตอน หมวดหมู่ และข้อมูลเมตา | Movies และ Series หรืองาน ingest VOD |
| ห้องเรียนสด | ช่องสด: สตรีมพร้อมแหล่งสัญญาณ EPG และรูปแบบเอาต์พุต | Streams → เพิ่มสตรีมสด (URL แหล่งสัญญาณหรือ RTMP push) |
| สิทธิ์เข้าใช้ของนักเรียน | ไลน์: สิทธิ์เข้าใช้หนึ่งรายการพร้อมแพ็กเกจ bouquet วันหมดอายุ ขีดจำกัดการเชื่อมต่อ และเอาต์พุต | Lines → เพิ่ม หรือรหัสเปิดใช้งาน หรือ Reseller API |
| ช่วงเวลาเข้าใช้รายวิชา | วันหมดอายุของไลน์ ต่ออายุด้วยแพ็กเกจ เครดิต หรือ API | วันหมดอายุของไลน์และระยะเวลาของแพ็กเกจ |
| ขีดจำกัดเซสชันพร้อมกัน | จำนวนการเชื่อมต่อสูงสุดของไลน์: จำนวนอุปกรณ์ที่ดูพร้อมกันได้ | จำนวนการเชื่อมต่อสูงสุดของไลน์ |
| การเชื่อมต่อ LMS หรือระบบพาณิชย์ | Reseller API และ webhook: การทำงานของแผงควบคุมจากระบบของคุณเอง | Reseller API key และ webhook ในแดชบอร์ดของรีเซลเลอร์ |
สิ่งที่ต้องเตรียม
สิ่งที่ควรมีก่อนติดตั้ง
- เซิร์ฟเวอร์ Linux (Ubuntu 22.04 หรือ 24.04) บนเครือข่ายวิทยาเขต ซึ่งตัวติดตั้งจะติดตั้ง Postgres, Redis และ ffmpeg ให้ และโดเมนหรือที่อยู่ภายในสำหรับแผงควบคุมและเพลเยอร์
- การบันทึกที่คุณจะเผยแพร่ (ไฟล์หรือระบบบันทึกที่ push RTMP ได้) และสำหรับห้องเรียนสด เอนโค้ดเดอร์ในแต่ละห้องที่จะสตรีม
- คีย์ใบอนุญาต: แผน Free ไม่ต้องใช้ สถาบันที่มีคุณสมบัติขอคีย์ Professional ฟรีทางอีเมลจากโดเมนวิชาการของตน
การติดตั้งโครงสร้างพื้นฐาน
ติดตั้งเซิร์ฟเวอร์จัดการ แล้วติดตั้ง node ต่ออาคาร
- รันตัวติดตั้งบนเซิร์ฟเวอร์จัดการ ตัวติดตั้งจะติดตั้งแผงควบคุม API worker และ origin เป็นยูนิต systemd และสร้างแอดมินคนแรก
- ตั้ง URL สาธารณะของ API (API_PUBLIC_URL) และฐานการเล่น เพื่อให้ลิงก์เพลเยอร์ชี้ไปยังที่อยู่ของวิทยาเขต
- ลงทะเบียน node จาก Servers → เพิ่ม node สำหรับแต่ละอาคารที่ห้องจะดู แผงควบคุมติดตั้งให้ผ่าน SSH จากแพ็กเกจ node
- ตรวจสอบหน้า Servers: node รายงาน heartbeat และทราฟฟิก และผู้ชมของอาคารนั้นถูกกระจายไปที่ node
การจัดระเบียบเนื้อหา
รายวิชาเป็นซีรีส์ หลักสูตรเป็น bouquet และแพ็กเกจ
- สร้างหนึ่งหมวดหมู่ต่อคณะหรือวิชาภายใต้ Movies / Series
- เพิ่มแต่ละรายวิชาเป็นซีรีส์: หนึ่งซีซันต่อโมดูล หนึ่งตอนต่อบทเรียน โดยมีการบันทึกเป็นแหล่งสัญญาณ (อัปโหลดหรืองาน ingest VOD)
- สร้างหนึ่ง bouquet ต่อชุดรายวิชา (เช่นรายวิชาของหลักสูตรหนึ่งในหนึ่งภาคเรียน) จากซีรีส์ที่คุณเพิ่ม
- สร้างหนึ่งแพ็กเกจต่อหลักสูตร: bouquet ที่มอบให้ ช่วงเวลาเข้าใช้เป็นระยะเวลา และขีดจำกัดเซสชันพร้อมกัน
การตั้งค่าพาร์ตเนอร์ (รีเซลเลอร์)
ศูนย์ฝึกอบรมหรือคณะในฐานะบัญชีที่มอบหมายสิทธิ์
- สร้างกลุ่มที่มีสิทธิ์ที่ศูนย์ต้องใช้ (ไลน์ของตนเอง ไม่แก้ไขแคตตาล็อก) ภายใต้ Groups
- เพิ่มศูนย์เป็นรีเซลเลอร์ภายใต้ Users พร้อมกลุ่มนั้น ยอดเครดิต และแพ็กเกจที่แจกได้
- ให้ที่อยู่แดชบอร์ดแก่ศูนย์ ศูนย์จัดการนักเรียนของตนเองจากที่นั่น และแผงควบคุมเก็บบันทึกการตรวจสอบ
การตั้งค่าสิทธิ์เข้าใช้ของนักเรียน
หนึ่งไลน์ต่อนักเรียน สร้างตอนลงทะเบียน
- สำหรับกลุ่มเล็ก เพิ่มไลน์จาก Lines → เพิ่ม พร้อมแพ็กเกจของหลักสูตร วันหมดอายุเป็นไปตามระยะเวลาของแพ็กเกจ
- สำหรับวันลงทะเบียน สร้างรหัสเปิดใช้งานสำหรับแพ็กเกจ นักเรียนแลกรหัสในเพลเยอร์และได้ไลน์
- สำหรับระบบนักเรียนหรือ LMS สร้าง Reseller API key และให้ระบบสร้างไลน์ด้วย action=create_line และหนึ่งรหัสคำขอต่อนักเรียน
- ตั้งจำนวนการเชื่อมต่อสูงสุดเป็นจำนวนอุปกรณ์ที่นักเรียนใช้พร้อมกันได้ เพลเยอร์จะปฏิเสธการเชื่อมต่อถัดไปที่เกินจำนวนนั้น
การตั้งค่า VOD
บทเรียนที่บันทึกไว้แบบตามสั่ง
- อัปโหลดแต่ละการบันทึกเป็นแหล่งสัญญาณของตอน หรือชี้งาน ingest VOD ไปที่ไฟล์และให้ worker ดาวน์โหลดและเข้ารหัสลง media root
- กรอกข้อมูลเมตา (ชื่อ คำอธิบาย โปสเตอร์) ด้วยมือหรือจาก TMDB สำหรับสื่อสาธารณะ บทเรียนมักต้องการเพียงชื่อและคำอธิบาย
- ตรวจสอบการเล่นในเว็บเพลเยอร์ด้วยไลน์ทดสอบ ลิงก์ถูกลงนามและหมดอายุหลังเวลาที่กำหนด
การสตรีมห้องเรียนสด
การบรรยายเป็นช่องสด
- เพิ่มสตรีมสดภายใต้ Streams โดยใช้เอนโค้ดเดอร์ของห้องเป็นแหล่งสัญญาณ (ที่อยู่ RTMP push หรือ URL สำหรับ pull)
- ใส่สตรีมใน bouquet ของรายวิชา เพื่อให้เฉพาะนักเรียนที่ลงทะเบียนเห็น เพิ่มลง EPG หากคุณมีตารางเวลา
- เปิด catch-up หรือ timeshift บนสตรีมเมื่อนักเรียนดูคลาสภายหลังได้ การบันทึกอัปโหลดเป็นตอนได้เช่นกัน
การสมัครใช้และการหมดอายุของสิทธิ์เข้าใช้
สิทธิ์เข้าใช้ที่สิ้นสุดพร้อมรายวิชา
- กำหนดช่วงเวลาเข้าใช้เป็นระยะเวลาของแพ็กเกจ ไลน์ที่สร้างจากแพ็กเกจจะหมดอายุเมื่อสิ้นช่วงเวลานั้น
- ต่ออายุไลน์สำหรับภาคเรียนใหม่จากแผงควบคุมด้วยเครดิตของศูนย์ หรือผ่าน API ด้วย action=renew_line
- สมัครรับ webhook ด้วยระบบของคุณ ระบบจะได้รับแจ้งเมื่อไลน์ใกล้หมดอายุ หมดอายุ หรือถูกปิดใช้งาน
การเชื่อมต่อกับ LMS ภายนอก
LMS ควบคุมสิทธิ์เข้าใช้ เพลเยอร์เล่น
- สร้าง Reseller API key สำหรับ LMS เก็บไว้ในที่เก็บความลับของ LMS อย่าใส่ในหน้าเว็บ
- เมื่อลงทะเบียน LMS เรียก action=create_line พร้อมแพ็กเกจของหลักสูตรและรหัสคำขอ เมื่อถอนตัวเรียก action=disable_line
- ลิงก์จากหน้ารายวิชาของ LMS ไปยังเว็บเพลเยอร์ หรือให้ข้อมูลประจำตัวของเพลเยอร์แก่นักเรียน ไม่มี single sign-on ระหว่างทั้งสอง
ข้อควรพิจารณาด้านความปลอดภัย
เก็บบริการไว้ภายในสถาบัน
- เปิดการเข้าสู่ระบบสองขั้นตอนสำหรับทุกบัญชีแผงควบคุม และให้พนักงานอยู่ในกลุ่มสิทธิ์ที่เล็กที่สุดที่ใช้งานได้
- เก็บข้อมูลส่วนบุคคลของนักเรียนไว้ในระบบนักเรียน ไลน์ต้องการเพียงชื่อและวันหมดอายุ
- ตั้งจำนวนการเชื่อมต่อสูงสุดให้ต่ำ และพิจารณาผูกการเล่นกับที่อยู่ของผู้ชมเพื่อป้องกันการแชร์
- เปิดการสำรองฐานข้อมูลแบบเข้ารหัส และหากมีที่เก็บข้อมูลที่เข้ากันได้กับ S3 ให้เปิดสำเนานอกสถานที่ด้วย
การแก้ไขปัญหา
สิ่งที่ตรวจสอบก่อนตามปกติ
- นักเรียนเข้าสู่ระบบไม่ได้: ตรวจสอบวันหมดอายุของไลน์และว่าเปิดใช้งานอยู่ จากนั้นตรวจแพ็กเกจและ bouquet ของรายวิชา
- การบันทึกเล่นไม่ได้: ตรวจผลของงาน ingest ในหน้า Jobs จากนั้นตรวจไฟล์ใน media root และการหมดอายุของลิงก์ที่ลงนาม
- ผู้ชมของอาคารไปที่ origin: ตรวจ heartbeat ของ node และว่าที่อยู่ของผู้ชมอยู่ในการกระจายของ node
- API ปฏิเสธการเรียก: ตรวจสอบคีย์ เมธอดของ action (การเขียนเป็น POST) และรหัสคำขอของการเรียกซ้ำ