iOS 中 如何从视频中提取音频?

作者 : 开心源码 本文共2268个字,预计阅读时间需要6分钟 发布时间: 2022-05-13 共205人阅读

.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 中 如何从视频中提取音频?

发表回复