将两个CAF文件混合在一起

时间:2013-01-16 13:37:18

标签: iphone ios objective-c avaudiorecorder

我有一个问题,混合两个CAF文件。

第一个CAF文件 - > 从服务器端通过给定网址获取

第二个CAF文件 - > 使用AVAudioRecorder录制

获取文件大小 - 10秒

录制文件大小 - 7秒

如何将这两个给定的音频文件混合在一个文件中,请给我一些示例代码。格式也必须只在CAF中。

1 个答案:

答案 0 :(得分:1)

AVFoundation框架中的AVMutableComposition可以做到这一点;你做了类似

的事情
AVMutableComposition *comp = [AVMutableComposition new];
AVMutableCompositionTrack *compTrack1 = [comp addMutableTrackWithMediaType:AVMediaTypeAudio 
    preferredTrackId:kCMPersistentTrackID_Invalid];
AVMutableCompositionTrack *compTrack2 = [comp addMutableTrackWithMediaType:AVMediaTypeAudio 
    preferredTrackId:kCMPersistentTrackID_Invalid];

AVAssetTrack *srcTrack1 = UseAVAssetToGetTrackfromFirstFile();
AVAssetTrack *srcTrack2 = UseAVAssetToGetTrackfromSecondFile();

NSError *error = nil;

    [compTrack1 insertTimeRange:CMTimeRangeMake(kCMTimeZero, kCMTimePositiveInfinity)
                            ofTrack:srcTrack1  
                             atTime:kCMTimeZero error:&error];

    CheckForError(error);

    [compTrack2 insertTimeRange:CMTimeRangeMake(kCMTimeZero, kCMTimePositiveInfinity)
                            ofTrack:srcTrack2  
                             atTime:kCMTimeZero error:&error];

    CheckForError(error);

// emit mix from the composition here with a reader or whatever.

您也可以使用合成设置相对级别。但是,如果你需要做更多的花哨而不仅仅是水平和平移,你必须创建一个AudioUnit图。