2016-09-27 11 views
5

AVAudioConverter आईओएस से 10 में टूट गया लगता कोड आईओएस 9 में काम कर रहा था और अबAVAudioConverter आईओएस में टूट गया है 10

त्रुटि डोमेन = NSOSStatusErrorDomain कोड = -50 "(शून्य)"

दिया जाता है कोई फर्क नहीं पड़ता क्या ऑडियो प्रारूप का उपयोग किया जाता है। यह हर साल मुझे suprises, कि बुनियादी पुस्तकालय कार्यक्षमता काम करना बंद कर देता है।

func audioConverterFailureIOS10() { 
    // Describe the audio format 
    let inFormat = AVAudioFormat(standardFormatWithSampleRate: 44100, channels: 2) 
    let outFormat = AVAudioFormat(standardFormatWithSampleRate: 22050, channels: 2) 

    // Allocate buffers 
    let outBuffer = AVAudioPCMBuffer(pcmFormat: outFormat, frameCapacity: 1024) 

    // Create an input block that is called when the converter needs input 
    let inputBlock : AVAudioConverterInputBlock = { (inNumPackets, outStatus) -> AVAudioBuffer? in 
     // Fails before entering here 
     return nil 
    } 

    // Create the audio converter 
    let converter = AVAudioConverter(from: inFormat, to: outFormat) 

    var error : NSError? 
    _ = converter.convert(to: outBuffer, error: &error, withInputFrom: inputBlock) 

    // Error Domain=NSOSStatusErrorDomain Code=-50 "(null)" 
    print(error) 
} 
+0

वाह पर अलग-अलग इलाज किया जाता है। 9.3 एसडीके काम के खिलाफ बनाया गया ऐप्स? –

+0

@ रिथमिक फिस्टमैन बिल्कुल। मैंने एक्सकोड 7.3 स्थापित किया और 9.3 एसडीके के खिलाफ सटीक उसी कोड (स्विफ्ट 2.x सिंटैक्स के साथ) चलाया और ** कोई त्रुटि नहीं है **। "हास्यास्पद" बात यह है कि, पिछले साल जब आईओएस 9 जारी किया गया था, मैंने ऐप्पल लिब के अंदर सेगमेंटेशन दोषों के कारण पुरानी विस्तारित ऑडियो फाइल सेवाओं के बजाय AVAudioConverter का उपयोग करके अपना कोड अपडेट किया। शायद उन्होंने इसे ठीक कर दिया है और इसके बजाय दूसरे को तोड़ दिया है ... – borrel

उत्तर

4

तो, यह पता चला कि आउटबफर फ्रेम लम्बाई को फ्रेम क्षमता पर सेट किया जाना है। डिफ़ॉल्ट रूप से लंबाई 0 है और जाहिर है आईओएस 10

+0

डी ओह! अच्छी पकड़। –