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];

}


相关内容

热门资讯

继英伟达黄仁勋后,AMD苏姿丰... IT之家 7 月 24 日消息,随着中国开源 AI 模型的不断变强,近期美国业界出现了关于 AI 是...
辰奕智能获得实用新型专利授权:... 证券之星消息,根据天眼查APP数据显示辰奕智能(301578)新获得一项实用新型专利授权,专利名为“...
湖南湘江新区文化创意产业出海观... 中新网长沙7月23日电(胡语桐)在日本大型量贩门店的货架上,中国研发的视频创意软件实体产品陈列其中;...
中国数学家首次获得的菲尔兹奖“... 当地时间7月23日上午,2026年国际数学家大会在美国费城开幕,现场揭晓2026年菲尔兹奖得主。中国...
猪周期反转,这次可能来真的 市场过去几年关于猪周期的很多认知,现在需要重新审视了。过去几年,越来越多人相信:随着规模化养殖企业不...
王虹、邓煜为啥能获菲尔兹奖? 当地时间7月23日早晨,2026年国际数学家大会在美国费城开幕。国际数学联盟在开幕式上正式公布第二十...
高温津贴,不能用绿豆汤冲抵 近日,深圳市人力资源和社会保障局发布关于高温津贴的典型劳动仲裁案例,并普法提醒:即便劳动合同约定日薪...
菲律宾,你到底想干什么 中国和菲律宾关系,又出幺蛾子了。反正,最近几天,麻烦不断,场面火爆。仁爱礁,菲两艘小艇冲撞我巡逻船只...
聚焦长期价值,方舟云康以数智化... 来源:江南时报 在慢病管理领域,单纯追逐“流量”的互联网医疗模式已显疲态。当线上获客成本持续走高、用...
阿拉比卡以后喝不到了?对话云大... 搜狐科技《思想大爆炸——对话科学家》栏目第157期,对话云南大学农学院教授何飞飞。 嘉宾简介: 何飞...