Monotouch — ошибка при настройке AVAssetWriterInput — в экземпляр отправлен нераспознанный селектор

Когда я пытаюсь установить вход записи конфигурации аудио, я получаю сообщение об ошибке:

-[__NSCFNumber length]: unrecognized selector sent to instance 0xbcdab0

Мой код:

        NSObject[] values = new NSObject[]
        {    
            NSNumber.FromFloat(44100.0f),
            NSNumber.FromInt32((int)MonoTouch.AudioToolbox.AudioFormatType.MPEG4AAC),
            NSNumber.FromInt32(2),
            NSNumber.FromInt32((int)AVAudioQuality.Medium)
        };
        //Set up the NSObject Array of keys that will be combined with the values to make the NSDictionary
        NSObject[] keys = new NSObject[]
        {
            AVAudioSettings.AVSampleRateKey,
            AVAudioSettings.AVFormatIDKey,
            AVAudioSettings.AVNumberOfChannelsKey,
            AVAudioSettings.AVChannelLayoutKey
        };          
        //Set Settings with the Values and Keys to create the NSDictionary
        NSDictionary audiosettings = NSDictionary.FromObjectsAndKeys (values, keys);

        writeraudioInput = new AVAssetWriterInput (AVMediaType.Audio, audiosettings);

person Fabio    schedule 07.05.2013    source источник


Ответы (2)


Похоже, вы устанавливаете ключ на AVChannelLayoutKey и значение на тип AVAudioQuality. Они не соответствуют друг другу. Значение AVChannelLayoutKey должно соответствовать структуре Раскладка аудиоканала.

Прокомментируйте как последний ключ, так и последние значения. Или заполнить и передать AudioChannelLayout структуру.

person Maxim Korobov    schedule 07.05.2013

Вы используете свободно типизированный API на основе NSDictionary.

Вы можете избежать этих ошибок в будущем, если воспользуетесь другим конструктором, который принимает параметр AudioSettings, что удобно для вас.

person miguel.de.icaza    schedule 07.05.2013