ここで、2つのCAFファイルの混合に問題があります。
最初のCAFファイル->サーバー側から指定されたURLを介してフェッチ
2番目のCAFファイル-> AVAudioRecorderを使用した録音
フェッチファイルサイズ-10秒
記録ファイルサイズ-7秒
これら2つのオーディオファイルを1つのファイルにミックスする方法、同じサンプルコードを教えてください。また、フォーマットはCAFのみである必要があります。
ここで、2つのCAFファイルの混合に問題があります。
最初のCAFファイル->サーバー側から指定されたURLを介してフェッチ
2番目のCAFファイル-> AVAudioRecorderを使用した録音
フェッチファイルサイズ-10秒
記録ファイルサイズ-7秒
これら2つのオーディオファイルを1つのファイルにミックスする方法、同じサンプルコードを教えてください。また、フォーマットは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 グラフを作成する必要があります。