ระบบสำหรับอัปโหลดวิดีโอและแปลงไฟล์วิดีโอเป็นคุณภาพต่างๆ เพื่อการสตรีมมิ่ง ระบบนี้ประกอบด้วย Backend API ที่พัฒนาด้วย Go
- ✅ อัปโหลดวิดีโอไปยัง S3 หรือ Minio
- ✅ แปลงวิดีโอเป็นความละเอียด 1080p และ 720p ที่ 24fps
- ✅ ตัดวิดีโอเป็นไฟล์ .ts ขนาด 10 วินาทีต่อไฟล์
- ✅ บันทึกข้อมูลไฟล์และ metadata ลงฐานข้อมูล
- ✅ อินเตอร์เฟซสำหรับอัปโหลดวิดีโอที่สวยงาม
- ✅ การเล่นวิดีโอแบบสตรีมมิ่ง
- ✅ สถาปัตยกรรมแบบ Clean Architecture
โครงสร้างโปรเจคออกแบบตามหลัก Clean Architecture ประกอบด้วย:
video-transcoding-system/
├── cmd/ # จุดเริ่มต้นของแอปพลิเคชัน
│ ├── api/ # API เซิร์ฟเวอร์
│ └── migrate/ # ไฟล์สำหรับจัดการ Migration
├── internal/ # โค้ดที่ใช้เฉพาะภายในแอปนี้
│ ├── domain/ # Entities (Domain Layer)
│ ├── usecase/ # Use Cases (Application Layer)
│ ├── adapter/ # Interface Adapters (Controller, Repository)
│ └── infrastructure/ # Frameworks & Drivers (External tools)
├── pkg/ # โค้ดที่สามารถใช้ข้าม projects
│ ├── logger/ # ระบบบันทึกล็อก
│ └── config/ # ระบบการตั้งค่า
├── migrations/ # ไฟล์ SQL migrations
└── scripts/ # สคริปต์อัตโนมัติต่างๆ
- Go 1.23 หรือสูงกว่า
- FFmpeg และ FFprobe
- PostgreSQL
- Minio หรือ AWS S3
- โคลนโปรเจคนี้:
git clone https://github.com/yourusername/video-transcoding-system.git
cd video-transcoding-system- รันสคริปต์ตั้งค่า:
chmod +x setup.sh
./setup.sh- ปรับแต่งไฟล์
.envตามความต้องการ:
nano .env- เข้าสู่ไดเรกทอรี frontend:
cd frontend- ติดตั้ง dependencies:
npm installด้วย Go โดยตรง:
./run.shหรือใช้ Makefile:
make runcd frontend
npm run devรันทั้งระบบด้วย Docker Compose:
docker-compose up -dGET /api/v1/health- ตรวจสอบสถานะ API
POST /api/v1/videos- อัปโหลดวิดีโอใหม่GET /api/v1/videos/:id- ดึงข้อมูลวิดีโอตาม IDGET /api/v1/users/videos- ดึงรายการวิดีโอของผู้ใช้
# Public Routes
POST /api/v1/auth/register - สมัครสมาชิกใหม่
POST /api/v1/auth/login - เข้าสู่ระบบ
# Protected Routes (ต้องการ Authentication)
GET /api/v1/users/me - ดึงข้อมูลผู้ใช้ปัจจุบัน
PUT /api/v1/users/profile - อัปเดตโปรไฟล์ผู้ใช้
PUT /api/v1/users/password - เปลี่ยนรหัสผ่าน
# Admin Routes (ต้องการสิทธิ์ผู้ดูแลระบบ)
GET /api/v1/users - ดึงรายการผู้ใช้ทั้งหมด
DELETE /api/v1/users/:id - ลบผู้ใช้
PUT /api/v1/users/:id/role - อัปเดตสิทธิ์ผู้ใช้
รันการทดสอบทั้งหมด:
make testBuild แอปพลิเคชัน:
make buildสร้าง image และรันคอนเทนเนอร์:
make docker-build
make docker-runรัน migrations:
make migrateโปรเจคนี้อยู่ภายใต้ MIT License