2011-05-12 88 views
2

我需要录制可以用silverlight播放的音频文件。使用AVAudioRecorder录制的音频文件具有CAF容器。这种格式不受silverlight支持。有没有办法编辑音频,以便它有mp4容器,以便它可以被silverlight支持。将CAF音频容器更改为mp4?

回答

2

嗯,我想有一种办法毕竟。只需使用.mp4扩展名保存文件即可。 AVAudioRecorder根据文件路径中指定的扩展名创建容器以保存音频文件。我并不认为它就是这么简单,但它的功能完美:)

0

不幸的是,没有内置的方式来记录为mp4或将CAF转换为mp4。像我一样,用Apple提交错误报告。

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]; 

生成的文件会被一个AAC的内压缩流“ISO媒体,MPEG V4系统,第2版”容器(如的iOS 5.0)。

如果用“caf”指定和扩展,那么容器将是Core Audio Format,编解码器仍然是AAC。

相关问题