2013-05-07 34 views
1

当我尝试设置音频配置作家输入我得到一个错误: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); 

回答

1

似乎你正在设置密钥AVChannelLayoutKey和价值类型AVAudioQuality。他们不相互对应。 AVChannelLayoutKey的值应该包含AudioChannelLayout的结构。

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

+0

非常好,谢谢。 – Fabio 2013-05-07 13:19:59

0

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

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

+0

我试过了,但没有找到任何例子。你知道吗? – Fabio 2013-05-09 18:01:46

相关问题