美文网首页AVFoundationiOS开发iOS Developer
AVFoundation连续系列之六混音(OC/Swift)

AVFoundation连续系列之六混音(OC/Swift)

作者: 刘玉静 | 来源:发表于2016-07-25 12:32 被阅读534次

    前言:

    咱们如果希望保存下来的文件是带有音效的音频文件,那就需要把原声和音效同时录制下来,咱们先来张图看下。

    通过图咱们可以直观的看到如果想要录制带有音效文件的步骤,咱们第三步,录制那步,其实就是咱们混音的那一步。

    这季咱们就主要讲混音这一块。

    混音:AVAudioMixerNode

    简介:

    音频混音节点,主要用于将同一音频引擎上的音频混合成一轨音频。他没有实际效果的作用,可以理解成他是一个工具类。

    混音节点是一个遵守了混音协议(AVAudioMixing)的音频节点,那咱们在看混音节点之前先了解下混音协议。

    AVAudioMixing音频混合协议继承了两个协议,分别是AVAudioStereoMixing、AVAudio3DMixing。

    这个协议定义了输入总线可用属性的混合器节点。

    它可以改变在它出现之前所有的节点。

    AVAudioStereoMixing:音频立体声混合协议 里面定义了关于左右声道平衡方法。

    AVAudio3DMixing:3D音频环境混合协议  里面包含了音频环境的枚举 音频的播放速率  混响的比例  声音穿透的阻碍力度  音频吸收的比例 发声点的中心点

    咱们的混音协议可以调控输出音频的大小。他又继承上面的两个协议,所以他也就具备了上面的功能。

    如果你需要更细微的调节音频,可以使用协议里面的方法。比如你去做一个更专业的音频制作软件,需要调节几轨音频更精准的声道位置、或者调节某一个乐器发生的位置,就需要继续去研究这些协议了。当然你最好有一定的电子音乐编曲的功底。

    混音节点又是一个音频节点,他继承自AVAudioNode,音频节点具备录制、检测、观察输出音频节点的功能,咱们就可以使用这个功能来把带有音效的音频录制下来。

    直接上代码:

    mixer.installTap(onBus:0, bufferSize:8192, format: input.inputFormat(forBus:0)) { (buffer, when)in

    try! audioFile.write(from: buffer)

    }

    这基本就搞定了,但有一点特别需要注意,就是在录制完成之后,需要把tap移除掉

    mixer.removeTap(onBus:0)

    这样咱们录制带有音效的音频就搞定了!

    剩下的结合咱们之前讲过的内容和Demo来看吧!


    Swift版

    OC版


    如果转载需要经过我的同意!

    相关文章

      网友评论

      本文标题:AVFoundation连续系列之六混音(OC/Swift)

      本文链接:https://www.haomeiwen.com/subject/lrvgjttx.html