1

ここで、2つのCAFファイルの混合に問題があります。

最初のCAFファイル->サーバー側から指定されたURLを介してフェッチ

2番目のCAFファイル-> AVAudioRecorderを使用した録音

フェッチファイルサイズ-10秒

記録ファイルサイズ-7秒

これら2つのオーディオファイルを1つのファイルにミックスする方法、同じサンプルコードを教えてください。また、フォーマットは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 に答える