Konversi Video ke WebM di CachyOS
Skrip otomatis dengan Bun dan FFmpeg untuk mengonversi video masal ke format WebM yang ringan dan berkualitas.
Halo semuanya! Mari kita buatkan skrip yang tangguh untuk laptop ThinkPad L570 kamu. Karena CPU Intel Core i5-7200U punya keterbatasan core, kita akan menggunakan VP9 (codec standar WebM) dengan pengaturan yang dioptimalkan agar kualitasnya tetap tajam tapi ukurannya mungil, tanpa membuat laptopmu kepanasan berlebih.
Di era web modern, format video memegang peranan penting dalam performa situs. WebM dengan codec VP9 menawarkan rasio kompresi yang jauh lebih baik dibandingkan MP4 H.264 tradisional, sehingga halaman web Anda akan memuat lebih cepat dan menghemat bandwidth. Dengan skrip sederhana ini, Anda bisa mengonversi puluhan file video secara otomatis tanpa harus mengorbankan waktu dan tenaga untuk proses manual.

Kita akan menggunakan Bun.spawn untuk memanggil ffmpeg secara sekuensial (satu per satu) agar RAM 16GB kamu tetap lega untuk tugas lain selama proses berjalan. Pendekatan ini sangat cocok untuk laptop dengan prosesor dual-core seperti i5-7200U, karena konversi paralel justru akan membuat sistem stuttering dan suhu melonjak tidak terkendali.
Langkah-Langkah Eksekusi
1. Persiapan: Install FFmpeg dan Bun
Pastikan ffmpeg dan bun sudah terpasang di sistem CachyOS kamu. Gunakan pacman untuk instalasi cepat:
sudo pacman -S ffmpeg bunJika Anda belum memiliki Bun, kunjungi situs resmi Bun untuk panduan instalasi alternatif. FFmpeg biasanya sudah tersedia di repositori default CachyOS.
2. Skrip Bun (convert-to-webm.ts)
Simpan skrip ini di folder yang sama dengan folder bakxoje milikmu. Pastikan struktur folder sesuai dengan yang Anda gunakan.
import { Glob } from "bun";
import { existsSync, mkdirSync } from "node:fs";
import path from "node:path";
const sourceDir = "bakxoje/pidio";
const outputDir = "bakxoje/pidio/webm_output";
const videoExtensions = ["mp4", "mkv", "avi", "mov", "flv", "wmv"];
// Buat folder output agar hasil konversi rapi
if (!existsSync(outputDir)) {
mkdirSync(outputDir, { recursive: true });
}
const glob = new Glob(`*.{${videoExtensions.join(",")}}`);
console.log("🎬 Memulai proses konversi ke WebM (VP9)...");
let processed = 0;
for (const file of glob.scanSync(sourceDir)) {
const inputPath = path.join(sourceDir, file);
const fileName = path.parse(file).name;
const outputPath = path.join(outputDir, `${fileName}.webm`);
console.log(`\n⏳ Mengonversi [${processed + 1}/64]: ${file}`);
const proc = Bun.spawn([
"ffmpeg",
"-i", inputPath,
"-c:v", "libvpx-vp9",
"-crf", "30",
"-b:v", "0",
"-deadline", "good",
"-cpu-used", "2", // Menggunakan resource CPU secara efisien untuk i5-7200U
"-c:a", "libopus", // Codec audio terbaik untuk WebM
"-y",
outputPath
], {
stdout: "inherit",
stderr: "inherit",
});
await proc.exited;
processed++;
}
console.log(`\n✨ Selesai! ${processed} video telah dikonversi ke WebM di: ${outputDir}`);Skrip ini menggunakan Glob untuk mencari semua file dengan ekstensi yang ditentukan di dalam sourceDir, lalu memprosesnya satu per satu. Opsi -cpu-used 2 sangat penting untuk CPU Intel generasi ke-7 agar proses berjalan lancar tanpa overheating.
3. Cara Menjalankan
Buka terminal favoritmu dan jalankan perintah berikut:
bun run convert-to-webm.tsAnda akan melihat log progres di terminal, mulai dari daftar file yang sedang dikonversi hingga ringkasan akhir. Jika terjadi error, pastikan path folder sudah benar dan file video tidak korup.
Kenapa Settingan Ini "Optimal" buat Kamu?
Kombinasi parameter yang kami pilih bukanlah asal-asalan. Setiap opsi memiliki alasan teknis yang kuat, terutama untuk laptop dengan spesifikasi terbatas.
- Codec libvpx-vp9 + libopus: Ini adalah standar emas untuk WebM. Kualitasnya jauh melampaui MP4 H.264 pada ukuran file yang sama, dan didukung penuh oleh semua browser modern.
- CRF 30: Ini adalah sweet spot. Kamu tidak akan melihat perbedaan visual yang berarti dibanding file aslinya, tapi ukuran filenya akan menyusut drastis. CRF (Constant Rate Factor) mengontrol kualitas; nilai 30 memberikan keseimbangan sempurna antara ukuran dan ketajaman.
- Sequential Processing: Skrip ini memproses satu per satu. Mengingat laptop kamu hanya punya 2 Core fisik (4 Thread), menjalankan konversi paralel justru akan membuat sistem stuttering (patah-patah) dan suhu melonjak. Dengan antrian sekuensial, CPU tetap stabil dan Anda bisa melakukan aktivitas lain.
- Aman untuk Web: Audio menggunakan Opus, codec audio paling efisien saat ini. Sangat cocok untuk performa web maksimal, dengan latensi rendah dan kualitas tinggi pada bitrate rendah.
Selain itu, penggunaan -deadline good dan -cpu-used 2 memastikan bahwa encoding berjalan dengan kecepatan yang wajar tanpa mengorbankan kualitas secara signifikan. Untuk penggunaan di website, hasil konversi ini sudah lebih dari cukup.
Analisis 5W + 1H
Untuk memahami konteks dan manfaat skrip ini secara utuh, mari kita bedah menggunakan kerangka 5W+1H yang mengalir natural:
- What: Otomatisasi konversi file video masal ke format WebM/VP9 menggunakan Bun dan FFmpeg.
- Who: Ditujukan untuk pengguna Linux (khususnya CachyOS) yang mengutamakan efisiensi daya dan performa, serta ingin mengoptimasi aset video untuk web.
- Where: Eksekusi lokal di lingkungan terminal menggunakan Bun Runtime, pada laptop ThinkPad L570 dengan CPU Intel Core i5-7200U.
- When: Digunakan saat ingin mengoptimasi aset video untuk website "Layar Kosong" atau penghematan penyimpanan, atau sebelum melakukan deployment konten video ke server.
- Why: Karena WebM menawarkan rasio kompresi jauh lebih baik dibanding MP4 konvensional untuk kebutuhan web modern, sehingga mempercepat loading dan menghemat bandwidth pengunjung.
- How: Menggunakan skrip TypeScript sekuensial dengan
Bun.spawnuntuk menjaga stabilitas suhu CPU dual-core, serta parameter FFmpeg yang dioptimalkan (VP9, CRF 30, libopus).
Dengan pendekatan ini, Anda tidak hanya mendapatkan video yang ringan, tetapi juga pengalaman yang lebih nyaman karena laptop tetap responsif selama proses konversi berlangsung.
Tips Pro untuk CachyOS:
Karena konversi 64 video akan memakan waktu dan membebani CPU, kamu bisa menjalankan skrip ini dengan nice agar laptop tetap responsif untuk aktivitas lain seperti browsing atau koding:
nice -n 19 bun run convert-to-webm.tsPerintah nice -n 19 akan memberi prioritas paling rendah pada proses konversi, sehingga sistem akan memprioritaskan aplikasi lain dibanding ffmpeg. Ini sangat berguna jika Anda tidak ingin konversi mengganggu pekerjaan utama.
Dengan skrip sederhana ini, Anda dapat mengonversi puluhan video ke WebM dengan mudah dan efisien. Selamat mencoba, dan semoga website Anda semakin cepat!