2012-08-09 16 views
5

मै मैक पर वर्तमान ऑडियो आउटपुट में टैप करने का एक तरीका ढूंढ रहा हूं, फिर वर्तमान ध्वनि स्तर का प्रतिनिधित्व करने वाला मान लौटाएं।मैं वर्तमान ऑडियो आउटपुट डिवाइस का वर्तमान ध्वनि स्तर कैसे प्राप्त कर सकता हूं?

ध्वनि स्तर से, मेरा मतलब है आउटपुट द्वारा उत्पन्न शोर की मात्रा। मैं आउटपुट डिवाइस के वर्तमान वॉल्यूम स्तर को प्राप्त करने के लिए पूछ रहा हूं।

उत्तर

17

निम्नलिखित कोड Apple's Sample AVRecorder से खींचा गया है ... इस विशेष कोड को इस वर्ग की फिल्मफाइलऑटपुट के कनेक्शन विधियों से कनेक्शन का एक सेट प्राप्त होता है, प्रत्येक कनेक्शन के लिए AVCaptureAudioChannel प्राप्त करता है, और उस पर आधारित डेसिबल पावर की गणना करता है। मुझे लगता है कि यदि आप "शोर स्तर" आउटपुट की तलाश में हैं, तो आप समान जानकारी को कैप्चर करने में सक्षम होंगे। यदि आप इससे कम स्तर की तलाश में हैं, तो एचएएल (हार्डवेयर एब्स्ट्रक्शन लेयर) ढांचे का प्रयास करें।

- (void)updateAudioLevels:(NSTimer *)timer 
{ 
    NSInteger channelCount = 0; 
    float decibels = 0.f; 

    // Sum all of the average power levels and divide by the number of channels 
    for (AVCaptureConnection *connection in [[self movieFileOutput] connections]) { 
     for (AVCaptureAudioChannel *audioChannel in [connection audioChannels]) { 
      decibels += [audioChannel averagePowerLevel]; 
      channelCount += 1; 
     } 
    } 

    decibels /= channelCount; 

    [[self audioLevelMeter] setFloatValue:(pow(10.f, 0.05f * decibels) * 20.0f)]; 
} 
+0

क्या रूपांतरण नहीं होना चाहिए (10.f, 0.05f * decibels)? आपको वहां उस अतिरिक्त समय की आवश्यकता नहीं है। यहां पढ़ें: http://stackoverflow.com/questions/2465328/iphone-sdk-avaudiorecorder-metering-how-to-change-peakpowerforchannel-from-d या बेहतर अभी तक http://travisjeffery.com/b/2013/02/कनवर्टिंग-अवशोषण-शक्ति-स्तर-से-से-लॉगरिदमिक-और-रैखिक-पैमाने/ – ucangetit

+0

@ucangetit, मैं कोड स्निपेट के बारे में उस विवरण के बारे में समझदारी से बात नहीं कर सकता। ऐप्पल ने नमूना कोड के लिंक को संशोधित करने के मामले में केवल कोड कॉपी किया था। –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^