大佬教程收集整理的这篇文章主要介绍了concat两个音频文件一个接一个ios,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
- (BOOL)combineFiles{ AVMutableComposition *composition = [[AVMutableComposition alloc] init]; AVMutableCompositionTrack *compositionAudioTrack = [composition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid]; [compositionAudioTrack setPreferredVolume:0.8]; NSString *soundOne =[[NSBundle mainBundle]pathForresource:@"test1" ofType:@"m4a"]; NSURL *url = [NSURL fileURLWithPath:soundOne]; AVAsset *avAsset = [AVURLAsset URLAssetWithURL:url options:nil]; AVAssetTrack *clipAudioTrack = [[avAsset tracksWithMediaType:AVMediaTypeAudio] objectATindex:0]; [compositionAudioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero,avAsset.duration) ofTrack:clipAudioTrack atTime:kCMTimeZero error:nil]; AVMutableCompositionTrack *compositionAudioTrack1 = [composition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid]; [compositionAudioTrack1 setPreferredVolume:0.8]; NSString *soundOne1 =[[NSBundle mainBundle]pathForresource:@"test2" ofType:@"m4a"]; NSURL *url1 = [NSURL fileURLWithPath:soundOne1]; AVAsset *avAsset1 = [AVURLAsset URLAssetWithURL:url1 options:nil]; AVAssetTrack *clipAudioTrack1 = [[avAsset1 tracksWithMediaType:AVMediaTypeAudio] objectATindex:0]; [compositionAudioTrack1 insertTimeRange:CMTimeRangeMake(kCMTimeZero,avAsset.duration) ofTrack:clipAudioTrack1 atTime:kCMTimeZero error:nil]; AVAssetExportSession *exportSession = [AVAssetExportSession exportSessionWithAsset:composition presetName:AVAssetExportPresetAppleM4A]; if (nil == exportSession) return NO; exportSession.outputURL = [NSURL fileURLWithPath:[@"test3.m4a" documentDirectory]]; // output path exportSession.outputFileType = AVFileTypeAppleM4A; // output file type // perform the export [exportSession exportAsynchronouslyWithCompletionHandler:^{ if (AVAssetExportSessionStatusCompleted == exportSession.status) { NSLog(@"AVAssetExportSessionStatusCompleted"); } else if (AVAssetExportSessionStatusFailed == exportSession.status) { NSLog(@"AVAssetExportSessionStatusFailed"); } else { NSLog(@"Export Session Status: %ld",(long)exportSession.status); } }]; return YES; }
从上面的代码我们可以将两个音频文件合并为一个,其中两个文件同时播放.但我希望第三个文件一个接一个地播放前两个文件.
请帮我解决这个问题.
- (void)mergeTwoAudioFiles{ AVAsset *avAsset1 = [AVURLAsset URLAssetWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForresource:@"test1" ofType:@"m4a"]] options:nil]; AVAsset *avAsset2 = [AVURLAsset URLAssetWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForresource:@"test2" ofType:@"m4a"]] options:nil]; AVMutableComposition *composition = [[AVMutableComposition alloc] init]; [composition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid]; AVMutableCompositionTrack *track = [composition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid]; AVAssetTrack *assetTrack1 = [[avAsset1 tracksWithMediaType:AVMediaTypeAudio] objectATindex:0]; AVAssetTrack *assetTrack2 = [[avAsset2 tracksWithMediaType:AVMediaTypeAudio] objectATindex:0]; CMTime insertionPoint = kCMTimeZero; [track insertTimeRange:CMTimeRangeMake(kCMTimeZero,avAsset1.duration) ofTrack:assetTrack1 atTime:insertionPoint error:nil]; insertionPoint = CMTimeAdd(insertionPoint,avAsset1.duration); [track insertTimeRange:CMTimeRangeMake(kCMTimeZero,avAsset2.duration) ofTrack:assetTrack2 atTime:insertionPoint error:nil]; AVAssetExportSession *exportSession = [AVAssetExportSession exportSessionWithAsset:composition presetName:AVAssetExportPresetAppleM4A]; exportSession.outputURL = [NSURL fileURLWithPath:[@"test3.m4a" documentDirectory]]; exportSession.outputFileType = AVFileTypeAppleM4A; [exportSession exportAsynchronouslyWithCompletionHandler:^{ if (AVAssetExportSessionStatusCompleted == exportSession.status) { NSLog(@"AVAssetExportSessionStatusCompleted"); } else if (AVAssetExportSessionStatusFailed == exportSession.status) { NSLog(@"AVAssetExportSessionStatusFailed"); } else { NSLog(@"Export Session Status: %ld",(long)exportSession.status); } }]; }
以上是大佬教程为你收集整理的concat两个音频文件一个接一个ios全部内容,希望文章能够帮你解决concat两个音频文件一个接一个ios所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。