首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修改录音剪辑的音高(m4v)

修改录音剪辑的音高(m4v)
EN

Stack Overflow用户
提问于 2012-06-11 22:36:44
回答 2查看 2.7K关注 0票数 9

我正在编写一个应用程序,当我录制一部电影(.m4v)时,我试图改变音频的音高。或者修改电影的音高。我想最终的结果是一部电影(.m4v),它有最初的长度(即与原版相同的视觉),但有修改的音高,例如“花栗鼠的声音”。如果可能的话,可以选择实时转换。

我读过很多关于在iOS中改变音频音高的文章,但是大多数的例子都集中在回放上,即用不同的音高播放声音。

在我的应用程序中,我正在录制一部电影(.m4v / AVFileTypeQuickTimeMovie),并使用标准AVAssetWriter保存它。在保存电影时,我可以访问我试图操作音频的下列元素(例如,修改音高):

  • 音频缓冲器(CMSampleBufferRef)
  • 音频输入写入器(AVAssetWriterAudioInput)
  • 音频输入写入器选项(例如AVNumberOfChannelsKey、AVSampleRateKey、AVChannelLayoutKey)
  • 资产写入器(AVAssetWriter)

我试着连接到上面的对象来修改音频音高,但是没有成功。

我也尝试过狄拉克,如下所述:用狄拉克实现iPhone中的实时基音变化

和OpenAL与AL_PITCH的关系,如下所述:从OpenAL输出到缓冲区的管道

和un4seen:实时改变音高/节奏的“低音”库

我还没有找到上述任何一个库的成功,很可能是因为我不知道如何使用它们,也不知道如何将它们连接到音频保存代码中。

似乎有很多图书馆有类似的效果,但重点是回放或自定义记录代码。我想要操作我已经拥有的音频流(AVAssetWriterAudioInput)或修改保存的电影剪辑(.m4v)。我希望视频是不可修改的视觉,即以同样的速度播放。但是我想让声音飞得更快(像花栗鼠一样)或者慢一点(就像.怪物?

你有什么建议,我如何可以修改音高在实时(当录制电影)或之后通过转换整个电影(.m4v文件)?我应该进一步看看狄拉克,OpenAL,SoundTouch,贝斯还是其他图书馆?

我希望能够与其他人分享修改后的音频,这也是我不能仅仅依靠修改音高来播放的原因。

EN

回答 2

Stack Overflow用户

发布于 2012-08-27 16:18:06

好吧,我可以肯定地说,狄拉克一定会成功的。我用过它,它确实有用。

我没有太多的视频处理经验,但如果在某一点上,你可以隔离音频轨道,这是小菜一碟。

  1. 如果您可以这样做,那么只需将其保存到一个文件中,并使用dirac的时间拉伸示例代码,它不会这么说,但它也会改变音高,您可以设置三个参数来转换您的音频(时间拉伸因子、音高偏移(美分/音调)*以及共振峰移位)。
  2. 如果你不想把它保存到一个文件中,那么就把它转换成PCM,然后在音频单元上做一些DSP。老实说,要做到这一点,您需要一些关于数学和音频处理的严肃知识,但是有许多优秀的示例项目(github ( Tom的AudioGraph))将为您提供所需的东西,请不要忘记在工作中提到所有这些devs代码。

此外,如果您可以转换为PCM,在此阶段,您可以将狄拉克应用于未压缩音频,或者使用音频单元图,或者使用它们的示例代码,而不是使用EAFReader dirac使用,只需将缓冲数据传递到它用来执行音高偏移的缓冲区。您可能需要在那里做一点魔法,但不像编写您自己的DSP实现音高转换那样引人注目。

总之,如果您可以要求AVFoundation处理视频,那么您就可以进行音频单元的实时处理和设置回调,因此每次处理它时,您都可以将处理过的数据传递给文件,或者可能传递给您avassetwriter,我不太确定这最后一段是否可能。如果这是不可能的,那么解决方案是同步和单独保存视频和音频,尽管我可以想象这是一个巨大的问题,因为他们将尝试同时写入磁盘。请告诉我事情进展如何,我现在很感兴趣。

票数 3
EN

Stack Overflow用户

发布于 2013-03-21 20:55:11

  • 您需要做的第一件事是从流中提取音频。您将需要一个解复用器(简言之,解复用器)来实现这一点。看看MainConcept SDK,它们支持大量的格式。
  • 其次,您需要解码您的压缩音频从它的任何格式的,到原始PCM。
  • 然后使用一些库音调移位的原始音频。
  • 接下来,您需要编码音高转换音频回压缩格式。
  • mux回到mp4。

您将失去一些音频质量在过程中,因为解码-编码。你的视频会保持原样。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10988435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档