iOS 如何对音频、视频合成,配音、卡拉OK技术

iOS原生的开发框架集成了丰富的视频/音频处理功能,所以用不着去找第三方框架。只要:

#import <AVFoundation/AVFoundation.h>

AVFoundation基本上能满足大部分的音频/视频处理。Talk is cheap,我们看看一个简单的例子。这个例子的功能是将一个视频的画面(不包括声音)和另外一段背景音合成,以说明音频/视频合成的基本用法。只要设置不同的位置,就可以随意地将不同的视频和音频进行合成,比如对电影配音,或者用伴奏音频和自己的声音进行混合,制作卡拉OK功能。

NSError *error = nil;AVURLAsset* videoAsset = [[AVURLAsset alloc]initWithURL:videoUrl options:nil];AVURLAsset *backgroundAudio = [[AVURLAsset alloc] initWithURL:bgmUrl options:nil];AVMutableComposition* mixComposition = [AVMutableComposition composition];

上面一段是初始化代码,AVURLAsset是一个资源的抽象类,由此可以分离出资源的音频和视频,也就是说,一个带音频的视频可以直接用这个对象得到它的音频和视频轨道来进行处理。
AVMutableComposition顾名思义是一个用来接收不同轨道的类,无论是音频还是视频。那我们开始把相应音频和视频放到AVMutableComposition去吧。

AVMutableCompositionTrack *backgroundTrack =[mixComposition addMutableTrackWithMediaType:AVMediaTypeAudiopreferredTrackID:kCMPersistentTrackID_Invalid];NSArray *audioTracks = [backgroundAudio tracksWithMediaType:AVMediaTypeAudio];[backgroundTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, backgroundAudio.duration)ofTrack:[audioTracks firstObject]atTime:kCMTimeZero error:nil];AVMutableCompositionTrack *compositionVideoTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeVideopreferredTrackID:kCMPersistentTrackID_Invalid];NSArray *videoTracks = [videoAsset tracksWithMediaType:AVMediaTypeVideo];[compositionVideoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, videoAsset.duration)ofTrack:[videoTracks firstObject]atTime:kCMTimeZero error:nil];

