我必须转换视频到慢动作与音频使用帧基地的方法。以下链接是很多帮助是Reverse-AVAsset-Efficient
在解决方案中,我可以改变缓冲区的时间戳,实现慢动作视频。
for sample in videoSamples {
var presentationTime = CMSampleBufferGetPresentationTimeStamp(sample)
//Changing Timestamp to achieve slow-motion
presentationTime.timescale = presentationTime.timescale * 2
let imageBufferRef = CMSampleBufferGetImageBuffer(sample)
while !videoWriterInput.isReadyForMoreMediaData {
Thread.sleep(forTimeInterval: 0.1)
}
pixelBufferAdaptor.append(imageBufferRef!, withPresentationTime: presentationTime)
}
字符串
对于音频慢动作,我试图更改音频样本的时间戳,但没有效果。
是否有任何解决方案音频慢动作。
如果你有解决方案,请随时发布。谢谢。
3条答案
按热度按时间hwazgwia1#
你可以使用
AVMutableComposition
来做一个简单的慢动作。正如@hotpaw2所提到的,有不止一种方法可以减慢你的音频-例如,你可以降低音调或保持恒定。这个解决方案似乎可以保持恒定,我看不出有任何方法可以改变这一点。也许这就是你想要的。也许不是。您可以使用
AVAssetExportSession
将慢动作视频写入文件,由于AVMutableComposition
是AVAsset
的子类(可能令人惊讶),因此即使您尚未导出视频的慢动作版本,也可以使用AVPlayer
预览结果。字符串
0kjbasz62#
根据Gordon Child的回答,一旦你有了他所描述的内容,你就可以通过使用this thread中描述的AudioMix基础设施来更改作曲的音高校正策略,因为AVMutableAudioMixInputParameters有一个可设置的AVAudioTimePitchAlgorithm。我证实了这是可行的。
字符串
ifsvaxew3#
根据你想要的音频听起来像什么,你可以尝试使用手动饲料与音频样本数据的苹果的时间间距音频单位之一,以改变其长度,以匹配您的新时间戳之间的时间。