5 puan yazan GN⁺ 2025-05-31 | 1 yorum | WhatsApp'ta paylaş
  • 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

 
GN⁺ 2025-05-31
Hacker News yorumları
  • İnsanlar her komut satırı seçenek ayrıştırıcısının ya da araç setinin başlı başına bağımsız ve eksiksiz bir yapılandırma dili olduğunu fazlasıyla küçümsüyor; her aracı, o dil içinde çalışan ayrı bir program ya da yapılandırma olarak görmek gerekiyor. Unix shell'deki kelime ayırma kuralları ve yüzeyde benzer görünen sözdizimi nedeniyle aslında çok büyük bir çeşitlilik olmasına rağmen, insanlar bunu gereğinden fazla tek tip sanıyor. Kişisel olarak /usr/bin içindeki tüm programları --help, -h seçenekleriyle çalıştırdığımda, beklediğim yardım metnini alamadığım başarısızlık oranı epey yüksekti. ffmpeg gibi 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.
    • Deneyimime göre man foo, foo --help ya da foo -h komutlarından çok daha güvenilir ve kullanışlı.
    • Yeni başlayan biri olarak, somut olarak nerede çakışma yaşandığını ve asıl karşıtlığın hangi noktada olduğunu merak ediyorum.
  • Projenin aktif olarak geliştiriliyor olması etkileyici, ancak ffmpeg-python ile benzer bazı sorunları var gibi görünüyor. Örneğin girdi olmadan çalışan color gibi filtrelerin nasıl belirtileceği görünmüyor. GUI uygulamasında CMD penceresinin açılmasını engellemek için subprocess.CREATE_NO_WINDOW gibi Popen bayraklarını belirtmenin bir yolu da yok. ffmpeg.compile() sonrasında elle çalıştırarak ffmpeg için bu aşılabiliyor ama ffmpeg.probe() tarafında aynı yöntem uygulanamıyor. Ayrıca kaynak filtre sorununu ffmpeg.sources.color ile çözdüm, ancak rastgele bir kaynak filtresini vfilter/afilter gibi kullanmanın bir yolu olup olmadığını merak ediyorum.
  • Python ile betik tabanlı video işleme yapacaksanız, Vapoursynth kullanmanızı güçlü biçimde tavsiye ederim. Bu araç en baştan video işleme amacıyla tasarlandı; aktif bakımı, topluluğu ve araç ekosistemi de oldukça güçlü. ffmpeg CLI'ına bağlı kalmadan daha özgür kullanılabiliyor. Vapoursynth ana sayfası
  • Gerçekten harika bir fikir; ben şahsen bu projenin TypeScript sürümünü bekliyorum.
    • Jules önizleme aracıyla TypeScript sürümünün nasıl görüneceğini kısaca test ettim. Uygulaması oldukça basit ama daha okunaklı bir yaklaşım akla geliyor. Çok kısa bir prompt'a kıyasla sonuç hiç fena değil. Merak edenler için multi-language-codegen branch'indeki kodu paylaşıyorum.
    • TypeScript sürümü de çıkarsa gerçekten harika olur.
    • TypeScript'i “tanrıların dili”ne benzeten bir şaka.
    • Resmî dokümanlarda TypeScript'ten bahsedilmiyordu.
  • ffmpeg komut satırı biçimi, makinenin okuyabileceği şekilde tanımlanmalı ki buradan farklı diller için kod otomatik üretilebilsin.
  • Özellikle görsel araç çok etkileyici. FFMPEG, modülerleştirme/görsel programlama ile erişilebilirliğin gerçekten artabileceği bir örnek gibi duruyor. Tüm özellikleri bilmeyen çok sayıda kullanıcı olduğundan, bu yaklaşım faydalı olabilir. UX tarafında DEL tuşuyla düğüm/kenar silme işlevini bekledim ama çalışmaması biraz hayal kırıklığı yarattı. Yine de genel olarak harika bir deneyim.
    • Nihayet MS'in DirectShow GraphEdit'ine benzer bir araç çıktı diye sevinç ifadesi.
  • Bunun gerçekten ilginç bir proje olduğunu düşünüyorum. Eğer ayrı komutlar arasında frame'leri pipe ile aktarmayı da desteklerse, FFMpeg kullanımının gerçek genişletilebilirliği açığa çıkar.
  • Bu proje bence çok havalı; ayrıca görsel olarak video düzenlemeye imkân veren newbeelearn'in video editör aracını da tanıtmak isterim. Bu araç da otomatik olarak ffmpeg komutları üretebiliyor.
  • Kısa bir destek mesajı: iyi iş.
  • Proje gerçekten çok havalı görünüyor.