音频剪切

1.音频剪切比较简单传入音频文件和剪切的时间段就可以了

/** 初始化输出文件路径 */NSString *url = "音频源文件路径";NSString *outPutPath = "音频前切完成输出文件路径";NSURL *audioFileOutput = [NSURL fileURLWithPath:outPutPath];[[NSFileManager defaultManager] removeItemAtURL:audioFileOutput error:NULL];/** 初始化要剪切的音频文件 */AVAsset *asset = [AVAsset assetWithURL:url];AVAssetExportSession *exportSession = [AVAssetExportSession exportSessionWithAsset:assetpresetName:AVAssetExportPresetAppleM4A];/** 剪切的时间段 */CMTimeRange exportTimeRange = CMTimeRangeFromTimeToTime(startTime, endTime);exportSession.outputURL = audioFileOutput;exportSession.outputFileType = AVFileTypeAppleM4A;exportSession.timeRange = exportTimeRange;[exportSession exportAsynchronouslyWithCompletionHandler:^{if (AVAssetExportSessionStatusCompleted == exportSession.status) {NSLog(@" FlyElephant \n %@", outPutPath);} else if (AVAssetExportSessionStatusFailed == exportSession.status) {NSLog(@"FlyElephant error: %@", exportSession.error.localizedDescription);}}];
复制代码

音频的合成

1.音频的合成这里的背景是有一段录音需要加一个背景音乐,视频合成的也是一样的道理把音频源文件改成视频,然后相应的配置改成文件就好了。

    NSString *exportPath = @"导出文件路径";NSString *url = @"音频源文件路径";//音频来源路径NSURL *audioUrl = [NSURL fileURLWithPath:url];NSURL *backPathUrl = [NSURL fileURLWithPath:backPath];//导出路径NSURL *exporAudiotPath = [NSURL fileURLWithPath:exportPath];//删除相同导出路径的文件unlink([exportPath UTF8String]);//创建可变的音频视频组合AVMutableComposition *mixComposition = [AVMutableComposition composition];/** 初始化音频 */AVURLAsset *audioAsset = [[AVURLAsset alloc] initWithURL:audioUrl options:nil];AVURLAsset *audioBack = [[AVURLAsset alloc] initWithURL:backPathUrl options:nil];/** 音乐的时间 */CMTimeRange audio_timeRange = CMTimeRangeMake(kCMTimeZero,audioAsset.duration);//获取视频或者音频中的音频轨道AVAssetTrack *audioTrack = [[audioAsset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0];AVAssetTrack *audioBackTrack = [[audioBack tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0];//可变音视频轨道添加一个 音频通道AVMutableCompositionTrack *audioCompositionTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];AVMutableCompositionTrack *audioCompositionBackTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];//插入音频到容器[audioCompositionTrack insertTimeRange:audio_timeRange ofTrack:audioTrack atTime:kCMTimeZero error:nil];[audioCompositionBackTrack insertTimeRange:audio_timeRange ofTrack:audioBackTrack atTime:kCMTimeZero error:nil];//初始化音频混合器AVMutableAudioMix *exportAudioMix = [AVMutableAudioMix audioMix];//获取到第二条音轨并且设置他的音量大小AVAssetTrack *mixCompositionTrack = [[mixComposition tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:1];//初始化音频混合器导出配置参数AVMutableAudioMixInputParameters *exportAudioMixInputParameters = [AVMutableAudioMixInputParameters audioMixInputParametersWithTrack:mixCompositionTrack];/** 设置第二条音轨的背景音效声音大小 */[exportAudioMixInputParameters setVolumeRampFromStartVolume:0 toEndVolume:[AVAudioSession sharedInstance].outputVolume * 0.6 timeRange:audio_timeRange];NSArray *audioMixParameters = @[exportAudioMixInputParameters];exportAudioMix.inputParameters = audioMixParameters;//创建一个输出AVAssetExportSession* assetExport = [[AVAssetExportSession alloc] initWithAsset:mixComposition presetName:AVAssetExportPresetAppleM4A];/** 导出文件的地址 */assetExport.outputURL = exporAudiotPath;/** 导出文件的格式 */assetExport.outputFileType = @"com.apple.m4a-audio";/** 网络优化 */assetExport.shouldOptimizeForNetworkUse = YES;assetExport.audioMix = exportAudioMix;[assetExport exportAsynchronouslyWithCompletionHandler:^(void ) {NSLog(@"$$$");NSLog(@"完成!输出路径==%@",exportPath);if(completion)completion(exportPath);}];
复制代码

音频的淡入淡出

