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