2 poin oleh GN⁺ 2025-12-28 | 1 komentar | Bagikan ke WhatsApp
  • Alat CLI berbasis Node.js yang dibuat agar perintah ffmpeg bisa dijalankan dengan bahasa Inggris biasa, sehingga pengeditan video dapat dilakukan dengan kalimat sederhana tanpa opsi yang rumit
  • Jika memasukkan perintah dalam bentuk kalimat seperti ff convert video.mp4 to gif, alat ini akan otomatis mengubahnya menjadi perintah ffmpeg lalu menjalankannya
  • Mendukung berbagai tugas seperti konversi format, kompresi, trim, ekstraksi audio, resize, pengaturan kecepatan, rotasi, penggabungan, dan lain-lain
  • Dengan opsi --dry-run, pengguna dapat melihat terlebih dahulu perintah ffmpeg tanpa benar-benar menjalankannya
  • Bekerja cepat secara offline tanpa koneksi internet atau AI, dan dapat digunakan pada lingkungan dengan ffmpeg terpasang serta Node.js 16 atau lebih baru

Ikhtisar

  • ezff adalah wrapper berbasis bahasa Inggris biasa yang dibuat untuk mempermudah penggunaan ffmpeg
    • Pengguna dapat memasukkan perintah dalam bentuk bahasa alami tanpa perlu menghafal flag ffmpeg yang rumit atau membaca manual
    • Contoh: ff convert video.mp4 to gif → otomatis membuat dan menjalankan perintah ffmpeg
  • Memerlukan Node.js 16 atau lebih baru dan ffmpeg yang sudah terpasang, serta bisa diinstal via npm dengan npm install -g ezff

Fitur utama

  • Menyediakan mode prompt interaktif
    • Jika hanya menjalankan perintah ff, alat ini akan menanyakan jalur file, jenis tugas, format output, dan seterusnya secara berurutan
    • Contoh:
      ? File path: video.mp4  
      ? What do you want to do? › Convert format  
      ? Convert to: › GIF  
      
    • Setelah dipilih, perintah ffmpeg akan dibuat dan dijalankan secara otomatis
  • Mendukung mode input perintah langsung
    • Pengguna dapat memasukkan tugas yang diinginkan dalam satu baris
    • Contoh:
      • ff convert video.mp4 to mp3
      • ff compress video.mp4 to 10mb
      • ff trim video.mp4 from 0:30 to 1:00
      • ff resize video.mp4 to 1280x720
      • ff speed up video.mp4 by 2x

Daftar tugas yang didukung

  • Konversi (Convert) : mengubah format (mp4 → gif, mp4 → mp3)
  • Kompresi (Compress) : menetapkan batas ukuran file (10mb, dll.)
  • Trim (Trim) : mengekstrak bagian tertentu (from 0:30 to 1:00)
  • Ekstraksi audio (Extract audio) : memisahkan audio saja dari video
  • Resize (Resize/Scale) : mengubah resolusi (1280x720, 720p)
  • Pengaturan kecepatan (Speed up / Slow down) : mengubah kecepatan pemutaran (2x)
  • Mendukung juga berbagai tugas lain seperti reverse, mute, rotate, flip, thumbnail, merge, grayscale, denoise, stabilize, dan sebagainya

Pratinjau perintah dan output

  • Dengan opsi --dry-run, hanya perintah ffmpeg yang akan ditampilkan tanpa benar-benar dieksekusi
    • Contoh:
      ff convert video.mp4 to gif --dry-run  
      → ffmpeg -i video.mp4 -vf fps=15,scale=480:-1:flags=lanczos -loop 0 -y video_output.gif
      
  • File hasil disimpan di folder yang sama dengan file asli dengan sufiks _output (video_output.gif)

Struktur cara kerja internal

  • Kalimat input dianalisis oleh Parser untuk mengekstrak action, file, dan opsi (seperti size)
  • Builder lalu memetakan informasi tersebut menjadi perintah ffmpeg
  • ffmpeg mengeksekusi perintah yang sebenarnya
  • Seluruh proses dilakukan secara offline berbasis pattern matching tanpa AI atau pemanggilan API

Instalasi dan lingkungan

  • Memerlukan Node.js 16 atau lebih baru
  • ffmpeg harus terpasang pada PATH sistem
    • macOS: brew install ffmpeg
    • Ubuntu/Debian: sudo apt install ffmpeg
    • Windows: choco install ffmpeg
  • Dirilis dengan lisensi MIT, dan Pull Request sangat diterima

