2 puan yazan GN⁺ 2023-12-13 | 1 yorum | WhatsApp'ta paylaş

FFmpeg CLI çoklu iş parçacığı desteği

  • FFmpeg komut satırı arayüzüne (CLI) çoklu iş parçacığı desteği getiren özellik, FFmpeg Git'e birleştirildi.
  • Bu değişiklik, FFmpeg 7.0'ın gelecek yılın başında yayımlanmasından önce gerçekleşti ve video transcoding için yaygın olarak kullanılan bu önemli açık kaynak projede büyük bir iyileştirme anlamına geliyor.
  • Çok çekirdekli işlemcilerin yaygınlaştığı günümüzde bu iyileştirme oldukça faydalı.

Karmaşık refaktör çalışması

  • FFmpeg geliştiricileri yakın tarihli bir teknik duyuruda bu çoklu iş parçacığı çalışmasını, "onlarca yıl içinde FFmpeg CLI'de yapılan en karmaşık refaktörlerden biri" olarak tanımladı.
  • Geliştiriciler, kullanıcılardan test yapmalarını isterken bulunan sorunların FFmpeg Trac'e bildirilmesini de talep etti.

Gerçekleştirilen teknik değişiklikler

  • Birleştirilen yamalar arasında iş parçacığı farkındalığına sahip transcoding zamanlama altyapısının eklenmesi, kodlamanın ayrı bir iş parçacığına taşınması ve bunun yanında çeşitli düşük seviye değişiklikler yer alıyor.
  • FFmpeg'i iş parçacığı mimarisine geçirmek; her bileşenin (demuxer, decoder, filter, encoder, muxer) zaten ayrı bir iş parçacığında çalışıyor olmasına rağmen artık gerçekten paralel şekilde çalışabileceği anlamına geliyor.

GN⁺ görüşü

  • FFmpeg'in çoklu iş parçacığı desteği, video transcoding işlerinin verimliliğini önemli ölçüde artırabilecek kayda değer bir gelişme.
  • Bu kadar karmaşık bir refaktör çalışması geliştiriciler için ciddi zorluklar yarattı ve FFmpeg'in modern bilgi işlem ortamına uyum sağlayarak gelişmeyi sürdürdüğünü gösteriyor.
  • Bu değişikliğin gerçek performans üzerindeki etkisinin kullanıcılar ve geliştiriciler tarafından nasıl gözlemleneceğini görmek ilginç olacak.

1 yorum

 
GN⁺ 2023-12-13
Hacker News görüşleri
  • Multithreading/processing optimizasyonu üzerine teori

    • Geçmişte tek bir görüntüyü okuyup işlemek ve render etmek ciddi zaman alıyordu; ancak donanım ve yazılım teknolojilerindeki ilerlemeler sayesinde artık çok daha hızlı.
    • Eskiden bir kareyi birden fazla worker'ın işlemesi verimliydi, ancak bugün tek bir worker bir kareyi birden fazla worker kullanmaktan daha verimli işleyebiliyor.
    • Modern sistemler, FFmpeg'in ilk oluşturulduğu dönemin sistemlerinden tamamen farklı bir ortama sahip; bu yüzden iş yükünün nasıl tanımlanacağı, planlanacağı, dağıtılacağı, izleneceği ve son çıktıda nasıl birleştirileceği konusunu yeniden düşünmek gerekiyor.
    • FFmpeg ekibinin bu meydan okumayı üstlenmesini takdir ediyor. FFmpeg, açık kaynak altyapının zirvesi ve medeniyetin inşası için vazgeçilmez bir unsur.
  • VDD@Dublin etkinliğindeki konuşmanın kaydı

    • Konuşmanın kaydını arıyordu, ancak ne yazarın sitesinde ne de burada kolayca bulunabiliyordu.
    • Güncelleme: YouTube'da bulundu!
  • Çok çekirdekli performans artışı üzerine düşünceler

    • Güncel encoder'lar aynı kareyi eşzamanlı işlemek için birden fazla thread kullanıyor. Kareyi birkaç bölgeye ayırıp her thread'in belirli bir bölgeyi işlemesi yaygın bir yöntem.
    • Alternatif olarak, keyframe segmentlerini bağımsız biçimde işleme yöntemi öneriliyor. Bu yöntem codec'leri genel ve verimli bir şekilde paralelleştirebilir; ayrıca kareleri bölgelere ayırmanın getirdiği sıkıştırma verimliliği kaybı veya thread'ler arası iletişim overhead'i yok.
    • Bu yöntemin sorunları arasında belleğe N*keyframe periyodu kadar karenin yüklenmesi ve N kareyi encode etmek için gereken ek bellek overhead'i var.
    • Ancak çoğu durumda bunların büyük sorun olmayacağı düşünülüyor. Çoğu kullanım senaryosunda bol RAM kullanmak ve sabit keyframe aralığıyla çıktı üretmek kabul edilebilir.
    • Kare içi paralel işlemeyi ve keyframe segment paralelleştirmesini birleştirerek kalite kaybını en aza indirirken yüksek düzeyde paralellik sağlanabilir.
  • Sürekli rebase çalışmasının zorlukları

    • Her gün gelen değişiklikleri sürekli rebase etmek oldukça zorlu olmuş.
    • Artık FFmpeg'e entegre edildiği için bundan sonra iş çok daha kolay olacak.
    • Bu büyük bir kazanım ve hız artışına önemli katkı sağlayacak.
  • FFmpeg'in sanal display buffer streaming başlangıç süresini iyileştirmesi beklentisi

    • LLMStack projesinde tarayıcı videosunu stream etmek için FFmpeg kullanılıyor.
    • Şu anda her araç çağrısında pipeline'ı ayağa kaldırmak için fark edilir bir gecikme var.
    • FFmpeg'deki iyileştirmeler bu tür optimizasyon çalışmalarına kesinlikle yardımcı olacak.
  • FFmpeg C API dersi tanıtımı

    • Udemy'de FFmpeg C API öğreten bir kursun tanıtımı yapılıyor.
  • FFmpeg kod tabanı hakkında merak

    • FFmpeg kod tabanını çok iyi bilmiyor, ancak devasa bir commit olmadan bu değişikliklerin yavaş yavaş nasıl yapılabildiğini merak ediyor.
    • Sunuma göre 700 commit vardı; bunların ayrı bir branch'te mi olduğu yoksa projeye kademeli olarak mı merge edildiği merak ediliyor.
  • Bulut hizmeti işletmecisinin bakış açısı

    • Netflix gibi bir bulut hizmeti işletiyorsanız, zaten her makinede binlerce FFmpeg process'i çalıştırıyorsunuzdur; dolayısıyla bu zaten özünde çok çekirdekli bir iş yükü.
  • VapourSynth'in thread tabanlı filtre işleme deneyimi paylaşımı

    • Yaklaşık 10 yıldır VapourSynth'te thread tabanlı filtre işlemeyi keyifle kullanıyor.
    • FFmpeg'deki bu iyileştirme harika olsa da, 'kaliteli' video encode etmek için kullanılan VapourSynth ön işleme + av1an encode iş akışında büyük bir değişiklik yaratmayacak.
  • FFmpeg'in çok çekirdek desteği hakkında soru

    • FFmpeg'in artık içerdiği tüm codec'lerde çok çekirdek kullanabilir hale gelip gelmediğini merak ediyor.
    • Ses hosting hizmeti için FFmpeg kullanarak LAME ile MP3 encode ediyor; uzun dosyaların encode süresi iyileştirilebilirse harika olurdu.