iOS 音乐的截取
admin
2023-02-09 10:20:07
0

最近接触一个音频的项目,之前接触过,不过都是用系统自带的去实现,没有仔细研究

在网上找到了一个demo,挺好用,反正效果是实现,非常不错。具体链接忘记了。

#pragma mark - 音视频剪辑,如果是视频把下面的类型换为AVFileTypeAppleM4V

// assetURL 本地路径地址

//startTime 开始时间

//endTime 结束时间

//outputPath 裁剪完成后的地址

+ (void)cutAudioVideoResourcePath:(NSURL *)assetURL startTime:(CGFloat)startTime endTime:(CGFloat)endTime complition:(void (^)(NSURL *outputPath,BOOL isSucceed)) completionHandle{

    //    素材

    AVAsset *asset = [AVAsset assetWithURL:assetURL];


    //    导出素材

    AVAssetExportSession *exporter = [[AVAssetExportSession alloc]initWithAsset:asset presetName:AVAssetExportPresetAppleM4A];

    

    //剪辑(设置导出的时间段)

    CMTime start = CMTimeMakeWithSeconds(startTime, asset.duration.timescale);

    CMTime duration = CMTimeMakeWithSeconds(endTime - startTime,asset.duration.timescale);

    exporter.timeRange = CMTimeRangeMake(start, duration);

    

//    输出路径

    NSURL *outputPath = [self exporterPath];

    exporter.outputURL = [self exporterPath];

    

//    输出格式

    exporter.outputFileType = AVFileTypeAppleM4A;

    

    exporter.shouldOptimizeForNetworkUse= YES;

    

//    合成后的回调

    [exporter exportAsynchronouslyWithCompletionHandler:^{

        switch ([exporter status]) {

            case AVAssetExportSessionStatusFailed: {

                NSLog(@"合成失败:%@",[[exporter error] description]);

                completionHandle(outputPath,NO);

            } break;

            case AVAssetExportSessionStatusCancelled: {

                completionHandle(outputPath,NO);

            } break;

            case AVAssetExportSessionStatusCompleted: {

                completionHandle(outputPath,YES);

            } break;

            default: {

                completionHandle(outputPath,NO);

            } break;

        }

    }];

}

#pragma mark - 输出路径

+ (NSURL *)exporterPath {

    

    NSInteger nowInter = (long)[[NSDate date] timeIntervalSince1970];

    NSString *fileName = [NSString stringWithFormat:@"output%ld.mp4",(long)nowInter];

    

    NSString *documentsDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject;

   

    NSString *outputFilePath =[documentsDirectory stringByAppendingPathComponent:fileName];

    

    if([[NSFileManager defaultManager]fileExistsAtPath:outputFilePath]){

        

        [[NSFileManager defaultManager]removeItemAtPath:outputFilePath error:nil];

    }

    

    return [NSURL fileURLWithPath:outputFilePath];

}


相关内容

热门资讯

今日重磅消息“金满地.可以开挂... 网上科普关于“金满地有没有挂”话题很是火热,小编也是针对金满地作*弊开挂的方法以及开挂对应的知识点,...
今日重大消息“微乐陕西三代一.... 有 亲,根据资深记者爆料微乐陕西三代一是可以开挂的,确实有挂(咨询软件无...
今日重大消息“麦穗二八杠.开挂... 网上科普关于“麦穗二八杠有没有挂”话题很是火热,小编也是针对麦穗二八杠作*弊开挂的方法以及开挂对应的...
终于懂了“喜扣打筒子.有没有挂... 您好:喜扣打筒子这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9784099】很多玩家在这款游...
【第一资讯】“微乐卡五星.开挂... 您好:微乐卡五星这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家在这款游...
终于懂了“十三十三水经典比鸡.... 您好:十三十三水经典比鸡这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家...
最新引进“琼戏互娱.究竟有挂吗... 最新引进“琼戏互娱.究竟有挂吗?”必胜开挂神器您好,琼戏互娱这个游戏其实有挂的,确实是有挂的,需要了...
最新引进“春天扑克.到底有挂吗... 有 亲,根据资深记者爆料春天扑克是可以开挂的,确实有挂(咨询软件无需打开...
终于了解“聚友互娱.到底是不是... 家人们!今天小编来为大家解答聚友互娱透视挂怎么安装这个问题咨询软件客服徽9752949的挂在哪里买很...
今日重大通报“想游中心五.开挂... 今日重大通报“想游中心五.开挂神器?”太坑了原来有挂您好,想游中心五这个游戏其实有挂的,确实是有挂的...