我有一个问题,混合两个CAF文件。
第一个CAF文件 - > 从服务器端通过给定网址获取
第二个CAF文件 - > 使用AVAudioRecorder录制
获取文件大小 - 10秒
录制文件大小 - 7秒
如何将这两个给定的音频文件混合在一个文件中,请给我一些示例代码。格式也必须只在CAF中。
答案 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图。