1

サウンドの録音には AVAudioRecorder クラスを使用しています。1 つの AVAudioRecorder セッションで、録音の開始、一時停止、再開、停止を行うことができます。アプリを閉じて再起動した場合、既存のオーディオ ファイルへの録音を再開することはできません。

.wav ファイルの録音と再生に関する問題 IOS

オーディオレコーダーを初期化するためのコードを確認するには、私の質問 (以前にここで尋ねたもの) を参照してください。

そうすることは可能ですか?助けてください!ありがとう!

4

1 に答える 1

1

アプリを閉じるたびにオーディオ録音ファイルをドキュメントディレクトリに個別に保存し、アプリの起動後にすべてのオーディオ録音を利用できるようにミックスする必要があると思います。

ここにオーディオファイルを混合するためのコードがあります。あなたの場合、2つのファイルを混合する必要があるだけなので、それに応じてコードを使用する必要があります。

-(void)mixAudios
{
//mix all audio files
AVMutableComposition* mixComposition = [AVMutableComposition composition];
AVMutableCompositionTrack *compositionCommentaryTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeAudio  preferredTrackID:kCMPersistentTrackID_Invalid];

for (number of your recordings)
{

    AVURLAsset* audioAsset = [[AVURLAsset alloc]initWithURL:[NSURL URLWithString:@"** Recording file Path **"] options:nil];

    if(![compositionCommentaryTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, audioAsset.duration) ofTrack:[[audioAsset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0] atTime:CMTimeMake(Start time in seconds for each Recoring,1) error:nil])
    {
         NSLog(@" error: %@"error);
    }

}


//save mixed composition as file
AVAssetExportSession* _assetExport = [[AVAssetExportSession alloc] initWithAsset:mixComposition
                                                                      presetName:AVAssetExportPresetPassthrough];

NSString* videoName = @".mov";
NSString* videoPath = [[NSString alloc] initWithFormat:@"%@/%@", [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0], videoName];
NSString *exportPath = [NSTemporaryDirectory() stringByAppendingPathComponent:videoName];
if([[NSFileManager defaultManager] fileExistsAtPath:exportPath])
{
    [[NSFileManager defaultManager] removeItemAtPath:exportPath error:nil];
}
NSURL *exportUrl = [NSURL fileURLWithPath:exportPath];
_assetExport.outputFileType = @"com.apple.quicktime-movie";
_assetExport.outputURL = exportUrl;
_assetExport.shouldOptimizeForNetworkUse = YES;
[_assetExport exportAsynchronouslyWithCompletionHandler:
 ^(void )
 {
     [_assetExport release];
     NSString *path = [NSString stringWithString:[exportUrl path]];
     if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum (path)) {
         UISaveVideoAtPathToSavedPhotosAlbum (path, nil, nil, nil);
     }

 }

 ];
}
于 2013-03-06T07:24:37.597 に答える