iOS 中 如何从视频中提取音频?
.h文件
/**
提取视频中的音频
@param videoPath 视频路径
@param completionHandle 完成回调
*/
+(void)accessAudioFromVideo:(NSURL *)videoPath completion:(void (^)(NSURL *outputPath,BOOL isSucceed)) completionHandle;.m文件
需要导入系统的#import <Photos/Photos.h>
/**
提取视频中的音频
@param videoPath 视频路径
@param completionHandle 完成回调
*/
+(void)accessAudioFromVideo:(NSURL *)videoPath completion:(void (^)(NSURL *outputPath,BOOL isSucceed)) completionHandle{ AVAsset *videoAsset = [AVAsset assetWithURL:videoPath]; //1创立一个AVMutableComposition AVMutableComposition *mixComposition = [[AVMutableComposition alloc]init]; //2 创立一个轨道,类型为AVMediaTypeAudio AVMutableCompositionTrack *audioTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid]; //获取videoPath的音频插入轨道 [audioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, videoAsset.duration) ofTrack:[[videoAsset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0] atTime:kCMTimeZero error:nil]; //4创立输出路径 NSURL *outputURL = [self exporterPath:@"mp4"]; //5创立输出对象 AVAssetExportSession *exporter = [[AVAssetExportSession alloc]initWithAsset:mixComposition presetName:AVAssetExportPresetAppleM4A]; exporter.outputURL = outputURL ; exporter.outputFileType = AVFileTypeAppleM4A; exporter.shouldOptimizeForNetworkUse = YES; [exporter exportAsynchronouslyWithCompletionHandler:^{ if (exporter.status == AVAssetExportSessionStatusCompleted) { NSURL *outputURL = exporter.outputURL; completionHandle(outputURL,YES); }else { NSLog(@"失败%@",exporter.error.description); completionHandle(outputURL,NO); } }]; }// 输出路径+ (NSURL *)exporterPath:(NSString *)filename{ NSDateFormatter *formatter = [[NSDateFormatter alloc]init]; formatter.dateFormat = @"yyyyMMddHHmmss"; NSString *str = [formatter stringFromDate:[NSDate date]]; NSString *fileName = [NSString stringWithFormat:@"selfMusic%@.%@",str,filename]; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *docPath = [paths firstObject]; //这个是录制视频时存储到本地的video NSString *path = [NSString stringWithFormat:@"%@/KSYShortVideoCache",docPath]; //判断文件夹能否存在,不存在就创立 //创立附件存储目录 if (![[NSFileManager defaultManager] fileExistsAtPath:path]) { [[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:nil]; } NSString *outputFilePath = [path stringByAppendingPathComponent:fileName]; return [NSURL fileURLWithPath:outputFilePath];}说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » iOS 中 如何从视频中提取音频?
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » iOS 中 如何从视频中提取音频?