Ringkasan

  • ezff adalah alat CLI sederhana yang menghilangkan beban mempelajari perintah ffmpeg
  • Memungkinkan otomatisasi pengeditan video hanya dengan input bahasa Inggris biasa
  • Dengan offline, eksekusi cepat, dan dukungan banyak fitur, alat ini berguna baik untuk developer maupun pemula dalam edit video

1 komentar

 
GN⁺ 2025-12-28
Komentar Hacker News
  • Saya heran melihat betapa kerasnya orang berusaha agar tidak perlu menghafal cara memakai ffmpeg yang dasar
    Sebenarnya ffmpeg tidak sesulit itu, dan manualnya juga menjelaskan konsep inti dengan baik
    Memang, setelan bawaan punya jebakan seperti memicu re-encode atau hanya mempertahankan satu stream, tetapi kalau ingat -c copy, sebagian besar masalah bisa dihindari
    Menyembunyikan “jebakan” seperti ini justru bisa menimbulkan masalah yang lebih besar. Misalnya, “ff convert video.mkv to mp4” sebenarnya cukup dengan remux sederhana, tetapi malah melakukan re-encode penuh
    “ffmpeg extract audio from video.mp4” juga selalu me-re-encode menjadi mp3 sehingga kualitasnya turun
    Multimedia pada dasarnya adalah ranah yang kompleks, jadi kalau kompleksitas ini disembunyikan, pengguna malah akan mempelajari konsep yang keliru
    Menurut saya, daripada membuat wrapper yang terlalu disederhanakan, lebih baik mendidik pengguna dengan cheat sheet yang bagus tentang konsep yang benar

    • Kita harus hati-hati dengan mengatakan “tidak sesulit itu”. Hal yang sulit berbeda-beda bagi setiap orang
      Ini mengingatkan saya pada perdebatan seperti “kenapa orang miskin tidak cari pekerjaan yang bagus saja”
      Meski begitu, saya paham maksudmu adalah memberi motivasi
    • Saya juga hanya memakai ffmpeg kira-kira sekali setahun, jadi rasanya saya perlu 350 tahun lagi untuk menghafal semua sintaksnya
    • Bagi orang yang sering memakainya mungkin memang mudah, tetapi buat orang seperti saya yang memakainya sekali tiap satu atau dua bulan, tetap terasa sulit
      Yang saya inginkan adalah skrip interaktif. Sesuatu yang bertanya “apa yang ingin kamu lakukan”, lalu membuatkan perintah yang sesuai sambil menjelaskan arti tiap argumennya
    • Mengatakan “tidak sesulit itu” terdengar seperti lelucon. ffmpeg punya ribuan opsi
      Contoh daftar opsi
    • Saya juga sering bilang konsep packaging Python “tidak sesulit itu”, tetapi perintah ffmpeg terasa hampir seperti bahasa tersendiri
      Masalah yang kamu sebutkan tampaknya bisa diselesaikan lewat bug report atau usulan fitur
      Menyembunyikan pengaturan kualitas mungkin memang diniatkan agar pengguna tidak perlu memikirkannya
      Menghindari re-encode saat hanya mengubah container bisa ditangani dengan tabel pemetaan
      Saya juga baru-baru ini merasakan kurangnya pemetaan seperti itu saat mengekstrak audio dan menambahkan thumbnail
  • Saat mengonversi video menjadi gif, saya selalu memakai filter palettegen
    Bersama contoh perintah, saya juga merujuk ke artikel blog terkait dari 10 tahun lalu

    • Sekarang ini kata “gif” sering dipakai secara keliru. Sebenarnya mp4 jauh lebih efisien
      Jika sebuah situs web memakai gif animasi, menggantinya dengan mp4 akan menghasilkan file yang lebih kecil, lebih mulus, dan warna yang lebih akurat
    • Kalau pngquant diintegrasikan sebagai filter ffmpeg, hasil paletnya mungkin bisa lebih baik
      Kalau begitu, ffmpeg bisa naik ke level gifski
    • Saya penasaran apakah ffmpeg sudah menambahkan dukungan palet per frame
      Dulu gifski menghasilkan kualitas yang lebih baik pada ukuran file yang sama berkat fitur ini
    • gifski adalah alternatif yang bagus karena sangat paham soal palet
    • Sayang sekali pengaturan seperti ini bukan nilai bawaan
  • Saya suka pendekatan seperti ini. Andai ada OS yang membuat seluruh CLI Linux lebih ramah manusia
    Saya membayangkan CLI yang konsisten dan berbasis bahasa alami, alih-alih perintah yang serba berbeda seperti tar, dd
    Contoh:

    zip my-folder into my-zip.tar with compression level 9  
    write my-iso ./zip.zip onto external hard drive  
    git delete commit 1a4db4c  
    convert ./video.mp4 and ./audio.mp3 into ./out.mp4  
    merge ./video.mp4 and ./audio.mp3 to ./out.mp4 without re-encoding
    

    Akan bagus kalau mendukung auto-complete dan berbagai cara pengungkapan. Tidak perlu sampai pakai LLM

    • Tetapi perintah bahasa alami seperti itu punya masalah ambigu
      Situasi seperti “bukan hard disk yang itu, yang satunya!” atau “hapus maksudnya benar-benar dihapus total?” bisa terjadi
    • Kalau tidak suka pendekatan seperti itu, pakai saja Windows atau macOS.
      Saya suka Linux justru karena karakteristik teknisnya tetap dipertahankan
    • Ada skrip helpme yang benar-benar mewujudkan ide seperti ini
      Contoh:
      helpme ffmpeg assemble all the .jpg files into an .mp4 timelapse video at 8fps
      helpme zip my-folder into my-zip.tar with compression level 9
      helpme git delete commit 1a4db4c
      
      Awalnya dibuat sebagai wrapper ffmpeg, tetapi sekarang berkembang menjadi asisten CLI serbaguna
  • Satu-satunya kegunaan chatbot AI adalah menulis perintah ffmpeg
    Kita bisa menyusun perintah yang dibutuhkan lewat percakapan, lalu menyimpan yang sering dipakai sebagai file .command

    • LLM adalah kemajuan yang luar biasa dalam hal parsing bahasa alami
      Masalahnya, orang jadi keliru mengira “kecerdasan” bisa dibuat hanya dari Wikipedia dan sedikit data lain
    • Walau terdengar pesimistis, LLM memang berguna untuk mengubah deskripsi teks pengguna menjadi perintah atau SQL
      Namun antarmukanya harus seperti tutor, menampilkan hasilnya agar pengguna bisa memeriksa, memahami, dan belajar
    • AI dulu kurang bagus menangani efek bounce seperti “putar video dari 0:00~0:03 lalu ulang dalam mode mundur”
    • Tetap saja, antarmuka seperti ini terasa seperti contoh inefisiensi yang memboroskan sumber daya GPU
      Karena 90% kebutuhan sebenarnya bisa diselesaikan dengan wrapper sederhana untuk ffmpeg
  • Saya tidak bisa mengakses repositori GitHub ezff

    • Saya juga mendapat error 404. Sepertinya tautan di bagian bawah halaman npm yang bermasalah
    • Tapi tetap bisa dilihat dari tab kode npm
  • Sepertinya lebih baik memakai LLM untuk melihat opsi yang diusulkan lalu mengubahnya sesuai kebutuhan
    Namun, karena ada konflik nama paket, sebaiknya pakai nama lain
    “ezff” muncul sebagai library Python, dan “ez-ffmpeg” muncul sebagai library untuk Rust

  • LLM adalah antarmuka yang sangat bagus untuk ffmpeg
    Memang kadang perlu 2~3 kali revisi untuk hal seperti sinkronisasi subtitle, tetapi tetap bisa menghasilkan perintah rumit dengan cepat

  • Saya penasaran dengan penjelasan “20 pola umum menangani 90% kebutuhan”
    Saya ingin tahu apakah itu ucapan AI, atau memang kata-kata penulisnya sendiri

  • npm? Melihat insiden keamanan yang meledak hampir setiap minggu, saya tidak ingin membawa kekacauan itu ke lingkungan pengembangan saya

  • Perubahan paradigma yang dibawa AI pada akhirnya adalah “berbicara kepada komputer dengan bahasa alami
    Perintah seperti “buatkan gif dari adegan memasak di film ini” akan menjadi kenyataan
    Paradigma berbasis perintah seperti sekarang pada akhirnya ditakdirkan untuk hilang

    • Meski begitu, nilai dari alat yang konsisten dan teruji tetap ada
      Tidak perlu meremehkan upaya seperti ini