iOS开发 音频压缩

下面代码直接调用即可


- (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;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值