Transcoding
Bagaimana TubePress mengonversi unggahan menjadi rendition siap web dengan worker FFmpeg terdistribusi.
Transcoding mengubah satu file yang diunggah menjadi beberapa rendisi MP4 yang ramah web, sehingga pemirsa mendapatkan menu kualitas, pemutaran cepat, dan codec yang konsisten terlepas dari apa yang diunggah. Ini juga menyertakan fitur opsional tambahan — watermark dan klip intro/outro — serta membangun sprite pratinjau scrub yang digunakan pemutar.
Semua pengaturan di sini dikonfigurasi di /admin/settings?tab=transcode, dibagi ke dalam sub-tab Formats, Queue, Servers, Watermark, Intros, dan Timeline. Transcoding dapat berjalan di server CMS itu sendiri atau didistribusikan ke worker khusus.
Mengapa Melakukan Transcoding
File yang diunggah secara mentah bisa berupa resolusi, codec, atau container apa pun. Transcoding menstandarisasinya menjadi rendisi MP4/H.264 dengan +faststart sehingga pemutaran dimulai sebelum file sepenuhnya diunduh, dan menghasilkan beberapa ukuran (misalnya 720p dan 480p) agar pemutar dapat menawarkan pemilih kualitas dan menyajikan file yang lebih kecil ke layar yang lebih kecil. Pass yang sama adalah tempat watermark dan klip pre/post-roll diterapkan, karena harus dikodekan ke setiap rendisi.
Pipeline Transcoding
Ketika sebuah video siap diproses, TubePress memasukkan satu pekerjaan per output ke dalam tabel transcode_jobs dan memprosesnya:
- Antrian. Pekerjaan dibuat untuk rung sumber resolusi penuh dan untuk setiap format aktif di bawah tinggi sumber, ditambah pekerjaan timeline jika pratinjau diaktifkan.
- Pengambilan. Seorang worker — server ini atau yang jarak jauh — mengambil pekerjaan tertunda berikutnya, dimulai dari rung sumber.
- Unduhan. Worker jarak jauh menarik sumber melalui HTTP (URL langsung yang diautentikasi dengan kunci yang melewati tautan media bertanda tangan).
- Transcode. FFmpeg mengkodekan rendisi, menerapkan trim, watermark, dan intro sesuai konfigurasi, melaporkan persentase kemajuan saat berjalan.
- Unggah & callback. Hasilnya diunggah kembali dalam beberapa bagian dan callback menandai pekerjaan selesai.
Status video mengikuti ini: tetap pada processing selama pekerjaan berjalan, berubah menjadi published segera setelah rung sumber selesai, dan hanya menjadi error jika rung sumber tidak dapat diproduksi. Rendisi yang lebih rendah terus diisi setelah publikasi.
Rendisi & Format
Format output sepenuhnya dapat diedit di tab Formats dan disimpan dalam tabel video_formats. Setiap format memiliki nama, postfix file (misalnya _720p.mp4), resolusi target, opsi FFmpeg mentah, flag keep aspect ratio, dan tombol aktif. Default bawaan adalah:
| Format | Resolusi |
|---|---|
| 720p | 1280 × 720 |
| 480p | 854 × 480 |
| 360p | 640 × 360 |
Dua aturan menjaga kualitas tetap wajar. TubePress tidak pernah memperbesar resolusi: format apa pun yang setara atau di atas tinggi sumber akan dilewati. Dan kualitas tertinggi asli selalu dipertahankan — jika watermark atau trim sedang digunakan, maka akan dikodekan ulang menjadi rendisi sumber resolusi penuh (ditampilkan dengan bintang di antrian), jika tidak file sumber disajikan apa adanya. Opsi Trim start (0–300 detik) dapat memotong beberapa detik pertama setiap video; seperti watermark, opsi ini diterapkan ke setiap format termasuk sumber.
Antrian Pekerjaan
Tab Queue (/admin/settings?tab=transcode&sub=queue) mengelompokkan pekerjaan berdasarkan video dan memungkinkan Anda memfilter berdasarkan All / Pending / Processing / Completed / Failed. Setiap video menampilkan lencana per rung — rung sumber berbintang, kemudian setiap resolusi, lalu TIMELINE — diwarnai berdasarkan status pekerjaan:
Konsol per-video (ikon terminal) menampilkan daftar pekerjaan langsung, worker yang menangani setiap rung, waktu yang telah berlalu, dan pesan kesalahan apa pun. Tombol Retry failed jobs mengantri ulang semua yang saat ini gagal dalam satu klik.
Server Transcode Jarak Jauh
Transcoding sangat berat pada CPU, sehingga Anda dapat memindahkannya dari server web. Pada tab Servers, This Server mengatur berapa banyak pekerjaan FFmpeg yang berjalan secara lokal sekaligus (1–4, atau 0 untuk menggunakan worker jarak jauh saja) dan memungkinkan Anda mengganti jalur FFmpeg. Di bawahnya Anda mendaftarkan worker jarak jauh; pekerjaan didistribusikan secara otomatis ke yang paling sedikit bebannya, dan setiap worker memiliki batas max concurrent jobs (aturan yang baik adalah satu pekerjaan per dua inti CPU).
- Tambahkan server. Klik Add Server, beri nama dan URL seperti
http://YOUR-IP:8090, lalu simpan. Kunci API dan perintah mulai ditampilkan segera. - Instal FFmpeg + PHP. Di server worker jalankan
sudo apt install ffmpeg php-cli php-curl. - Deploy worker. Unduh
transcode-worker.php(dari/api/transcode-worker-downloadatau tautanwgetsementara), unggah, dan buka port dengansudo ufw allow 8090/tcp. - Jalankan. Jalankan worker dengan kunci Anda:
php transcode-worker.php --port=8090 --key=YOUR_API_KEY- Verifikasi. Klik Check; worker yang sehat melaporkan Online dengan encoder yang terdeteksi dan penggunaan CPU/GPU langsung.
Akselerasi GPU (NVIDIA, AMD, Intel, atau Apple) terdeteksi dan digunakan secara otomatis. Worker menarik sumber, melakukan transcoding, melaporkan kemajuan, dan mengunggah hasil dalam beberapa bagian kembali ke CMS — unggahan berbagian inilah yang membuat setiap permintaan di bawah batas 100 MB Cloudflare. Untuk host tanpa pengawasan, panduan pengaturan menyertakan unit systemd agar worker restart saat boot.
Pemantauan & Percobaan Ulang
Sistem ini dibangun agar video tidak pernah ditinggalkan secara diam-diam. Enkode yang gagal dicoba ulang secara otomatis dengan penundaan yang semakin meningkat — dari sekitar setengah menit hingga beberapa jam — karena sebagian besar kegagalan bersifat sementara (CDN yang lambat atau tidak stabil). Selain itu, tugas pemulihan setiap jam mengantri ulang pekerjaan yang masih ditandai gagal, sehingga terus mencoba hingga rendisi tersedia. Tidak diperlukan klik manual, meskipun tombol Retry failed jobs tersedia jika Anda ingin memaksanya.
Jika rung sumber itu sendiri gagal secara permanen, pekerjaan sub-format yang bergantung padanya dibatalkan (tidak dapat dilanjutkan tanpa sumber) dan video ditandai error; pemulihan masih akan mencoba membawanya kembali. Ketika rung sumber akhirnya selesai, video dipublikasikan secara otomatis.
Persyaratan
FFmpeg harus tersedia di mana pun transcoding berjalan:
- Pemrosesan lokal: instal FFmpeg di server CMS (
sudo apt install ffmpeg). Halaman Transcode menampilkan versi yang terdeteksi setelah terpasang. - Pemrosesan jarak jauh: setiap worker membutuhkan FFmpeg ditambah
php-clidanphp-curl, setidaknya 2 inti CPU dan 2 GB RAM, serta port worker yang terbuka.
Langkah Selanjutnya
Masih kesulitan?
Buka tiket dari dasbor Anda dan tim kami akan membantu Anda.