2016-02-01 8 views
6

मुझे AVAudioPlayerमें कुछ समस्या में कोई समस्या है। पहले मेरे ऑडियो रिकॉर्डर सामान्य रूप से ठीक काम करते हैं। लेकिन built_in_Speaker से वीओआईपी कॉल और प्ले रिंग के बाद और कॉल लटकने के बाद ऑडियो सत्र के साथ कई काम करते हैं, मैं ऑडियो को पहले ध्वनि के साथ रिकॉर्ड नहीं कर सकता! लेकिन दूसरी बार हर चीज ठीक काम कर रही है। समस्याAVAudioRecorder ध्वनि नहीं है

इस शर्त में कि मैंने उल्लेख किया है कि मेरा ऑडियो रिकॉर्ड था लेकिन आवाज नहीं है!

मैं जानना चाहता हूं कि यह स्थिति किस स्थिति में हो सकती है?

self.audioSession = [AVAudioSession sharedInstance]; 
NSError *err = nil; 
[self.audioSession setCategory :AVAudioSessionCategoryPlayAndRecord error:&err]; 
if(err){ 
    NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]); 
    return; 
} 

BOOL preparedToRecord = [self.audioRecorder prepareToRecord]; 
__block BOOL recordStarted = NO; 

err = nil; 
[self.audioSession setActive:YES error:&err]; 
if(err){ 
    NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]); 
    return; 
} 

if (preparedToRecord){ 
    recordStarted = [self.audioRecorder record]; 
} 

उत्तर

4

हल

मैं इस समस्या का कारण मिल गया है। मैंने AVAudioSession की अधिसूचना को पकड़ने के लिए अपने स्वयं को जोड़ दिया है, और AudioSession इंटरप्ट/राउट चेंजिंग की जांच करें! समस्या मेरे कॉल के बाद है, मैंने स्पीकर को ऑडियो रूट बदलने की कोशिश की है, लेकिन एक वर्ग जो AudioRoutChanging अधिसूचना के लिए जोड़ा गया है उसे रोकने के लिए प्रयास करें। इसलिए ऑडियो सत्र मार्ग हर सेकेंड में बदल जाता है और ऑडियो रिकॉर्ड नहीं कर सका।

निष्कर्ष आप ऑडियो रिकॉर्डिंग के लिए इस तरह करना चाहिए:

1) यकीन है कि अनुमति के बारे में

2)[self.audioSession setActive:YES error:&err]; 

3)[self.audioSession setCategory :AVAudioSessionCategoryPlayAndRecord error:&err]; 

4) सुनिश्चित करें कि आपके मार्ग के बारे में के दौरान परिवर्तन नहीं है रिकॉर्डिंग।

4) अपने गंतव्य पैच के बारे में निश्चित

-1

रिकॉर्डिंग ऑडियो को उपयोगकर्ता से स्पष्ट अनुमति की आवश्यकता होती है। रिकॉर्डिंग को सक्षम करने वाली श्रेणी का उपयोग करते समय पहली बार आपके ऐप का ऑडियो सत्र ऑडियो इनपुट रूट का उपयोग करने का प्रयास करता है, सिस्टम स्वचालित रूप से अनुमति के लिए उपयोगकर्ता को संकेत देता है। आप अनुरोध को कॉल करके स्पष्ट रूप से पहले पूछ सकते हैं RecordPermission: विधि। जब तक उपयोगकर्ता आपके ऐप को रिकॉर्ड करने की अनुमति नहीं देता है, तब तक आपका ऐप केवल चुप्पी रिकॉर्ड कर सकता है।

यहाँ देखें: https://developer.apple.com/library/prerelease/ios/documentation/AVFoundation/Reference/AVAudioSession_ClassReference/index.html

+0

मैं अनुप्रयोग के पहले प्रक्षेपण में अनुमति प्राप्त है, और मैं उल्लेख किया है मैं अपने कॉल में ऑडियो सत्र का उपयोग करें और यह ठीक काम कर रहा है! मैं उस समस्या को ठीक करता हूं जिसे मैंने जल्द ही समझाया। आपके जवाब के लिए tnx! – Mohamad

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