- typed-ffmpeg adalah wrapper modern yang membuat FFmpeg dapat digunakan secara intuitif di Python
- Menyediakan dukungan tipe yang kuat, dokumentasi yang kaya, dan pelengkapan otomatis IDE untuk meningkatkan pengalaman pengembangan dan stabilitas kode
- Mendukung pembuatan konfigurasi filter graph yang kompleks dengan mudah, serta fitur lanjutan seperti visualisasi dan serialisasi JSON
- Instalasi dan penggunaan sederhana, serta dapat diuji langsung di browser melalui playground interaktif
- Terinspirasi dari ffmpeg-python sambil memperbaiki keterbatasan yang ada, dan ke depan direncanakan mendukung lebih banyak versi serta filter FFmpeg
Gambaran umum dan pentingnya typed-ffmpeg
- typed-ffmpeg adalah paket open-source untuk mengendalikan FFmpeg dengan gaya Pythonic modern
- Dibangun hanya dengan pustaka standar Python sehingga tanpa dependensi, dengan keunggulan keamanan dan kompatibilitas yang tinggi
- Keunggulan terbesar adalah dukungan tipe yang kaya, sintaks yang sederhana, pelengkapan otomatis, dan dokumentasi inline, sehingga pekerjaan filter FFmpeg yang kompleks bisa dikodekan dengan mudah dan aman
- Mengatasi keterbatasan ffmpeg-python yang ada, terutama integrasi IDE dan ketiadaan tipe, serta mendukung berbagai fitur baru seperti serialisasi JSON, validasi otomatis filter graph, dan graph visual
- Dalam proses wrapping dan otomatisasi nyata, GPT-3 dan Copilot membantu produktivitas pengembangan, tetapi inti pembuatan kode tetap mengandalkan generasi kode tradisional yang andal
Fitur utama (Features)
- Tanpa dependensi: hanya menggunakan pustaka standar Python
- Antarmuka intuitif: filter graph FFmpeg dapat disusun dengan mudah melalui kode Python
- Dukungan filter yang komprehensif: mendukung sebagian besar filter FFmpeg dan pelengkapan otomatis IDE
- Dokumentasi terintegrasi: docstring inline meminimalkan kebutuhan untuk merujuk dokumentasi eksternal
- Dukungan tipe yang kokoh: pemeriksaan tipe statis/dinamis meningkatkan keandalan kode dan mempermudah debugging
- Serialisasi filter graph: filter graph dapat disimpan/dipulihkan dalam format JSON
- Visualisasi graph: menyediakan fitur diagram filter graph melalui graphviz
- Validasi dan koreksi otomatis: mendeteksi kesalahan dalam filter graph dan melakukan koreksi otomatis
- Perluasan opsi input/output: dukungan berbagai codec/format memperluas cakupan pemanfaatan FFmpeg
- Fitur evaluasi parsial: mendukung modularisasi dan peningkatan reusabilitas filter graph
Fitur yang direncanakan
- Akan memperluas kompatibilitas yang luas ke versi selain FFmpeg 6.0
- Dukungan untuk lebih banyak filter kompleks juga direncanakan, dengan perluasan fitur yang terus berlanjut
Contoh cepat (Quick Usage)
import ffmpeg
# Membalik video secara horizontal lalu mengekspor
f = (
ffmpeg
.input(filename='input.mp4')
.hflip()
.output(filename='output.mp4')
)
f
- Sebagai contoh yang lebih kompleks, filter graph dapat merepresentasikan pemotongan beberapa segmen lalu menambahkan overlay dan drawbox
import ffmpeg.filters
import ffmpeg
in_file = ffmpeg.input("input.mp4")
overlay_file = ffmpeg.input("overlay.png")
f = (
ffmpeg.filters
.concat(
in_file.trim(start_frame=10, end_frame=20),
in_file.trim(start_frame=30, end_frame=40),
)
.video(0)
.overlay(overlay_file.hflip())
.drawbox(x="50", y="50", width="120", height="120", color="red", thickness="5")
.output(filename="out.mp4")
)
f
- Lebih banyak contoh dan penjelasan detail tersedia di dokumentasi
Playground interaktif
- Di browser, pengguna dapat bereksperimen dengan filter dan perintah FFmpeg, memvisualisasikan hasil, menguji berbagai opsi input/output, mempelajari contoh interaktif, dan membagikan filter graph
- Bahkan tanpa lingkungan lokal, ini adalah sarana yang sangat efektif untuk membuat prototipe dan mempelajari rantai filter FFmpeg
Latar belakang proyek dan ucapan terima kasih
- Proyek ini dimulai dari inspirasi ide pembuatan SDK otomatis berbasis dokumentasi FFmpeg oleh GPT-3
- Pembuatan inti dialihkan ke pendekatan generasi kode manual demi memastikan keandalan
- Dalam proses pengembangan, GitHub Copilot dan GPT-3 berkontribusi meningkatkan efisiensi pengembangan
- ffmpeg-python memberikan inspirasi besar pada gaya API dan desainnya
- Proyek ini dipersembahkan untuk Austin, anak dari pengembang
Dokumentasi dan referensi
- Informasi yang lebih detail dan fitur lanjutan dapat dilihat di Documentation resmi
- Selain instalasi paket tunggal, dukungan graphviz untuk fitur tambahan seperti visualisasi graph dapat diaktifkan melalui opsi terpisah
- Versi terpisah (typed-ffmpeg-compatible) juga tersedia untuk kompatibilitas dengan ffmpeg-python
1 komentar
Komentar Hacker News
/usr/bindengan opsi--helpatau-h, tingkat kegagalan untuk mendapatkan bantuan yang saya harapkan ternyata cukup tinggi. Untuk alat serumitffmpeg, pengenalan informasi tipe seperti ini patut didorong karena membantu menyadari masalah keberagaman tersebut sekaligus memberi manfaat nyata.man foojauh lebih andal dan berguna daripadafoo --helpataufoo -h.coloryang berjalan tanpa input. Juga tidak ada cara untuk menetapkan flagPopensepertisubprocess.CREATE_NO_WINDOWagar jendela CMD tidak muncul di aplikasi GUI. Untukffmpeg, ini bisa diatasi dengan eksekusi manual setelahffmpeg.compile(), tetapi padaffmpeg.probe()cara itu tidak bisa diterapkan. Selain itu, saya menemukan masalah source filter bisa ditangani denganffmpeg.sources.color, tetapi saya penasaran apakah ada cara menggunakan source filter arbitrer sepertivfilter/afilter.