下面代码直接调用即可
- (NSString *)getAudioSize:(NSString *)path{
NSFileManager *fm = [NSFileManager defaultManager];
NSDictionary *dictAtt = [fm attributesOfItemAtPath:path error:nil];
NSString *fileSize = [NSString stringWithFormat:@"%.2fMB",[[dictAtt objectForKey:@"NSFileSize"] floatValue]/(1024*1024)];
return fileSize;
}
- (NSURL *)compressedURL
{
return [[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject] URLByAppendingPathComponent:@"export.m4a"];
}
//压缩音频 path为传入的本地录制的音频,格式wav
-(void)compressVideo:(NSString *)path successCompress:(void(^)(NSString *))successCompress;
{
[[NoticeTools getTopViewController] showHUD];
NSString *_filePath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject;
_filePath = [_filePath stringByAppendingPathComponent:@"user"];
NSFileManager *manage = [NSFileManager defaultManager];
if ([manage createDirectoryAtPath:_filePath withIntermediateDirectories:YES attributes:nil error:nil])
{
_filePath = [_filePath stringByAppendingPathComponent:@"testcutAudio.aac"];
}
// 1. 获取音频源
AVURLAsset*asset = [ AVURLAsset assetWithURL:[NSURL fileURLWithPath:path]];
NSString *outPutFilePath = [[_filePath stringByDeletingLastPathComponent] stringByAppendingPathComponent:@"smallAudio.m4a"];
if ([[NSFileManager defaultManager] fileExistsAtPath:outPutFilePath])
{
[[NSFileManager defaultManager] removeItemAtPath:outPutFilePath error:nil];
}
//
// // 2. 创建一个音频会话, 并且,设置相应的配置
//AVAssetExportPresetLowQuality 这里可选高-低
AVAssetExportSession*session = [AVAssetExportSession exportSessionWithAsset:asset presetName: AVAssetExportPresetLowQuality];
session.shouldOptimizeForNetworkUse = YES;
session.outputURL = [NSURL fileURLWithPath:outPutFilePath];
//导出类型
session.outputFileType = AVFileTypeQuickTimeMovie;
__weak typeof(self) weakSelf = self;
[session exportAsynchronouslyWithCompletionHandler:^{
if ([[NSFileManager defaultManager] fileExistsAtPath:outPutFilePath])
{
dispatch_async(dispatch_get_main_queue(), ^{
successCompress(outPutFilePath);
});
}
else{
dispatch_async(dispatch_get_main_queue(), ^{
successCompress(path);
});
}
[[NoticeTools getTopViewController] showHUD];
}];
DRLog(@"源文件大小%@",[self getAudioSize:path]);
}
#pragma mark 计算视频大小
- (CGFloat)fileSize:(NSURL *)path
{
return [[NSData dataWithContentsOfURL:path] length]/1024.00 /1024.00;
}