title: PPT BUDAYA INDONESIA HTML CONTROL LOGIC
emoji: π
colorFrom: indigo
colorTo: indigo
app_build_command: npm run build
app_file: dist/index.html
sdk: static
pinned: false
license: apache-2.0
short_description: 'Warna-Warni Nusantaraβ: Menyelami Kekayaan Budaya Indonesiaβ'
Interactive Video Presentation Controller
Sebuah sistem presentasi video interaktif dengan mode "Controller" dan "Preview" yang disinkronkan secara real-time menggunakan GitHub Gist API.
Tema Presentasi: "Warna-Warni Nusantara: Menyelami Kekayaan Budaya Indonesia"
(Tautan Demo Langsung di Hugging Face Spaces)
Konsep
Proyek ini memecahkan masalah presentasi jarak jauh di mana seorang presenter perlu mengontrol pemutaran video di layar audiens secara mulus. Ini dicapai dengan:
- Pra-pemrosesan Video: Sebuah skrip Python menggunakan OpenCV untuk memotong video presentasi utama menjadi segmen-segmen kecil, baik untuk pemutaran maju (
real) maupun mundur (reverse). - Frontend Cerdas: Aplikasi React yang melakukan pra-pemuatan (pre-loads) semua segmen video untuk transisi yang instan dan bebas kedipan.
- Sinkronisasi Real-time:
- Mode Controller: Digunakan oleh presenter. Memiliki kontrol penuh (maju, mundur, lompat segmen) dan menyimpan status halaman saat ini ke GitHub Gist setiap kali ada perubahan.
- Mode Preview: Digunakan oleh audiens. Secara berkala mengambil (polls) status terbaru dari GitHub Gist dan secara otomatis memutar segmen video yang sesuai.
Fitur Utama
- Transisi Video Super Mulus: Menggunakan teknik triple-buffering dengan 3 elemen video untuk menghilangkan kedipan saat berpindah segmen.
- Pra-pemuatan Cerdas: Semua segmen video diunduh terlebih dahulu saat aplikasi dimuat, memastikan tidak ada buffering saat presentasi.
- Dua Mode Operasi: Mode
controlleruntuk presenter dan modepreviewuntuk audiens. - Navigasi Penuh: Kontrol maju, mundur, lompat ke segmen tertentu, dan skip.
- Kontrol Keyboard: Navigasi menggunakan tombol panah (
ArrowLeft,ArrowRight) di mode controller. - Backend Ringan: Menggunakan GitHub Gist sebagai database real-time yang sederhana dan gratis.
Tumpukan Teknologi
- Backend & Pemrosesan Video:
- Python
- OpenCV
- tqdm
- Frontend:
- React
- TypeScript
- Vite (diasumsikan)
- Sinkronisasi:
- GitHub Gist API
Struktur Proyek
.
βββ python/ # Skrip untuk pemrosesan video
β βββ assets/ # Tempat menaruh video sumber (real & reverse)
β βββ results/ # Folder output untuk segmen video (diabaikan oleh Git)
β βββ cut_video.py # Skrip utama untuk memotong video
βββ public/ # Aset statis untuk aplikasi React
β βββ assets/ # Folder hasil pemotongan video HARUS dipindahkan ke sini
βββ src/ # Kode sumber aplikasi React
β βββ components/
β β βββ Player.tsx # Komponen inti pemutar video
β β βββ ...
β βββ services/
β β βββ githubService.ts# Logika untuk interaksi dengan API Gist
β βββ App.tsx # Komponen utama yang menangani preloading
β βββ types.ts # Definisi tipe TypeScript
βββ .env.example # Template untuk variabel lingkungan
βββ .gitignore # Mengabaikan file yang tidak perlu
βββ README.md # Anda sedang membaca ini
Panduan Instalasi dan Penggunaan
Proses ini terdiri dari dua bagian utama: mempersiapkan segmen video dan menjalankan aplikasi web.
Bagian 1: Mempersiapkan Segmen Video (Python)
Langkah ini hanya perlu dilakukan sekali atau setiap kali Anda memiliki video sumber baru.
- Prasyarat: Pastikan Anda memiliki Python 3.x dan
pipterinstal. - Instal Dependensi: Buka terminal di dalam folder
python/dan instal pustaka yang diperlukan.pip install opencv-python tqdm - Siapkan Video Sumber:
- Letakkan video presentasi utama Anda di dalam folder
python/assets/dengan namappt_real.mp4. - Letakkan versi terbalik dari video tersebut di dalam folder yang sama dengan nama
ppt_reverse.mp4.
- Letakkan video presentasi utama Anda di dalam folder
- Jalankan Skrip: Jalankan skrip pemotongan video dari direktori root proyek.
Skrip ini akan membuat folderpython python/cut_video.pypython/results/yang berisi semua segmen video.mp4yang sudah dipotong.
Bagian 2: Menjalankan Aplikasi Web (React)
Pindahkan Aset Video: Langkah Krusial! Pindahkan folder
resultsyang baru saja dibuat dari dalampython/ke dalam folderpublic/. Struktur akhir harus menjadipublic/results/.public/ βββ results/ βββ real/ β βββ 0.mp4 β βββ ... βββ reverse/ βββ 0.mp4 βββ ...Prasyarat: Pastikan Anda memiliki Node.js dan
npm(atauyarn) terinstal.Instal Dependensi Frontend: Buka terminal di direktori root proyek dan jalankan:
npm installKonfigurasi Variabel Lingkungan:
- Buat file bernama
.envdi direktori root proyek. - Salin konten dari
.env.exampleke dalam.env. - Isi file
.envdengan kredensial Anda:VITE_GIST_ID=ID_GIST_ANDA VITE_GITHUB_TOKEN=TOKEN_AKSES_PRIBADI_GITHUB_ANDA VITE_GIST_ID: ID dari Gist publik/rahasia yang akan Anda gunakan sebagai database.VITE_GITHUB_TOKEN: Personal Access Token (PAT) dari GitHub dengan izin (scope) untukgist.
- Buat file bernama
Jalankan Server Pengembangan:
npm run devBuka browser Anda dan kunjungi
http://localhost:5173(atau port yang ditampilkan).Build untuk Produksi:
npm run buildHasilnya akan ada di dalam folder
dist/, yang siap untuk di-deploy.
Cara Menggunakan
- Mode Preview (Audiens): Cukup buka aplikasi. Ini adalah mode default. Layar akan secara pasif menunggu pembaruan dari Gist.
- Mode Controller (Presenter):
- Klik tombol "Mode" atau ikon sejenisnya.
- Login (jika ada implementasi login).
- Sekarang Anda berada di mode
controller. Gunakan tombolβ¨danβ©di layar atau tombol panah keyboard untuk bernavigasi. Setiap perubahan akan secara otomatis disimpan ke Gist, dan layar audiens akan mengikutinya.
Lisensi
Proyek ini dilisensikan di bawah Lisensi Apache 2.0. Lihat file LICENSE untuk detailnya.
Copyright
Β© 2025 Aditya Dwi Nugraha. All Rights Reserved.