Skip to main content
Video kelas di-host di Mux dengan policy signed — browser tidak bisa play tanpa JWT dari API.

Tipe video per lesson

videoTypeSumberPlayback
muxUpload langsung / import URL ke MuxMux Player + signed token
youtubeURL YouTubeEmbed / link
google-driveLink DriveExternal
externalURL lainExternal
Production utama: Mux (kualitas, analytics, thumbnail).

Alur upload Mux (admin)

Alternatif: import dari URL

POST import-mux-from-url — Mux pull video dari URL publik (YouTube file, CDN, dll.) tanpa upload manual.

Admin: daftar asset

GET /api/kelas/mux/list-all — semua asset di akun Mux (admin only).
UI: views/admin/MuxVideoList.tsx

Alur playback (peserta)

Frontend: @mux/mux-player-react di halaman kelas (views/kelas/).

Signing keys

JWT ditandatangani dengan key di env:
  • MUX_SIGNING_KEY_ID / MUX_SIGNING_KEY_PRIVATE_KEY_PKCS8
  • Per lesson disimpan muxSigningKeyId (untuk rotasi key)
Kode: apps/api/src/mux/mux-signing.ts, mux.service.ts

Status asset

Status MuxArti di UI
waiting / uploadingMasih proses upload
preparingTranscode
readyBisa play; playbackId tersedia
erroredUpload gagal — cek Mux dashboard
Polling: getMuxStatus(lessonId) di KelasService.

Hapus video

deleteMuxAsset — hapus di Mux + reset field lesson ke videoType: youtube.

Keamanan

Tanpa enrollment paid ke course yang berisi lesson, API menolak:
  • detail course
  • playback token
  • update progress

Setup Mux

Tutorial API key & signing: Mux (eksternal)

File penting

FileIsi
kelas.service.tsUpload, status, token, progress
kelas.routes.tsHTTP endpoints
kelas.repository.tsQuery course/chapter/lesson
mux.service.tsClient Mux API