Playtube - Job

Detail Pengerjaan Project

Detail instruksi pengerjaan project untuk Freelancer.

Tentang PlayTube

PlayTube is a video sharing & streaming PHP Script, PlayTube is the best way to start your own video sharing website like YouTube! our platform is fast, secured. PlayTube is the only video sharing site in the market that fully support native mobile apps, thanks to our advanced API system!

AuthorDeen Doughouz

More About PlayTube

Tentang Project

Project ini adalah kustomisasi dan pengembangan fitur pada platform PlayTube. PlayTube sudah memiliki banyak fitur bawaan yang sangat lengkap untuk sebuah platform video sharing. Namun, banyak hal-hal teknis yang butuh pembaruan. Berikut daftar Fitur yang ingin di implementasikan pada project ini:

Important Notice

PlayTube tidak menggunakan Framework seperti Laravel, CodeIgniter, atau lainnya. PlayTube menggunakan struktur kode yang dikembangkan sendiri oleh pembuatnya (Custom Framework). Oleh karena itu, Freelancer diharapkan memiliki kemampuan untuk memahami struktur kode yang ada dan mampu melakukan pengembangan sesuai dengan kebutuhan project.

1. Pembaruan Dependensi dan Keamanan

  • Update PHP dependencies to latest versions (vendor/composer)
  • Implement security patches for known vulnerabilities
  • Implement Database Query Optimization for better performance (Caching, Indexing, etc.) [Redis/Memcached]

Severely Outdated Player Your Version: MediaElement.js 4.2.9 (August 2018) Latest Version: 7.0.7 (2024) Age: 6+ years behind with known security vulnerabilities

Critical Findings

(Security & Bug Fixes)

  1. Known XSS Vulnerabilities CVE-2018-5776 and GitHub Issue #2532 Attack Vector: Cross-site scripting in Flash fallback and language files Current Protection: Your CSP headers are blocking most exploits ✅ Risk Level: MEDIUM (would be CRITICAL without security headers)

  2. Flash Feature Still Enabled ⚠️ features: [..., ‘flash’, ...] // ← Deprecated since 2020! Flash is dead and blocked by all modern browsers Still explicitly enabled in your player config Creates unnecessary security surface

  3. Insecure Configuration – The Problem: The MediaElement.js player (default video player) was missing auto-hide configuration, so controls stayed visible permanently during playback.

The Solution: Added comprehensive auto-hide settings to all video player templates:

javascript
alwaysShowControls: false // Controls will auto-hide
hideVideoControlsOnLoad: false // Show controls on load
controlsTimeoutDefault: 1500 // Hide after 1.5 seconds
controlsTimeoutMouseEnter: 2500 // Show for 2.5 seconds on hover
controlsTimeoutMouseLeave: 500 // Hide 0.5 seconds after mouse leaves
  1. Vulnerabilities of Outdated Dependencies Leading to easy/constant DDOS Attacks.

Issue

Dikarenakan Script ini Closed Source dari Author scriptnya. Struktur dependensi (Vendor/Composer) perlu di sesuaikan secara manual dan di struktur ulang agar kompatibel dengan versi PHP terbaru dan menghilangkan kerentanan keamanan yang ada.

2. Short Drama Module

  • Upload multi-part short films
  • Support comments, ratings, and monetization
  • Support multiple Subtitle
  • Implement Coin System for Short Drama
  • Implement Membership System for Short Drama

3. Encoding & Transcoding Improvements

Saat ini PlayTube menggunakan FFMPEG sebagai mesin encoding dan transcoding video. Namun, output yang dihasilkan kurang optimal untuk traffic besar. Oleh karena itu, proses encoding dan transcoding perlu disesuaikan dari yang saat ini menghasilkan file MP4 standar menjadi format HLS (HTTP Live Streaming) dengan segmentasi file .ts dan playlist .m3u8. Juga menerapkan Key Rotation untuk keamanan konten yang lebih baik dengan enkripsi AES-128 dan Signed URLs.

Ekspektasi:

  • Transcoding ke format HLS dengan segmentasi .ts dan playlist .m3u8
  • Key Rotation untuk keamanan konten dengan enkripsi AES-128 dan Signed URLs
  • Sinkronisasi dengan Secure Video (Video Hashing)
  • Output Transcoding dengan mapping direktori seperti dibawah
  • Preset dan Profil Encoding akan dibahas lebih lanjut (On Call)
  • Menerapkan Signed URLs untuk akses video yang aman

Struktur Output Transcoding:

📁 [hash]_[id]
├── 📁 2048
├── 📁 1440
├── 📁 1080
├── 📁 720
├── 📁 480
├── 📁 360
├── 📁 thumbnail
├── 📃 playlist.m3u8
├── 📃 enc.key
└── 📃 banner.jpg
└── 📃 meta.json

