1

当我尝试设置音频配置编写器输入时,出现错误:

-[__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);
4

2 回答 2

1

似乎您正在将 key 设置AVChannelLayoutKey为 type of 并将 value设置为AVAudioQuality. 它们彼此没有对应关系。AVChannelLayoutKey的值应与AudioChannelLayout的结构相同。

注释最后一个键和最后一个值。或填充和传递AudioChannelLayout结构。

于 2013-05-07T07:40:42.427 回答
0

您正在使用松散类型的基于 NSDictionary 的 API。

如果您使用带有 AudioSettings 参数的其他构造函数,您将来可以避免这些错误,它可以方便地为您提供智能感知。

于 2013-05-07T19:56:32.280 回答