- typed-ffmpeg, FFmpeg'i Python'da sezgisel biçimde kullanmayı sağlayan modern bir sarmalayıcıdır
- Güçlü tip desteği, zengin dokümantasyon ve IDE otomatik tamamlama ile geliştirici deneyimini ve kod güvenilirliğini artırır
- Karmaşık filtre grafiği yapılarını kolayca kurmayı sağlar; görselleştirme ve JSON serileştirme gibi gelişmiş özellikleri destekler
- Kurulum ve kullanım basittir; interaktif playground sayesinde tarayıcıda da denemeler yapılabilir
- ffmpeg-python'dan ilham alarak mevcut sorunları giderir; gelecekte daha fazla FFmpeg sürümü ve filtre desteği planlanmaktadır
typed-ffmpeg genel bakış ve önemi
- typed-ffmpeg, FFmpeg'i modern ve Pythonic bir yaklaşımla kontrol etmeyi sağlayan açık kaynaklı bir pakettir
- Yalnızca Python standart kütüphanesiyle geliştirildiği için bağımlılığı yoktur; yüksek güvenlik ve uyumluluk sunar
- En büyük avantajı; zengin tip desteği, sade sözdizimi, otomatik tamamlama ve satır içi dokümantasyon sayesinde karmaşık FFmpeg filtre işlerini kolay ve güvenli biçimde kodlayabilmesidir
- Mevcut ffmpeg-python'ın özellikle IDE entegrasyonu ve tip eksikliği gibi sınırlamalarını tamamlar; ayrıca JSON serileştirme, filtre grafiği otomatik doğrulama ve görsel grafikler gibi çeşitli yeni özellikler sunar
- Gerçek sarmalama ve otomasyon sürecinde GPT-3 ile Copilot geliştirme verimliliğine katkı sağlamış olsa da, kod üretiminin çekirdeğinde güvenilir geleneksel kod üretimi yaklaşımının benimsenmesi de dikkat çeken bir noktadır
Başlıca özellikler (Features)
- Bağımlılık yok: Yalnızca Python standart kütüphanesi kullanılır
- Sezgisel arayüz: FFmpeg filtre grafikleri Python koduyla kolayca oluşturulabilir
- Kapsamlı filtre desteği: FFmpeg filtrelerinin büyük kısmı ve IDE otomatik tamamlama desteklenir
- Entegre dokümantasyon: Satır içi docstring'ler sayesinde harici dokümantasyona duyulan ihtiyaç en aza iner
- Sağlam tip desteği: Statik/dinamik tip denetimi ile kod güvenilirliği ve hata ayıklama kolaylığı güçlenir
- Filtre grafiği serileştirme: Filtre grafikleri JSON biçiminde kaydedilip geri yüklenebilir
- Grafik görselleştirme: graphviz ile filtre grafikleri diyagram olarak gösterilebilir
- Otomatik doğrulama ve düzeltme: Filtre grafiği içindeki hataları tespit etme ve otomatik düzeltme özellikleri
- Genişletilmiş giriş/çıkış seçenekleri: Çeşitli codec/format desteğiyle FFmpeg'in kullanım alanı genişler
- Kısmi değerlendirme özelliği: Filtre grafiklerinin modülerliğini ve yeniden kullanılabilirliğini artırır
Planlanan gelecek özellikleri
- FFmpeg 6.0 dışındaki sürümler için geniş uyumluluk planlanmaktadır
- Daha fazla karmaşık filtre desteği eklenecek; sürekli özellik genişletme çalışmaları sürmektedir
Hızlı örnek (Quick Usage)
import ffmpeg
# Videoyu yatay olarak çevir ve çıktıyı al
f = (
ffmpeg
.input(filename='input.mp4')
.hflip()
.output(filename='output.mp4')
)
f
- Daha karmaşık bir örnekte, birden fazla aralığı kesip overlay ve drawbox ekleyen bir filtre grafiği ifade edilebilir
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
- Daha fazla örnek ve ayrıntılı açıklama dokümantasyonda görülebilir
İnteraktif playground
- Tarayıcı üzerinde FFmpeg filtrelerini ve komutlarını deneme, sonuçları görselleştirme, çeşitli giriş/çıkış seçeneklerini test etme, interaktif örneklerle öğrenme ve filtre grafiklerini paylaşma mümkündür
- Yerel ortam kurmadan FFmpeg filtre zincirlerini prototiplemek ve öğrenmek için oldukça etkili bir ortamdır
Proje arka planı ve teşekkürler
- Proje, GPT-3'ün FFmpeg dokümantasyonunu temel alarak SDK otomatik üretimi fikrinden ilham alınarak başlatılmıştır
- Çekirdek üretim, güvenilirliği sağlamak için elle yazılan kod üretimi yaklaşımına dönüştürülmüştür
- Geliştirme sürecinde GitHub Copilot ve GPT-3, geliştirme verimliliğinin artmasına katkı sağlamıştır
- ffmpeg-python, API stili ve tasarımıyla ilham vererek mimariyi önemli ölçüde etkilemiştir
- Proje, geliştiricinin çocuğu Austin'e adanmıştır
Dokümantasyon ve referanslar
- Daha ayrıntılı bilgi ve ileri seviye özellikler resmi Documentation içinde bulunabilir
- Tek paket kuruluma ek olarak, grafik görselleştirme gibi ek özellikler için ayrı seçeneklerle graphviz desteği etkinleştirilebilir
- ffmpeg-python ile uyumluluk için ayrı bir sürüm de sunulmaktadır: typed-ffmpeg-compatible
1 yorum
Hacker News yorumları
/usr/biniçindeki tüm programları--help,-hseçenekleriyle çalıştırdığımda, beklediğim yardım metnini alamadığım başarısızlık oranı epey yüksekti.ffmpeggibi karmaşık bir araca tip bilgisi eklemek, bu çeşitlilik sorununu fark etmeye yardımcı olmanın yanında pratik faydalar da sağlayabilir; bu yüzden cesaret verici bir çalışma.man foo,foo --helpya dafoo -hkomutlarından çok daha güvenilir ve kullanışlı.ffmpeg-pythonile benzer bazı sorunları var gibi görünüyor. Örneğin girdi olmadan çalışancolorgibi filtrelerin nasıl belirtileceği görünmüyor. GUI uygulamasında CMD penceresinin açılmasını engellemek içinsubprocess.CREATE_NO_WINDOWgibiPopenbayraklarını belirtmenin bir yolu da yok.ffmpeg.compile()sonrasında elle çalıştırarakffmpegiçin bu aşılabiliyor amaffmpeg.probe()tarafında aynı yöntem uygulanamıyor. Ayrıca kaynak filtre sorununuffmpeg.sources.colorile çözdüm, ancak rastgele bir kaynak filtresinivfilter/afiltergibi kullanmanın bir yolu olup olmadığını merak ediyorum.ffmpegCLI'ına bağlı kalmadan daha özgür kullanılabiliyor. Vapoursynth ana sayfasıffmpegkomut satırı biçimi, makinenin okuyabileceği şekilde tanımlanmalı ki buradan farklı diller için kod otomatik üretilebilsin.ffmpegkomutları üretebiliyor.