B2C · Xtream · Reseller





ชั้นการจัดเก็บเอกสารถาวร
ระบบเก็บถาวรสามระดับสำหรับไคลเอนต์พร้อมกันมากกว่า 500 รายการ
ตัวเข้ารหัส
เขียนบัฟเฟอร์
หน้าต่างร้อน 2 ชม. (NVMe หรือ tmpfs)
→ กระจกเงา (ต่อเนื่อง)
HDD RAID5
50 TB การเก็บรักษา 14 วัน
→ ดึงข้อมูลล่วงหน้าตามความต้องการ
แคชการเล่น
แคชอุ่น 1 TB ไคลเอ็นต์มากกว่า 500 รายการ
ลูกค้า
ส่วนที่เก่ากว่า mirror_min_age_ minutes จะถูกคัดลอกไปยัง RAID อย่างต่อเนื่อง
ชั้น
วัตถุประสงค์
การตั้งค่า
เขียนบัฟเฟอร์
รับเซ็กเมนต์ทุกวันตลอด 24 ชั่วโมง เก็บ Hot Window ไว้ 2 ชั่วโมงเพื่อการเล่นย้อนกลับล่าสุดอย่างรวดเร็ว ป้องกัน RAID จาก IO แบบสุ่ม
device_path (บล็อกอุปกรณ์หรือ 'tmpfs'), tmpfs_size_pct (10-50% MemAvailable เมื่อ tmpfs), mirror_min_age_ minutes, evict_age_minutes, flush_threshold_percent (บังคับให้ทริกเกอร์ฟลัช)
HDD RAID เอกสารเก่า
พื้นที่จัดเก็บหางยาวเพื่อการเก็บรักษาเต็ม (ค่าเริ่มต้น 14 วัน)
retention_days, raid_device, nginx_location, min_free_percent
แคชการเล่น (ไม่จำเป็น)
แคชฝั่งอ่านสำหรับไฟล์ยอดนิยมที่เก่ากว่า 2 ชั่วโมง (เช่น EPG catch-up)
prefetch_hours, max_sessions, eviction_policy (เซสชัน/lru/fifo)
live write × 2h = write_buffer ขนาดหน้าต่างร้อน
Stream.dvr_file_path/2 โพรบ write_buffer → play_cache → เก็บถาวรตามลำดับ
แต่ละชั้นสามารถใช้ดิสก์เสมือน tmpfs ที่สนับสนุน RAM แทนอุปกรณ์บล็อกทางกายภาพ
การจัดสรรระบุเป็นเปอร์เซ็นต์ของ MemAvailable (จาก /proc/meminfo) — ขั้นตอนที่ 10 ค่าที่ถูกต้อง 10/20/30/40/50
หากเป้าหมายที่คำนวณจะเกิน 60% ของ MemAvailable ปัจจุบัน การเมานต์จะถูกปฏิเสธและระดับจะยังคงออฟไลน์ (Stream.archive_path ตกไปสู่ระดับที่ดีถัดไป)
tmpfs อยู่ใน RAM — เนื้อหาบัฟเฟอร์ในเที่ยวบินใดๆ จะสูญหายไปเมื่อโฮสต์รีบูต
ใช้ tmpfs สำหรับ write_buffer เมื่อ: (a) กล่อง dev/test ไม่มี NVMe สำรอง แต่คุณยังคงต้องการให้ไปป์ไลน์ DVR เต็มรูปแบบทำงานสำหรับการทดสอบการรวมระบบ (b) ผู้ปฏิบัติงานต้องการตรวจสอบพฤติกรรมมิเรอร์ + เก็บถาวรโดยไม่ต้องซื้อ NVMe ล่วงหน้า (c) การทดสอบชั่วคราวที่ยอมรับการสูญเสียเมื่อรีบูตได้
เมื่อระดับการเขียนเป็น tmpfs StorageTierFlush จะใช้ค่าเริ่มต้นที่เข้มงวดมากขึ้น — mirror_min_age 2 นาที, evict_age 15 นาที (เทียบกับ 5 นาที / 120 นาทีสำหรับ NVMe จริง)
ระดับต่างๆ ได้รับการกำหนดค่าเพียงครั้งเดียวผ่าน Config > Storage > Storage Tiers และจัดเตรียมโดยอัตโนมัติ — ไม่มีการแก้ไข mkfs/mount/fstab ด้วยตนเองบนโฮสต์
ในการบู๊ตครั้งแรก (ไม่มีระดับการเขียนใน DB) ระบบจะสร้างระดับการเขียนที่สนับสนุน tmpfs โดยอัตโนมัติพร้อมการจัดสรร MemAvailable 30% จุดเมานท์ /mnt/nvme_write
Stream.archive_path/1 ส่งคืนเทียร์ 'ดีต่อสุขภาพ' แรก — write_buffer หากเมานต์+เขียนได้+free_pct เหนือระดับความปลอดภัย ไม่เช่นนั้นจะถอยกลับไปเก็บถาวร (โหมดลดระดับ)
การเปลี่ยน tmpfs_size_pct ใน UI จะทริกเกอร์ umount + remount ด้วยขนาดใหม่ในการบันทึก
URL หลัก — เครื่องเล่น OSTV
ฟิลด์แพ็คเกจ
แพ็กเกจ API
นโยบายรหัสผ่าน
API ของผู้ค้าปลีก
การตั้งค่า
เขตข้อมูลผู้ใช้
การจัดการผู้ใช้
URL หลัก — เครื่องเล่น OSTV
แอปพลิเคชัน OSTV Player อนุญาตให้ผู้ใช้เปลี่ยน URL ฐานเซิร์ฟเวอร์ (ที่อยู่ API)
เหตุผล: การเปลี่ยน URL พื้นฐานมีไว้สำหรับผู้ดูแลระบบ/ผู้ใช้รูทเท่านั้น เพื่อให้สามารถสลับระหว่างเซิร์ฟเวอร์ได้ (เช่น การใช้งานจริงกับการทดสอบ)
เขตข้อมูลผู้ใช้
แพ็กเกจ API
ส่งคืนรายการแพ็คเกจที่ใช้งานอยู่ทั้งหมดพร้อมราคาและช่วงเวลาที่เรียกเก็บเงิน
รายชื่อผู้ใช้การจัดการ (ตัวแทนจำหน่าย / ผู้ให้บริการ)
ส่งกลับยอดเครดิตสำหรับผู้ใช้การจัดการเฉพาะ
ฟิลด์แพ็คเกจ
API ของผู้ค้าปลีก
API สำหรับผู้ค้าปลีก/ผู้ให้บริการ
นโยบายรหัสผ่าน
ต้องใช้รหัสผ่านเมื่อสร้างสมาชิก
ขั้นต่ำ 8 ตัวอักษร
อักษรตัวพิมพ์ใหญ่อย่างน้อย 1 ตัว (A-Z)
อักขระพิเศษอย่างน้อย 1 ตัว (!@#$%^&* ฯลฯ)
นำไปใช้กับ UI และ API
การตั้งค่า
การจัดเตรียมอัตโนมัติและความปลอดภัยตามระดับชั้น
การตรวจจับความจุ + ระบบไฟล์อัตโนมัติ: เมื่อเลือก NVMe ฟรีจากดรอปดาวน์ ความจุ (GB) จะถูกอ่านจาก lsblk -bn -o SIZE และ FS ปัจจุบันจาก blkid (พร้อมทางเลือกสำรองทั้งดิสก์)
กลไกการล้างระดับ — กระจกต่อเนื่อง
StorageTierFlush GenServer ทำงานทุกๆ 60 วินาที
เหตุใดมิเรอร์ต่อเนื่องจึงเต้น "รอ 60 นาที ย้ายเป็นกลุ่ม": (1) โหลดของ RAID เท่ากัน — ไม่มีการระเบิด 5GB ในขอบเขตชั่วโมง เพียงหยดส่วน 7MB;
ความปลอดภัยของเซ็กเมนต์ที่กำลังดำเนินการ: มิเรอร์จะเลือกเฉพาะไฟล์ที่เก่ากว่า MIRROR_MIN_AGE_MINUTES ผ่านการค้นหา -mmin +5
การปรับแต่งต่อการปรับใช้ (.env)
500–1,000
กฎการปรับขนาด:
ปฏิทินแสดงตัวอย่าง DVR
แท็บ DVR Preview จะแสดงปฏิทินที่เซิร์ฟเวอร์เรนเดอร์โดยเน้นเฉพาะวันที่บันทึกข้อมูลบนดิสก์
วันที่มีการบันทึกสามารถคลิกได้ (สีน้ำเงิน) — การคลิกจะเป็นการป้อนข้อมูลวันที่และเวลาล่วงหน้าด้วยวันนั้นเวลา 00:00 น.
นำไปใช้ใน Stream.available_dvr_days/1 ผ่าน find -mindeep 4 -maxdeep 4 -type d บนการเมานต์แต่ละระดับ
ภาพรวม
API B2C (ธุรกิจกับผู้บริโภค) ให้การรับรองความถูกต้องและการเข้าถึงสตรีมสำหรับแอปพลิเคชันผู้เล่นปลายทาง
ตรวจสอบสิทธิ์ผู้ใช้และรับ auth_token สำหรับการเรียก API ครั้งต่อไป
วิธี
จุดสิ้นสุด
ขอเนื้อความ
พารามิเตอร์
พิมพ์
ที่จำเป็น
คำอธิบาย
ใช่
ชื่อเข้าสู่ระบบของผู้ใช้
รหัสผ่านผู้ใช้
ตัวอย่างคำขอ
ฟิลด์ตอบกลับ
การตอบสนองความสำเร็จ (200)
โทเค็นการรับรองความถูกต้องที่เข้ารหัสสำหรับการเรียก API ในภายหลัง
วัน/เวลาหมดอายุของโทเค็นในรูปแบบ ISO 8601
ตัวอย่างการตอบรับความสำเร็จ
การตอบสนองข้อผิดพลาด (403)
ข้อความอธิบายข้อผิดพลาด
รหัสสถานะ HTTP
ตัวอย่างการตอบสนองข้อผิดพลาด
ดึงข้อมูลเกี่ยวกับผู้ใช้ที่ได้รับการตรวจสอบสิทธิ์โดยใช้โทเค็นการตรวจสอบสิทธิ์
ฟิลด์ตอบกลับ
ชื่อผู้ใช้ของผู้ใช้ที่ได้รับการรับรองความถูกต้อง
ข้อความเซิร์ฟเวอร์ (เว้นว่างถ้าไม่มี)
สถานะการรับรองความถูกต้อง (1 = รับรองความถูกต้อง)
สถานะบัญชี: ใช้งานอยู่, ถูกแบน, ปิดการใช้งาน, ทดลองใช้งาน
วันหมดอายุบัญชี (null หากไม่จำกัด)
จำนวนการเชื่อมต่อที่ใช้งานอยู่ในปัจจุบัน
วันที่สร้างบัญชีในรูปแบบ ISO 8601
การเชื่อมต่อพร้อมกันสูงสุดที่อนุญาต
รายการรูปแบบสตรีมเอาต์พุตที่อนุญาต
ชื่อผู้ให้บริการของเจ้าของ/ผู้ค้าปลีกของผู้ใช้ (ค่าว่างหากไม่มี)
URL ของรูปภาพโลโก้ผู้ให้บริการ (ค่าว่างหากไม่มี)
URL ของรูปภาพโลโก้การยุบของผู้ให้บริการ 208x208 (เป็นค่าว่างหากไม่มี)
เวลาเซิร์ฟเวอร์ปัจจุบันในรูปแบบ ISO 8601
ตัวอย่างคำขอ
ดึงข้อมูลหมวดหมู่ที่กรองตามประเภท
ประเภทหมวดหมู่: สด vod หรือซีรีส์
รหัสหมวดหมู่เป็นสตริง
ชื่อที่แสดงหมวดหมู่
ID หมวดหมู่พาเรนต์ (0 ถ้าเป็น root)
แฮช MD5 ของเนื้อหาสำหรับการทำให้แคชใช้ไม่ได้
ตัวอย่างคำขอ
รับข้อมูลโดยละเอียดสำหรับรายการ VOD เฉพาะ รวมถึงข้อมูลเมตาและลิงก์สตรีม
รหัสสตรีม VOD (UUID)
URL รูปภาพปก
ตัวระบุ TMDB
URL รูปภาพฉากหลัง
สตริงประเภท
โครงเรื่อง / คำอธิบาย
สมาชิกนักแสดง
ค่าเรตติ้ง (0-10)
ชื่อผู้กำกับ
วันที่วางจำหน่าย
ระยะเวลาเป็นวินาที
ระยะเวลาเป็นสตริงที่จัดรูปแบบ
อาร์เรย์ของรหัสหมวดหมู่
1 หากเป็นเนื้อหาสำหรับผู้ใหญ่ 0 หากเป็นอย่างอื่น
รหัสสตรีม VOD
ชื่อวีโอดี
วันที่เพิ่ม (ISO 8601)
URL ลิงก์สตรีม
ข้อมูลเมตาตัวแปลงสัญญาณวิดีโอ/เสียง
รับข้อมูลซีรีส์พร้อมรายการซีซั่นและตอนทั้งหมด โดยจัดกลุ่มตามหมายเลขซีซั่น
รหัสซีรี่ส์ (UUID)
หมายเลขฤดูกาล
ชื่อที่แสดงของซีซัน
จำนวนตอนในฤดูกาล
วันที่ออกอากาศของฤดูกาล
ภาพรวม/คำอธิบายของฤดูกาล
URL รูปภาพปกซีซัน
แผนที่ที่คีย์ด้วยสตริงหมายเลขฤดูกาล
ฟิลด์วัตถุตอน
รหัสตอน
รหัสตอน TMDB
หมายเลขตอนภายในซีซัน
วันที่เพิ่ม (ISO 8601)
หมายเลขฤดูกาล
ออบเจ็กต์ข้อมูลตอน (โครงสร้างเดียวกับข้อมูล VOD)
URL ลิงก์สตรีม
ข้อมูลเมตาตัวแปลงสัญญาณวิดีโอ/เสียง
การหมดอายุของโทเค็นขึ้นอยู่กับบทบาทของผู้ใช้: ผู้ดูแลระบบ = 365 วัน อื่นๆ = 30 วัน|บัญชีที่ถูกปิดใช้งานไม่สามารถตรวจสอบสิทธิ์ได้ (ส่งคืน 403)|การเข้าสู่ระบบที่สำเร็จแต่ละครั้งจะอัปเดตการประทับเวลา Last_login ของผู้ใช้|โทเค็นจะถูกเข้ารหัสและมี user_id ชื่อผู้ใช้ บทบาท และการหมดอายุ
การตอบสนองความสำเร็จ (200)
โทเค็นการตรวจสอบสิทธิ์ที่ได้รับจาก /auth จุดสิ้นสุด