簡體   English   中英

AVQueuePlayer 設置音頻的速度

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM