我需要录制可以用silverlight播放的音频文件。使用AVAudioRecorder录制的音频文件具有CAF容器。 silverlight不支持此格式。有没有办法编辑音频,以便它有mp4容器,以便Silverlight支持它。
答案 0 :(得分:7)
容器格式由您在创建AVAudioRecorder时指定的URL的扩展名确定。
NSString *tempDir = NSTemporaryDirectory ();
NSString *soundFilePath = [tempDir stringByAppendingString: @"sound.mp4"];
您可以在此处看到指定的扩展名为mp4。在创建记录器时,我们指定编解码器格式(这里是简单的AAC):
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryRecord error: nil];
NSDictionary *recordSettings = [[NSDictionary alloc] initWithObjectsAndKeys:
[NSNumber numberWithFloat: 32000], AVSampleRateKey,
[NSNumber numberWithInt: kAudioFormatMPEG4AAC], AVFormatIDKey,
[NSNumber numberWithInt: 1], AVNumberOfChannelsKey,
nil];
AVAudioRecorder *newRecorder = [[AVAudioRecorder alloc] initWithURL: soundFilePath settings: recordSettings error: nil];
[recordSettings release];
self.soundRecorder = newRecorder;
[newRecorder release];
soundRecorder.delegate = self;
[soundRecorder prepareToRecord];
[soundRecorder recordForDuration:60];
生成的文件将是“ISO Media,MPEG v4系统,版本2”容器中的AAC压缩流(从iOS 5.0开始)。
如果您使用“caf”指定和扩展,那么容器将是Core Audio Format,编解码器仍将是AAC。
答案 1 :(得分:2)
嗯,我想毕竟有办法。保存扩展名为.mp4的文件所需的全部内容。 AVAudioRecorder根据文件路径中指定的扩展名创建容器以保存音频文件。我没想到它只是那么容易,但它完美无缺:)
答案 2 :(得分:0)
可悲的是,没有内置的方法可以记录为mp4或将CAF转换为mp4。像我一样向Apple提交错误报告。