如果是预览视频,添加音乐这个很简单,使用AVAudioPlayer来播放音乐,目前我所做的是播放导入在工程本地的音乐文件,在线网络音乐添加尚未涉及。视频播放使用AVplayer。 下面是切换背景音乐的方法:

-(void)anotherMusic:(NSURL *)url withVolume:(CGFloat)volume{_usingMusic = YES;_musicUrl = url;_musicPlayer = [[AVAudioPlayer alloc]initWithContentsOfURL:url error:nil];[_musicPlayer setVolume:volume];[_musicPlayer prepareToPlay];[_musicPlayer play];
}

我的功能基本是仿照微博发布视频做的,也有声音大小控制。一行代码控制,超级简单。

-(void)changeMusic:(CGFloat)value{
[_musicPlayer setVolume:value];
_musicVolume = value;
}
如果要关闭背景音乐,调用AVAudioPlayer 的stop方法就行。 如果要控制原声:(想要静音直接将声音的值设为0)

      AVURLAsset *asset = [AVURLAsset URLAssetWithURL:_videoUrl options:nil];NSArray *audioTracks = [asset tracksWithMediaType:AVMediaTypeAudio];if(audioTracks.count>0){AVAssetTrack *assetAudioTrack = audioTracks.firstObject;audioTrack = assetAudioTrack;AVMutableAudioMixInputParameters* audioInputParams = [AVMutableAudioMixInputParameters audioMixInputParameters];[audioInputParams setVolume:value atTime:kCMTimeZero];[audioInputParams setTrackID:[assetAudioTrack trackID]];NSArray* audioParams = [NSArray arrayWithObject:audioInputParams];AVMutableAudioMix* audioMix = [AVMutableAudioMix audioMix];[audioMix setInputParameters:audioParams];[self.playItem setAudioMix:audioMix];````上面都只是预览时可见的效果,这个时候并没有真正的将你要的背景音乐加到视频中去。我们获取视频的videoTrack和audioTrack进行相应地处理合成再导出,这样才算真正的控制了视频的一切。视频原声的控制(包括音量大小或者直接静音我是写在一个方法中,方便我控制,你也可以写两个方法,静音时不加入audioTrack,但我觉得两个方法麻烦,一个方法简单点)

-(void)removeAudioTrack:(AVAsset*)asset{

self.mutableComposition = [AVMutableComposition composition];AVMutableCompositionTrack *compositionVideoTrack = [self.mutableComposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
AVAssetTrack *videoTrack = nil;
AVAssetTrack *assetAudioTrack = nil;
if([asset tracksWithMediaType:AVMediaTypeVideo].count!=0){videoTrack  = [[asset tracksWithMediaType:AVMediaTypeVideo]objectAtIndex:0];
}
CMTimeRange timeRange = CMTimeRangeMake(kCMTimeZero, videoTrack.timeRange.duration);
if(videoTrack!=nil){[compositionVideoTrack insertTimeRange:timeRange ofTrack:videoTrack atTime:kCMTimeZero error:nil];
}
//测试改变原声
if ([[asset tracksWithMediaType:AVMediaTypeAudio] count] != 0) {assetAudioTrack = [asset tracksWithMediaType:AVMediaTypeAudio][0];
}if (assetAudioTrack != nil) {AVMutableCompositionTrack *compositionAudioTrack = [self.mutableComposition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];[compositionAudioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, assetAudioTrack.timeRange.duration) ofTrack:assetAudioTrack atTime:kCMTimeZero error:nil];AVMutableAudioMixInputParameters *mixParameters = [AVMutableAudioMixInputParameters audioMixInputParametersWithTrack:compositionAudioTrack];[mixParameters setVolumeRampFromStartVolume:_sound toEndVolume:_sound timeRange:CMTimeRangeMake(kCMTimeZero,assetAudioTrack.timeRange.duration)];self.mutableAudioMix = [AVMutableAudioMix audioMix];self.mutableAudioMix.inputParameters = @[mixParameters];
}

//导出

 self.exportSession = [[AVAssetExportSession alloc] initWithAsset:[self.mutableComposition copy]  presetName:AVAssetExportPreset1280x720];
//    }self.exportSession.videoComposition = self.mutableVideoComposition;self.exportSession.audioMix = self.mutableAudioMix;self.exportSession.outputURL = [NSURL fileURLWithPath:outputURL];self.exportSession.outputFileType=AVFileTypeQuickTimeMovie;self.exportSession.shouldOptimizeForNetworkUse = YES;[self.exportSession exportAsynchronouslyWithCompletionHandler:^(void){switch (self.exportSession.status) {case AVAssetExportSessionStatusCompleted:{dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{[self writeVideoToPhotoLibrary:[NSURL fileURLWithPath:outputURL]]; });// Step 3// Notify AVSEViewController about export completion[[NSNotificationCenter defaultCenter]postNotificationName:AVSEExportCommandCompletionNotificationobject:self];}break;case AVAssetExportSessionStatusFailed:NSLog(@"导出失败:Failed:%@",self.exportSession.error);break;case AVAssetExportSessionStatusCancelled:NSLog(@"导出取消:Canceled:%@",self.exportSession.error);break;default:break;}}];添加本地音乐,传入url。-(void)addMusic:(AVAsset*)asset{CMTimeRange timeRange = CMTimeRangeMake(kCMTimeZero, [asset duration]);AVMutableCompositionTrack *customAudioTrack = [self.mutableComposition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];AVAssetTrack *assetAudioTrack = nil;if ([[asset tracksWithMediaType:AVMediaTypeAudio] count] != 0) {assetAudioTrack = [asset tracksWithMediaType:AVMediaTypeAudio][0];}AVAsset *audioAsset = [[AVURLAsset alloc] initWithURL:_musicUrl options:nil];AVAssetTrack *newAudioTrack = [audioAsset tracksWithMediaType:AVMediaTypeAudio][0];[customAudioTrack insertTimeRange:timeRange ofTrack:newAudioTrack atTime:kCMTimeZero error:nil];AVMutableAudioMixInputParameters *mixParameters = [AVMutableAudioMixInputParameters audioMixInputParametersWithTrack:customAudioTrack];[mixParameters setVolumeRampFromStartVolume:_music toEndVolume:_music timeRange:CMTimeRangeMake(kCMTimeZero,asset.duration)];NSMutableArray *mut = [NSMutableArray arrayWithArray:self.mutableAudioMix.inputParameters];[mut addObject:mixParameters];self.mutableAudioMix.inputParameters = mut;

对了,上面代码还有一个需要注意的地方,如果你只调用addMusic方法,记得 self.mutableAudioMix = [AVMutableAudioMix audioMix]; 我上面的代码是音乐先调用了removeAudioTrack方法,self,mutableAudioMix被初始化过了,后面就不用再初始化了。
面试题持续更新记得关注我哦!
不同的圈子就有不同的学习方式 ;
(qq群搜索):651612063 群密码:111 进群文件可以直接获取大厂面试题

点击进群密码111

iOS视频添加音乐 去除原声相关推荐

  1. 视频智能合并去除原声,添加新音频及文案导出保存

    时下短视频制作越来越热门,一些剪辑的技巧也逐渐越来越多起来,视频合并,去除原声,再选择喜欢的音频.文案与其视频一同合并,这样的剪辑相信大家都很经常制作的吧.那媒体梦工厂可以支持这种操作吗?这里就来试试 ...

  2. 视频去除原声添加新的音乐时如何控制音量大小

    给原视频去声添加好听的音乐可以提升视频的档次,但是如果添加的音乐太小声了怎么办?下面随小编一起用视频剪辑高手在去除原声的基础添加新的音乐时,控制音量大小. 需要哪些工具? 下载一个视频剪辑高手 多个视 ...

  3. 用计算机弄音乐,视频剪辑添加音乐,如何在电脑上給视频添加音乐,什么添加音乐软件比较好用...

    大伙平时有没有录像的习惯,出去旅游啊,过节家人团聚的时候,录下来,记载这些美好时刻,没事的时候拿出来慢慢欣赏.但是大伙欣赏的时候感觉缺少某些东西,没错,就是音乐,俗话说的好,音乐是人类最美的语言,它能 ...

  4. 手机拍摄的短视频不想要原声,可以怎么给视频配音

    手机拍摄的短视频不想要原声,可以怎么给视频配音 短视频如今仍旧是很多人都非常喜欢的娱乐方式,也有越来越多的人加入到了拍摄制作短视频的行列当中,我们也经常可以看到身边有人用手机拍摄短视频,记录自己的生活 ...

  5. android 视频添加音乐,手机怎么给视频加音乐,安卓手机软件怎么给视频添加音乐比较方便...

    注意此教程方案是『安卓手机端教程方案』 如果在手机端操作不方便或对眼睛不好 也可以用另外电脑端的教程方案操作:电脑视频加背景音乐[找更多方案] 现在的手机功能是越来越强大,用手机可以上网看视频.聊天. ...

  6. 如何给一小段视频添加音乐

    最近很多人应该都在追知否知否,小编作为一个只爱看偶像剧和宫廷剧的代表,最后也被这剧吸引了,相较很多电视剧,它的时代背景有些不同,里面的大娘子可谓是整部剧的笑点,当我们看到搞笑的片段是不是都有想录制截取 ...

  7. 做视频不想用原声?这个可能是你需要的。

    做视频不想用原声?这个可能是你需要的. 准备 开始 测试 结束 准备 解压后,你会看到这个exe的执行软件,双击启动,或者右键管理员启动. 记得需要更改你的安装目录. 安装完成之后会有一个图标显示在你 ...

  8. 如何给一小段视频添加音乐 1

    最近很多人应该都在追知否知否,小编作为一个只爱看偶像剧和宫廷剧的代表,最后也被这剧吸引了,相较很多电视剧,它的时代背景有些不同,里面的大娘子可谓是整部剧的笑点,当我们看到搞笑的片段是不是都有想录制截取 ...

  9. android手机视频编辑,安卓手机如何使用视频编辑器给自己录制的视频去除原声并添加配乐?安卓手机视频编辑器...

    点击"视频编辑"就可以开始来进行视频编辑操作了,首先我们要来选择自己想要来进行配乐的视频文件.也可以点击上方的"录制"按钮来直接录制视频素材.这里小编选择了图库 ...

最新文章

  1. js通过ajax发送header信息php接收
  2. hello world的Java代码,Java语言实现hello world代码
  3. 显示和隐藏菜单栏(两种方式div、table)
  4. Unreal4有哪些令你印象深刻拍案叫绝的设计
  5. 2017年R语言发展报告(国内)
  6. TCP新手误区–粘包的处理
  7. 杰理AD14N/AD15N---外置Flash烧录音乐文件
  8. 菜鸟学做Django--图书管理系统
  9. axios和ajax怎么读,axios, ajax和fetch的比较
  10. android项目修改名字(app名称),运行在移动设备和模拟器上的项目名字
  11. 【uniapp】微信小程序国际化详细版
  12. steam++工具箱
  13. linux中常用的加密总结--base64编码解码与openssl实现
  14. 论文研究 | 机器视觉在无人机领域的发展
  15. java 委派关系_一文读懂java类加载之双亲委派机制
  16. 数字化转型经典案例:2020年国企100例
  17. 关于查全率,查准率的定义
  18. 埃博拉病毒的实验室症断
  19. 高等数学-无穷级数思维导图
  20. Python,批量删除txt文本指定行

热门文章

  1. 爱创课堂每日一题第五十七天-一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?...
  2. 微信网页开发 分享功能剖析
  3. 最新全自动磁环电感线圈绕法跟磁环绕线后产品工艺流程介绍
  4. 北京物联展完美收官,拾联诠释“视频+物联网”新时代
  5. 中国公路养护行业规划建议及项目经济效益分析报告2022-2028年版
  6. JAVA面向对象继承之父类宝典(二)
  7. 京东获取 Cookie 、pt_key、pt_pin教程
  8. SwiftUI——推送通知(Notifications)二三事
  9. 电脑基本操作-电脑分屏快捷键
  10. 业务库数据入仓的策略