6 puan yazan GN⁺ 2025-02-17 | 1 yorum | WhatsApp'ta paylaş
  • Sorunun keşfi: Yeni bir dizüstü bilgisayarda hoparlörlerden aralıklı olarak white noise geldiği fark edildi. Bu ses yalnızca sessiz bir odada duyulabiliyordu.

  • Neden analizi: PulseAudio’nun audio sink durumu incelendiğinde, SUSPENDED durumunda ses çıkmadığı; ancak IDLE veya RUNNING durumlarında white noise oluştuğu görüldü.

  • Firefox sorunu: Firefox, audio sink kullanan program olarak görünüyordu ve açık sekmeler arasında ses çalan hiçbir sekme olmamasına rağmen white noise oluşuyordu.

  • Neden: Sorunun kaynağının outlook.office.com’un bildirim sesi olduğu ortaya çıktı. Her e-posta alındığında white noise başlıyor ve ancak sekme yenilenince ya da Firefox yeniden başlatılınca duruyordu.

  • Batarya tüketimi: White noise oluşurken CPU ve batarya tüketimi artıyordu.

  • Çözüm denemesi: E-posta bildirimleri devre dışı bırakılarak sorun çözülmeye çalışıldı, ancak benzer sorunlar başka web sitelerinde de ortaya çıktı.

  • HTML/JavaScript ses işleme: Ses çalmanın yolları arasında `` etiketi ve WebAudio API bulunuyor. Sorunun, AudioContext oluşturulurken ortaya çıktığı belirlendi.

  • Firefox ve Chrome farkı: Chrome bir süre sonra batarya/CPU israfını otomatik olarak durdururken Firefox bunu yapmıyor.

  • Çözüm: AudioContext’i otomatik olarak durdurup gerektiğinde yeniden başlatan bir eklenti geliştirildi. Kusursuz olmasa da yeterince etkili.

1 yorum

 
GN⁺ 2025-02-17
Hacker News yorumu
  • Bu sorunun planlandığı ve önemli olduğu belirtiliyor. Yakında çözülecek. Öncelik meselesi nedeniyle henüz çözülmemiş olması için özür dileniyor. Şahsen yüksek öncelik taşıyor

    • Audio context'i belli bir süre sonra durdurmaktan daha karmaşık, ama çözülebilir. Başkaları yaptığı için mümkün. Taviz vermeye hazırız
    • Kaynak: Firefox geliştiricisi ve Web Audio API standart editörü
  • Bir audio context açıp hiçbir şey çalmayan web sitesi muhtemelen bot tespiti yapıyordur

    • Diğer tarayıcı motorları ve işletim sistemleri ses işlemeyi farklı uygular. Tamamen duyulmayacak bir sesi çalıp yeniden kaydederseniz bir imza oluşur
    • Bu imza, tarayıcının user agent hakkında yalan söyleyip söylemediğini, headless modda çalışıp çalışmadığını, gerçek bir kullanıcı olup olmadığını kontrol etmek için kullanılabilir
  • Aynı sorunun Android cihazlarda da olup olmadığını merak ediyorum

  • Bu beyaz gürültü beni uzun süredir delirtıyordu ama izini süremiyordum

    • Sekmede "çalıyor" simgesi görünmüyor ve sekmeyi sessize alsam da gürültü durmuyor
    • Windows ses mikserini kullanarak Firefox'u sessize alsam da gürültü durmuyor
    • Düzenleme: Masaüstü kullanıcıları için beyaz gürültünün sürekli başlayıp durması çok sinir bozucu
  • Çıkış boşta kalınca dijital SPDIF sinyali senkronizasyonu kaybediyor. Oynatma başlayınca yeniden senkronize oluyor ama bu zaman alıyor ve sesin ilk birkaç saniyesi kayboluyor. Çıkışı boşta bırakmamak için hatta veri dökmeden çıkışı açık tutan bir program yazmıştım

    • Dizüstü bilgisayarlarda enerji tasarrufu daha önemli
  • Android Firefox'ta telefonun bazen günde 10 GB veri tüketmesi sorununu bu açıklıyor olabilir. Haber siteleri ses çalıyor, reklamları tekrar tekrar yüklüyor ve sekme ses yüzünden uyku moduna geçmiyordu. Tekrarlayan veri ücretleri yüzünden Chrome'a geçmek zorunda kalmıştım

  • Chromium'da bu kesintiyi ele alan kod burada

    • Temelde yaklaşık 30 saniyelik sessizlik algılandıktan sonra, OS ses aygıtının desteklediği sink'ten null sink'e geçiyor
    • Not: Audio device'dan farklı bir saat kullandığı için context sonunda gerçekten kullanıldığında belirli tonlarda bozulma olabilir. Çözüm olarak sitenin makalede bahsedilen suspend resume API'sini kullanması gerekiyor
  • macOS'ta da benzer bir sorun fark ettim (ses kaynaklı güç tüketimi, beyaz gürültü yok)

    • Şu anda Mac'imde coreaudiod hiçbir şey çalmadığı halde CPU'nun %20'sini kullanıyor. Bu çözülene kadar başka bir tarayıcıya geçmeyi düşünüyorum ama Firefox'tan vazgeçmek istemiyorum
    • Güncelleme: İlgili ama farklı bir bug gibi görünüyor
  • Bu sorun https://www.dr.dk/ ana sayfasını düzeltmiş

  • audioContext'in nasıl uygulandığını iyi bilmiyorum ama çok akıllı ve dinamik. Bildirim sesi çalmak, D3 ile SVG çizmek gibi. Daha verimli bir API'de, bildirim işleyicisi gibi basit tekrar eden işleri kaydedebileceğiniz bir serviceWorker hook'u olup olmadığını merak ediyorum