6 पॉइंट द्वारा GN⁺ 2025-02-17 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • समस्या का पता: नए लैपटॉप में स्पीकर से बीच-बीच में white noise आने की समस्या मिली। यह केवल शांत कमरे में सुनाई देती थी।

  • कारण का विश्लेषण: PulseAudio की audio sink state जाँचने पर पता चला कि SUSPENDED स्थिति में आवाज़ नहीं आती, लेकिन IDLE या RUNNING स्थिति में white noise होता है।

  • Firefox की समस्या: Firefox audio sink का उपयोग करने वाले प्रोग्राम के रूप में दिखा, जबकि खुले टैब्स में कोई भी टैब आवाज़ नहीं चला रहा था, फिर भी white noise हो रहा था।

  • असल कारण: outlook.office.com की notification sound इस समस्या की वजह निकली। हर बार ईमेल आने पर white noise शुरू हो जाता था, और इसे रोकने के लिए टैब refresh करना या Firefox को restart करना पड़ता था।

  • बैटरी की खपत: white noise होने पर CPU और बैटरी की खपत बढ़ जाती थी।

  • समाधान की कोशिश: ईमेल notifications बंद करके समस्या हल करने की कोशिश की गई, लेकिन दूसरी वेबसाइटों पर भी ऐसी ही समस्या सामने आई।

  • HTML/JavaScript audio processing: audio चलाने के लिए `` टैग और WebAudio API होते हैं। जाँच में पता चला कि समस्या AudioContext बनाए जाने पर होती है।

  • Firefox और Chrome का अंतर: Chrome कुछ समय बाद अपने-आप बैटरी/CPU की बर्बादी रोक देता है, लेकिन Firefox ऐसा नहीं करता।

  • समाधान: AudioContext को अपने-आप रोकने और ज़रूरत पड़ने पर फिर से शुरू करने वाला एक extension बनाया गया। यह परफेक्ट नहीं है, लेकिन पर्याप्त रूप से असरदार है।

1 टिप्पणियां

 
GN⁺ 2025-02-17
Hacker News टिप्पणियाँ
  • यह समस्या योजनाबद्ध है और महत्वपूर्ण है। इसे जल्द ठीक करने की योजना है। प्राथमिकता के कारण अभी तक ठीक न कर पाने के लिए क्षमा चाहते हैं। व्यक्तिगत रूप से इसकी प्राथमिकता मेरे लिए बहुत ऊँची है

    • ऑडियो context को कुछ समय बाद रोक देने से यह अधिक जटिल है, लेकिन हल किया जा सकता है। दूसरे लोग ऐसा कर चुके हैं, इसलिए यह संभव है। समझौते के लिए तैयार हूँ
    • स्रोत: Firefox implementer और Web Audio API standard editor
  • जो वेबसाइट audio context खोलती है और कुछ भी प्ले नहीं करती, वह शायद bot detection कर रही हो सकती है

    • अलग-अलग browser engine और operating system ऑडियो प्रोसेसिंग को अलग तरह से implement करते हैं। पूरी तरह सुनाई न देने वाली ध्वनि चलाकर उसे फिर रिकॉर्ड करने पर एक signature बनता है
    • इस signature का उपयोग यह जाँचने के लिए किया जा सकता है कि browser user agent के बारे में झूठ बोल रहा है, headless mode में चल रहा है, या असली user नहीं है
  • सोच रहा हूँ कि क्या यही समस्या Android devices पर भी होती है

  • यह white noise लंबे समय तक मुझे पागल करती रही, लेकिन मैं इसका पता नहीं लगा सका

    • टैब पर "चल रहा है" आइकन नहीं दिखता, और टैब को mute करने पर भी शोर बंद नहीं होता
    • Windows volume mixer का उपयोग करके Firefox को mute करने पर भी शोर बंद नहीं होता
    • संपादन: desktop users के लिए यह white noise लगातार शुरू/बंद होती रहती है, जो बेहद परेशान करने वाला है
  • जब output idle हो जाता है, तो digital SPDIF signal sync खो देता है। प्लेबैक शुरू होने पर यह फिर से sync होता है, लेकिन इसमें समय लगता है और ऑडियो के शुरुआती कुछ सेकंड खो जाते हैं। output को idle न होने देने के लिए मैंने ऐसा प्रोग्राम लिखा था जो लाइन में data dump किए बिना output को खुला रखता था

    • laptop पर energy saving ज्यादा महत्वपूर्ण है
  • शायद यह समझा सकता है कि Android Firefox में कभी-कभी फोन एक दिन में 10GB data क्यों खर्च कर देता था। news sites ऑडियो चलाती थीं और ads को बार-बार लोड करती थीं, और टैब ऑडियो की वजह से sleep mode में नहीं जाता था। बार-बार data charges लगने के कारण मुझे Chrome पर जाना पड़ा

  • Chromium में इस interruption को संभालने वाला code यहाँ है

    • मूल रूप से लगभग 30 सेकंड की चुप्पी detect करने के बाद यह OS audio device द्वारा समर्थित sync से null sync पर switch करता है
    • ध्यान दें: क्योंकि यह audio device से अलग clock का उपयोग करता है, इसलिए जब context आखिरकार उपयोग होता है तो कुछ खास tones पर distortion हो सकती है। इसका समाधान यह है कि site लेख में बताए गए suspend resume API का उपयोग करे
  • macOS पर भी इसी तरह की समस्या मिली (ऑडियो-प्रेरित power consumption, white noise नहीं)

    • इस समय Mac का coreaudiod कुछ भी प्ले नहीं कर रहा, फिर भी CPU का 20% उपयोग कर रहा है। यह ठीक होने तक किसी दूसरे browser पर जाने का सोच रहा हूँ, लेकिन Firefox छोड़ना नहीं चाहता
    • अपडेट: यह संबंधित लगता है, लेकिन अलग bug प्रतीत होता है
  • इस समस्या ने https://www.dr.dk/ के पहले पेज को ठीक कर दिया

  • मुझे ठीक से नहीं पता कि audioContext कैसे implement किया गया है, लेकिन यह बहुत चतुर और dynamic है। notification sound चलाना वैसा है जैसे D3 से SVG बनाना। सोच रहा हूँ कि क्या किसी अधिक efficient API में ऐसा serviceWorker hook है जहाँ notification handler जैसी सरल आवर्ती प्रक्रियाएँ register की जा सकें