Penjelasan:

  • Folder 2048, 1440, 1080, 720, 480, dan 360 berisi segmen video .ts untuk resolusi masing-masing
  • File playlist.m3u8 adalah playlist utama yang mengarahkan ke segmen video
  • File enc.key adalah kunci enkripsi AES-128 untuk dekripsi video
  • Folder thumbnail berisi gambar thumbnail video
  • File banner.jpg adalah gambar banner video
  • File meta.json berisi metadata video seperti durasi, resolusi, dll.

Issue

Playback of .m3u8 streams frequently fails when using the MediaElement player. The player does not natively support HLS streaming in browsers like Chrome or Firefox, which causes videos to fail in such cases

4. New Video Player Integration

Mengintegrasikan video player baru yang lebih modern dan mendukung HLS streaming secara native, disini kita akan Mengintegrasikan Vidstack.

Selengkapnya tentang Vidstack dapat dilihat di Vidstack Official Website

Komponen utama yang akan diintegrasikan:

  • Vidstack Player Core
  • HLS.js for HLS playback support
  • Quality Selector for resolution switching
  • Subtitle Support for closed captions
  • Custom Controls for play, pause, volume, fullscreen, etc.

5. Midtrans Payment Gateway Integration

Integrasi Midtrans sebagai payment gateway untuk sistem monetisasi pada platform PlayTube.

6. Fixing Movies System

Saat ini sistem movies pada PlayTube mengalami beberapa masalah teknis yang perlu diperbaiki, seperti:

  • Not Showing on the Front Page
  • Implementing Capability to Scrape Movie Data from External Sources (e.g., TMDB, IMDB)
  • Implementing Auto Scrape Functionality for Movie Metadata
  • Implementing Auto Scrape movies source links from External Sources
  • Support Multi-Source Links for Movies
  • Support Multi-Subtitle for Movies

7. TV Series Module

  • Upload multi-episode TV series
  • Support comments, ratings, and monetization
  • Support multiple Subtitle
  • Implement Auto Scrape Functionality for TV Series Metadata
  • Implementing Capability to Scrape TV Series Data from External Sources (e.g., TMDB, IMDB)
  • Support Multi-Source Links for TV Series
  • Support Multi-Subtitle for TV Series
  • Support Season & Episode Management

Additional Update

  • Adding Cache Clear System
  • Adding VPN / Proxy Block Detection
  • Improve Device Fingerprinting & Session Control
  • Adding Auto Subtitle & Multi-language Translation
  • Improve & Adding Watch Later, History, Playlist System
  • Adding Video Save Draft System
  • Adding Smart Tag Generator
  • Adding IDM Protection (Block IDM if Detected)
  • Adding DevTools Protection (Block if DevTools is Opened)
  • Adding Block Direct Video URL Access (Only Play via Player)
  • Fixing Import System (YouTube, Facebook, HLS, etc.)
  • Fixing Short Video System (Upload, Playback, etc.)
  • Improve Structured MetaData Implementation for Better SEO
  • Adjusting UI of Paid Video System for better user experience
  • Fixing Embedded Video Issue on several links pattern

Ketentuan Pengerjaan

  • Freelancer wajib memiliki pengalaman dalam pengembangan web, khususnya dengan PHP dan framework yang digunakan oleh PlayTube.
  • Freelancer harus mampu bekerja secara mandiri dan menyelesaikan tugas sesuai dengan deadline yang telah disepakati.
  • Freelancer harus memberikan laporan perkembangan pekerjaan secara berkala.
  • Freelancer harus siap untuk melakukan revisi jika ada bagian yang belum sesuai dengan ekspektasi.
  • Freelancer harus menjaga kerahasiaan informasi dan data yang terkait dengan project ini.
  • Freelancer harus menyediakan dokumentasi teknis terkait perubahan dan penambahan fitur yang dilakukan.
  • Freelancer harus siap untuk memberikan dukungan teknis setelah project selesai, jika diperlukan.
  • Pembayaran akan dilakukan berdasarkan milestone yang telah disepakati bersama sebelum project dimulai.
  • Semua kode yang dihasilkan harus mengikuti standar coding yang baik dan mudah dipahami.
  • Freelancer harus melakukan testing menyeluruh terhadap fitur yang ditambahkan untuk memastikan tidak ada bug atau masalah teknis lainnya.
  • Pengerjaan Project dilakukan langsung pada VSCode yang terhubung ke server development yang telah disiapkan. Dilarang keras melakukan pengerjaan secara lokal pada komputer Freelancer dengan mendownload source code project.
  • Akses ke Database project akan disiapkan pada server development.

Output Pengiriman

  • Kode sumber lengkap dengan dokumentasi
  • Laporan perkembangan pekerjaan
  • Instruksi instalasi dan konfigurasi
  • Daftar perubahan dan penambahan fitur
  • Bukti pengujian dan validasi fitur yang telah ditambahkan
  • Informasi kontak untuk dukungan teknis setelah project selesai

FAQ

On this page