1.音频的淡入只需要设置音频音轨开始的音量从0到正常的音量,淡出只需要设置音轨音量从淡出时间到结束从正常音量到0就行了。

    NSString *exportPath = @"音频导出文件路径";NSString *exportPath = @"音频源文件路径";//淡入时间NSInteger fadeInTime = 5;//淡出时间NSInteger fadeOutTime = 5;//音频来源路径NSURL *audioUrl = [NSURL fileURLWithPath:url];//导出路径NSURL *exporAudiotPath = [NSURL fileURLWithPath:exportPath];//删除相同导出路径的文件unlink([exportPath UTF8String]);//初始化开始时间CMTime nextClipStartTime = kCMTimeZero;//创建可变的音频视频组合AVMutableComposition *mixComposition = [AVMutableComposition composition];//初始化音频文件AVURLAsset  *audioAsset = [[AVURLAsset alloc] initWithURL:audioUrl options:nil];/** 获取音频时长 */CMTimeRange audioTimeRange = CMTimeRangeMake(kCMTimeZero,audioAsset.duration);//创建一个输出AVAssetExportSession* assetExport = [[AVAssetExportSession alloc] initWithAsset:mixComposition presetName:AVAssetExportPresetAppleM4A];assetExport.outputURL = exporAudiotPath;assetExport.outputFileType = @"com.apple.m4a-audio";assetExport.shouldOptimizeForNetworkUse = YES;//获取音频文件中的音频轨道AVAssetTrack *audioTrack = [[audioAsset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0];//初始化一个音频容器AVMutableCompositionTrack *audioCompositionTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];//插入音频到容器[audioCompositionTrack insertTimeRange:audioTimeRange ofTrack:audioTrack atTime:nextClipStartTime error:nil];//初始化音频混合器AVMutableAudioMix *exportAudioMix = [AVMutableAudioMix audioMix];//获取混合后的音轨AVAssetTrack *mixCompositionTrack = [[mixComposition tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0];//初始化音频混合器导出配置参数AVMutableAudioMixInputParameters *exportAudioMixInputParameters = [AVMutableAudioMixInputParameters audioMixInputParametersWithTrack:mixCompositionTrack];//初始化淡入淡出持续时间  这个可以根据项目需求来设置这里前5秒淡入音量从0到1.0,最后5秒淡出音量从1.0到0 大家可以根据自己需求修改/** 获取当前的音频 */CGFloat volume = [AVAudioSession sharedInstance].outputVolume;if(fadeInTime > 0){//        设置前5秒音乐淡入CMTime continueFadeInTime = CMTimeMakeWithSeconds(fadeInTime, 1);[exportAudioMixInputParameters setVolumeRampFromStartVolume:0 toEndVolume:volume timeRange:CMTimeRangeMake(CMTimeMakeWithSeconds(0, 1), continueFadeInTime)];}if(fadeOutTime > 0){//        计算开始淡出的时间CMTime continueFadeOutTime = CMTimeMakeWithSeconds(fadeOutTime, 1);CMTime fadeOutStartTime = CMTimeSubtract(audioAsset.duration, continueFadeOutTime);//        设置最后5秒音乐淡出[exportAudioMixInputParameters setVolumeRampFromStartVolume:volume toEndVolume:0 timeRange:CMTimeRangeMake(fadeOutStartTime, continueFadeOutTime)];}//        设置音频混合器参数NSArray *audioMixParameters = @[exportAudioMixInputParameters];exportAudioMix.inputParameters = audioMixParameters;//添加到导出配置中assetExport.audioMix = exportAudioMix;//开始导出[assetExport exportAsynchronouslyWithCompletionHandler:^(void ) {NSLog(@"$$$");NSLog(@"完成!输出路径==%@",exportPath);if(completion)completion(exportPath);}];
复制代码