一般来说videoTracks只有一个音轨/视轨,我这里简单地把开始时间都设为0,长度设为他们的时长。如果你还想添加别的音频/视频,只要继续使用mixComposition addMutableTrackWithMediaType:,在合成的媒体设置不同的位置即可。
设置好了合成的素材之后,下面我们就开始输出了,这一段代码比较固定。

    if ([[NSFileManager defaultManager] fileExistsAtPath:location.path]){[[NSFileManager defaultManager] removeItemAtPath:location.path error:&error];if (error) {failed();return;}}for (NSString *supportFileType in assetExport.supportedFileTypes) {NSLog(@"%@",supportFileType);}assetExport.outputFileType = @"public.mpeg-4";NSLog(@"file type %@",assetExport.outputFileType);assetExport.outputURL = location;assetExport.shouldOptimizeForNetworkUse = YES;[assetExport exportAsynchronouslyWithCompletionHandler:^(void ) {// your completion code hereNSLog(@"%@",assetExport.outputURL);}];

其中,我打印了supportFileType,以看到有哪些格式是支持的,iOS对MP4支持比较严格,视频里面的音频必须要用AAC来编码的,另外说一句,这些无论是合成的视频,音频,还是合成后的视频,它都是用NSURL的,也就是说,合成的功能支持纯网络环境运行。
这是我第一次认真写技术博客,转载请注明出处,谢谢。

iOS 如何对音频、视频合成,配音、卡拉OK技术相关推荐

  1. 两个mp3文件合成 php,两个音频合成一个 音频合成软件/音频视频合成软件合并不同格式为一个音频文件...

    怎么将两个音频合成一个音频文件,嗯~ o(* ̄▽ ̄*)o ,又是一个老生常谈的话题,但既然是提到了自然是再给大伙演示一下,那就使用一个比较简单的音频合成软件/音频视频合成软件合并不同格式为一个音频文件 ...

  2. Android 3分钟一个库搞定视频替换音频 视频合成 视频裁剪(高仿剪映)

    几种框架的比较: https://www.zhihu.com/question/278431860 方法一(Fail) 利用MediaMux实现音视频的合成. 效果:可以实现音视频的合并,利用Andr ...

  3. ios开发之音频视频开发

    一.音频播放方式 1.System Sound Services 2.AVAudioPlayer 3.Audio Queue Service 4.OpenAL 二.使用 1.System Sound ...

  4. iOS开发--AVFoundation进行视频合成, 导出结果旋转90度问题

    创建出的视频轨道AVMutableCompositionTrack 设置setPreferredTransform __block AVMutableCompositionTrack*videoCom ...

  5. java实现消音视频和配音音频的合成

    1.maven的pom.xml文件中导入相应的配置下载jar包 <!-- javacv视频音频工具包 --><dependency><groupId>org.byt ...

  6. iOS 音频视频图像合成那点事

    代码地址如下: http://www.demodashi.com/demo/13420.html 人而无信不知其可 前言 很久很久没有写点什么了,只因为最近事情太多了,这几天终于闲下来了,趁此机会,记 ...

  7. ffmpeg ios无声音 视频合成声音没有声音

    ios无声音,安卓正常 1.用如下命令合成将mp3转为aac格式 ffmpeg -i 6s.mp3 -acodec aac -strict experimental -ab 128k -ar 16k ...

  8. python ffmpeg 视频转图片 视频转音频 播放音频 多张图片+音频转视频 多个视频合成一个视频 改变视频播放速度

    文章目录 视频转图片 视频转音频 播放音频 图片+音频 转 视频 多个视频合成一个视频 改变视频播放速度 视频转图片 #!/usr/bin/env python # -*- encoding: utf ...

  9. foobar2000 ios版怎么添加音乐_抖音怎么设置说完话后再放音乐 视频先配音后半段添加背景音乐...

    看到一个段子,双十一最该打折的是什么,答:双手.哈哈,昨天双十一购物狂欢,看到消息说双11当天全国处理亿快件,再创历史新高,也是辛苦各位快递员了.好啦,回归主题,继续给大家带来视频编辑教程.网上有很多 ...

最新文章

  1. hbase 数据插入指定rowkey_「HBase大爆炸」HBase之常用Shell命令
  2. 大厂首发!尚硅谷docker高级
  3. C六:指针可以比较大小
  4. Apollo2.5摄像头安装
  5. php删除菜单栏,如何删除WordPress站点健康状态面板和菜单项
  6. 【重磅】亚马逊向第三方开放Echo音箱语音识别技术(附AmazonEcho Dot拆解)
  7. training test validation 各有其用,实践中有了体会
  8. Python安装时0x80070642问题解决
  9. 2021年流动式起重机司机模拟考试题库及流动式起重机司机模拟考试系统
  10. Linux操作系统加固
  11. 怎么把高清图片导入到CAD图纸文件中?
  12. 苹果手机更改照片大小kb_iPhone调整照片大小方法教程 无需第三方软件
  13. 基础拍摄前期和基础后期修图
  14. Package cmake is not available, but is referred to by another package.
  15. 服务器性能指标图英文翻译,技术性能指标,technic performance guildline,在线英语词典,英文翻译,专业英语...
  16. 微信收款接口_企业微信:3.0.26版本新功能介绍
  17. 基于链接预测和卷积学习的Web服务网络嵌入
  18. 840D sl(QT)使用ocx外部控件
  19. 自己动手写个聊天机器人吧
  20. 易语言超级列表框 网络图片_易语言实用例程1:简单的数据库网络操作(C/S架构)---下篇...

热门文章

  1. nginx版本号泄露问题解决
  2. 做服装设计师需要具备哪些技能?
  3. 如何将低质量(如120dpi)图片变为300dpi
  4. elasticsearch-es查询并清理重复数据
  5. python+django共享汽车租赁管理系统pycharm
  6. linux rsync和inotify
  7. Django与Vue的前后端交互
  8. java文档在线预览实现
  9. 测试自动化框架的重要性– iSAFE的优势
  10. Lanenet网络Tusimple数据集国内源下载