我正在尝试为视频文件执行慢动作以及音频。在我的情况下,我必须执行 Ramped 慢动作(逐渐减速和加速 像抛物线不是“线性慢动作”。
参考:线性慢动作:
Ref:Ramped Slow Motion:
到目前为止我做了什么:
前三张子弹使用的AVFoundation
从视频文件分隔的音频和视频。
使用AVFoundation api(scaletimeRange)对视频进行慢动作。它真的很好用。
音频的无法正常工作。似乎apple api本身存在一个错误(错误ID:14616144)。相关问题是scaleTimeRange has no effect on audio type AVMutableCompositionTrack
所以我切换到 Dirac 。后来发现Dirac的开源版本存在限制,它不支持动态时间延长。
最后尝试使用 OpenAL 。
我从Apple开发者论坛上采集了一个OpenAL程序示例并执行了它。
以下是我的问题:
我可以存储/保存 OpenAl中已处理的音频吗?如果“OpenAl”无法直接处理,可以使用 AVFoundation + OpenAL 吗?
非常重要的是,如何使用OpenAL进行慢动作或延长时间范围?如果我知道时间伸展,我可以为Ramp慢动作应用逻辑。
还有其他办法吗?
答案 0 :(得分:1)
我无法真正与1或2说话,但时间缩放音频可以像重新采样一样简单。如果您以48 kHz采样RAW / PCM音频并希望以半速播放,请重新采样至96 kHz并以48 kHz播放音频。由于您的样本数量是原来的两倍,因此需要花费两倍的时间。一般为:
scaledSampleRate = (orignalSampleRate / playRate);
或
playRate = (originalSampleRate / scaledSampleRate);
这将影响音轨的音高,但是这可能是期望的效果,因为在“慢动作”音频中预期这种行为有所不同。有更先进的技术可以在缩放时间的同时保留音高。开源软件Audacity实现了这些算法。你可以在那里找到灵感。网上有很多资源可以解释音高变换与时间拉伸之间的权衡。
您可能没有考虑的另一个选项是在慢动作期间静音。这似乎是大多数AV播放实用程序采用的技术。但是,根据您的使用情况,失真的音频确实表示正在操纵时间。
答案 1 :(得分:0)
我已对包含音频的完整视频应用了慢动作,这可能有助于您查看此链接:How to do Slow Motion video in IOS