音频剪切、合成、淡入淡出相关推荐

  1. 今日份安利:音频淡入淡出效果如何制作?

    淡入淡出是在影视音乐作品中,经常会使用到的一种处理技巧.它能够让渐渐引入音乐,又移除音乐,不会给人产生很突兀的感觉.小伙伴们在制作短视频的时候,也可以使用这种技巧,这能够让短视频产生不错的效果.那你们 ...

  2. 音频淡入淡出怎么设置?淡入淡出效果如何制作方法合集

    不知道小伙伴们是否和我一样,喜欢用一首歌的高潮部分来作为手机铃声.如果在嘈杂的环境下,这个铃声听起来就不会觉得很大声,但如果在比较安静的环境下,就很容易被铃声吓到.所以为了防止这一情况的发生,我们可以 ...

  3. 接下来告诉大家怎么让音乐淡入淡出

    前几天公司领导,叫我为公司拍摄一段宣传视频.可是当我把拍摄好的视频给领导看时,他却说感觉缺少层次感,希望可以为音频增加一点淡入淡出的效果.于是我就上网搜索了一下淡入淡出剪辑手法有哪些?结果很快就知道了 ...

  4. an怎么做淡入_Pr怎么给字幕、视频、音频做淡入淡出效果

    用pr软件给视频或字幕或音频添加淡入淡出效果 92素材网小编推荐: 注意:视频和字幕文件的淡入淡出方法一致,为方便看各写了一种方法,两个方法可以通用 一.给视频添加淡入淡出效果 11.打开pr,在&q ...

  5. 音频切歌消除POP声或者噪音算法,淡入淡出算法

    公众号 欢迎扫码关注本人微信公众号:公众号上分享更多嵌入式知识和资料,分享个人学习嵌入式的心得体会.欢迎大家一起来玩呀. 1.什么是淡入淡出? 什么是淡入淡出?淡入为声音的音量从无声渐变到正常,淡出则 ...

  6. 两行Python代码实现视频的淡入淡出处理

    ☞ ░ 老猿Python博文目录 ░ 一.引言 最近看到好几篇类似"n行Python代码-"的博文,看起来还挺不错,简洁.实用,传播了知识.带来了阅读量,撩动了老猿的心,决定跟风一 ...

  7. html背景音乐淡入,音乐淡入淡出软件 音乐淡入淡出什么意思 给视频的背景音乐做淡入淡出效果...

    看到今天的这个标题可能大家就有点蒙圈了哈,肯对大多都在想一个问题:"什么叫音乐淡入淡出呢".哈哈,其实所谓音乐淡入淡出的意思就是开始的时候音乐声音是缓缓变大,不会突然很大.结束的时 ...

  8. android 混音 源码,FFmpegAndroid android 端基于 FFmpeg 实现音频剪切、拼接、转码、混音、编解码;视频剪切、水印、截图、转码、编 @codeKK c开源站...

    android 端基于 FFmpeg 库的使用 添加编译 ffmpeg.shine.mp3lame.x264 源码的参考脚本 目前音视频相关处理: 音频剪切.拼接 音频混音 音频转码 音视频合成 音频 ...

  9. Python视频处理案例六则:旋转视频、调整音量/播放速度、淡入淡出、插入转场素材...

    封面图片:<Python程序设计基础与应用>(ISBN:9787111606178),董付国,机械工业出版社 图书详情: ============== 环境配置请参考:Python视频处理 ...

最新文章

  1. 2020-07-08 CVPR2020 表示学习论文讨论(3) 笔记
  2. 深度强化学习落地指南:弥合DRL算法原理和落地实践之间的断层 | 文末送书
  3. ASP.NET Core开发常见“坑”
  4. Python基础之基本数据类型的总结
  5. java面试题jvm_经典面试题|讲一讲JVM的组成
  6. 人工神经网络简介和单层网络实现AND运算--AForge.NET框架的使用(五)
  7. think php5关联模型,thinkphp5中关联模型的定义与使用方法
  8. docker容器中的网络原理(单机模式下的容器网络)
  9. java 小技巧_成为JAVA高手的25个小窍门
  10. 【立项建议书】苏科大校园app立项建议书
  11. 什么叫BSoD蓝屏死机
  12. 计算机桌面有去不掉的框,电脑右下角有个白色方框去不掉
  13. 机器学习算法在退行性颈椎和腰椎疾病中的应用:一项系统综述
  14. Why That Big Meal You Just Ate Made You Hungry
  15. 如何刷PTA,达到PTA甲级、乙级、顶级应具备的能力
  16. wince5+2440的睡眠和唤醒——转载
  17. 树莓派python编程入门与实战解压密码_树莓派Python编程入门与实战
  18. Android Studio - 北极狐 | 2020.3.1 补丁 3 现已推出
  19. RestTemplate上传图片
  20. Ubuntu20.04中安装MySQL在阿里云服务器上

热门文章

  1. GOOGLE搜索秘籍
  2. java自动违例设计,java违例
  3. Java开发之旅之面向对象
  4. 普及一下什么是蓝牙和BLE,看完让你秒懂
  5. 关于神经网络中梯度概念的浅显易懂解释
  6. 小白如何制作一个微信小程序
  7. 那匆匆2014年,明明想静静
  8. cut out数据增强_谷歌大脑提出自动数据增强方法AutoAugment:可迁移至不同数据集...
  9. 如何使用agg函数对数据进行分组聚合
  10. python培训价格多少呢-python培训得花多少钱呢?