[英]AVQueuePlayer set Tempo of audio
我正在使用AVQueuePlayer
播放本地保存的多個音頻。
作為參考,請檢查以下代碼,
for (int j = 0; j < arrPlayData.count; j++) {
path =[[NSBundle mainBundle] pathForResource:[[arrPlayData objectAtIndex:j] valueForKey:AUDIO_NAME] ofType:@"wav"];
item = [[AVPlayerItem alloc] initWithURL:[NSURL fileURLWithPath:path]];
if (_queuePlayer == nil) {
_queuePlayer = [[AVQueuePlayer alloc] initWithPlayerItem:item];
} else{
[_queuePlayer insertItem:item afterItem:nil];
}
}
[_queuePlayer setVolume:1.0];
[_queuePlayer play];
這工作正常,
現在我想為生成的音頻應用 0 到 240 之間的速度,如下圖所示。
我知道setRate:
屬性並將其應用如下,
[_queuePlayer setRate:sldValue/240.0];
在這里, sldValue 是從滑塊上方選擇的值。 在這里,如果我從滑塊中選擇 240,則速率變為 1(以正常形式播放音頻 - 原始形式)。 當我從滑塊中選擇向下值時,它會減慢音頻速度。
我的問題是如何提高音頻速度然后正常播放。 或者這個節奏究竟是如何運作的?
任何幫助都非常感謝。 提前致謝!
[_queuePlayer setRate:sldValue/245.0];
在這里, sldValue 是從滑塊上方選擇的值。 在這里,如果我從滑塊中選擇 240,則速率變為 1(以正常形式播放音頻 - 原始形式)。 當我從滑塊中選擇向下值時,它會減慢音頻速度。
那是因為這正是你所要求的。 想想看。 如果滑塊在 240,那么sldValue/245.0
大約為 1,這意味着正常,正如您所說。 如果你向下滑動,比方說到 120,那么sldValue/245.0
大約是 1/2,也就是一半的速度。
該程序正在按照您的要求執行操作。 如果那不是你想要的,那就不要那樣說!
此外,您需要適當地設置播放器項目的audioTimePitchAlgorithm
,否則您將無法獲得完整的速率范圍。 請參閱: AVPlayer rate 屬性不起作用?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.