1

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

第一个 CAF 文件 ->通过服务器端的给定 url 获取

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

获取文件大小 - 10 秒

录制文件大小 - 7 秒

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

4

1 回答 1

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 图表。

于 2013-01-16T19:00:45.683 回答