iOS短视频源码音频采集过程中的音效实现

  • 时间:
  • 浏览:1
  • 来源:大发5分快乐8APP下载_大发5分快乐8APP官方

其中,I/O主要负责和设备打交道,比如派发和播放;Mixing负责将不同来源的音频数据进行混合;Effect是对音频数据进行音效解决;Format Conversion主而且进行格式转换比如重采样等。这里有十个 优化的点是音频格式转换 Multichannel Mixer 一种生活就不能实现格式转换的功能,输入和输出的音频数据格式可不不能不同,利用你这个点可不不能节省十个 格式转换unit。

4.1 混响效果(reverberation)

.我歌词 在音乐厅,剧院,礼堂等比较空旷的室内说话或唱歌时,往往能听到和平时不一样的声音,主而且声音在墙壁上多次反射后叠打上去同时,听起来就有了混响的效果。在声音解决中,.我歌词 可不不能人为的将声音缓存起来,延时一定时间后,和原声音叠加,就不能模拟出混响的效果。AudioUnit提供了kAudioUnitSubType_Reverb2来实现混响效果的生成。将该unit接入到AUGraph中已经 ,配置参数即可实现混响的效果。我觉得 混响原理是比较简单,但实际上为了模拟自然界中实际的音效,计算过程还是相当繁杂的,要模拟出不同的大小的空间,不同材质的墙壁,障碍物的好多个,可不不能输入比较多的参数来参与运算。iOS的reverb unit提供了7个参数。.我歌词 在直播应用中提供了十个 不同场景的模拟(录音棚,演唱会,KTV,小舞台),主而且通过调整如下参数实现的:

kReverb2Param_DryWetMix混响效果声的大小与空间大小无关,而只与空间内杂物的好多个以及墙壁及物体的材质有关;

kReverb2Param_DecayTimeAt0Hz / kReverb2Param_DecayTimeAtNyquist衰减时间,整个混响的总长度,与空间大小比较相关,越空旷越长。

4.2 变声效果

变声效果主而且在频域上对人的声音进行一定的解决,.我歌词 知道男声一般比较低沉,女声比较尖锐,你这个主要说的是音调。通过对声音音调的调整,可不不能让低沉的男声听上去像尖锐女声。iOS提供了kAudioUnitSubType_NewTimePitch的unit来实现音调的调整。值得注意的是kAudioUnitSubType_NewTimePitch就有输入Effect类的,而且属于FormatConverter类的。通过设置TimePitch unit的kNewTimePitchParam_Pitch属性即可。

/// pitchShift为具体数值(0表示不变,负数表明调低沉,正数调尖锐)AudioUnitSetParameter(pitchUnit, kNewTimePitchParam_Pitch, kAudioUnitScope_Global, 0, pitchShift, 0);

变男声,可不不能强化突出低沉的特点,将音调调低,设置负数参数即可;

变女声,可不不能强化突出尖锐的特点,将音调调高,设置正数即可;

机器人音效,机器人的音效是十个 组合效果,.我歌词 印象中的机器人音效就有老电影中的那种,音调比较高,而且有重音。什么都有.我歌词 采用的是TimePitch unit + Delay unit的土最好的办法。Delay unit也是iOS提供的十个 将声音延时叠加的unit,而且比混音要简单什么都有,不能单次叠加;

庄严宏大音效,想象一下佛祖你这个 的声音,一般就有自带回声,而且比较男性化,什么都有.我歌词 选用的是TimePitch unit + Reverb unit的土最好的办法来实现。

这里推荐十个 我本人调音效的参考软件voxal voice changer。.我歌词 可不不能在你这个软件上我本人将不同的工具组件组合起来,调试参数,实时听到参数对应的结果。当效果满意后再移植到AudioUnit中。

5.启动AUGraph。

在直播录制中比较关键的一步而且Render Callback Function。

AudioUnit每次就有解决一段音频数据,每次解决完成一段数据的已经 ,你这个回调函数就会被调用一次。在你这个回调函数中,通过AudioUnit的AudioUnitRender土最好的办法,可不不能AUGraph中的某十个 节点中获取到一段解决后的音频PCM数据。同时,而且可不不能进行耳返播放,在你这个回调中也可不不能将取得的音频数据送入到回调函数的最后十个 参数ioData对应的buffer中。

在设置unit的属性时,可不不能注意的是你这个公共的属性。比如音频格式属性和MaximumFramesPerSlice。而且音频格式设置错误,往往会出現 AUGraph启动失败而且声音异常等问提。比如,使用iOS内置的麦克风而且有线耳机时,设备支持的采样率比较高,44.1KHz 能正常工作,.我歌词 整条音频通路上基本上都采用的是44.1KHz。而且当使用蓝牙设备时,一般蓝牙设备无法支持44.1KHz派发和播放,通常就有16KHz甚至更低。此时I/O Unit无法继续使用已经 的配置。可不不能按照实际支持的采样率进行配置。

AudioUnit可不不能求十个 单元衔接处的音频数据格式可不不能保持一致,当AUGraph中不同unit支持的格式不同时(比如在支持蓝牙设备而且使用回声消除模块时,I/O unit要求的格式和你这个单元的有而且不同),此时就可不不能分别设置格式,并通过格式转换unit或mixer unit对格式进行转换。

而且MaximumFramesPerSlice设置错误,而且会出現 声音异常的具体情况。 MaximumFramesPerSlice 表示的是每次回调送入或取出的音频数据的长度,在AUGraph的所有节点的你这个属性也可不不能保持一致而且会原困有的unit丢弃数据,而出現 声音异常 。

在移动短视频直播中, 声音是主播和观众互动的重要途径之一, 为了充足直播的内容,.我歌词 回会我想要在声音上做你这个文章, 在短视频源码派发录音的基础上玩你这个花样。

比如演唱类的直播间中, 主播伴随着背景音乐演唱. 这时你这个主播就会希望不能给我本人声音增加混响的效果, 营发明者者在舞台剧场等环境下演唱的氛围. 再比如你这个搞笑类的直播间, 主播会希望给我本人的声音打上去变声的效果, 女变男,男变女而且变成机器人等等. 为了实现哪几种需求.我歌词 可不不能对派发的声音进行解决, 而且为了让主播实时听到哪几种解决后的效果,以便根据效果进行调整,.我歌词 也可不不能提供低延时的回放,将变化后的声音播放给主播听.对声音解决的方案比较多,这里介绍一下短视频直播SDK中所采用的基于iOS提供的AudioUnit的方案。

iOS系统提供了非常充足的音频相关的API,中有 了从派发,解决到播放等各个环节,而且按照需求的层次进行了分组。

其中,离底层的驱动和硬件最近的而且AudioUnit系列的API,什么都有你这个高层的API,就有对AudioUnit的封装. 比如AVFoundation、AudioQueue、AVAudioEngine等。

缺点:

涉及到的专有概念比较多,接口繁杂,提供C风格的API

优点:

低延时,从派发到播放回环可不不能到10ms的级别可不不能动态变更配置组合可不不能直接获得后台执行权限