AVPlayer rate属性不起作用?

时间:2011-07-08 20:48:46

标签: avplayer

因此看起来实际工作的唯一值是0.0,0.5,1.0和2.0 ......

我尝试将它设置为0.25,因为我希望它以自然速度的1/4播放,但它以自然速度的1/2发挥它。谁能证实这一点?

6 个答案:

答案 0 :(得分:23)

播放速率限制似乎是由于音高修正,现在可以在iOS 7或更高版本中进行配置。

// This prevents the play rate from going below 1/2.
playerItem.audioTimePitchAlgorithm = AVAudioTimePitchAlgorithmLowQualityZeroLatency;

这似乎是默认设置:

  

低质量和极低计算密集型音高算法。适合短暂的快进和倒带效果以及低质量的声音。该利率被攫取至{0.5,0.666667,0.8,1.0,1.25,1.5,2.0}。

其他三种算法设置可让您将播放速率降低至1/32。例如,AVAudioTimePitchAlgorithmVarispeed关闭音高修正。

// Enable play rates down to 1/32.
playerItem.audioTimePitchAlgorithm = AVAudioTimePitchAlgorithmVarispeed;

答案 1 :(得分:18)

确认。我实际上有一张Apple DTS的门票可以解决这个问题并提交了一个错误。唯一支持的值是0.50,0.67,0.80,1.0,1.25,1.50和2.0。所有其他设置都四舍五入到最接近的值。

答案 2 :(得分:6)

我发现确实支持较小的值,但AVPlayerItem中的所有轨道都必须支持速度。但是,Apple并未在单个轨道上提供可指示支持的费率的属性,AVPlayerItem上只有属性canPlaySlowForward。

我发现,带有音轨的AVPlayerItems无法以低于0.5的速率播放。但是,如果只有视频轨道,则速率可以具有任意小的值,如0.01。我将尝试编写一个即时检查哪些值受支持的类别,并在需要时禁用不支持的曲目。

br denis

<强>更新

我写了一个函数,只要你想将视频的速率设置在0.5以下就可以调用。它启用/禁用所有音轨。

- (void)enableAudioTracks:(BOOL)enable inPlayerItem:(AVPlayerItem*)playerItem
{
    for (AVPlayerItemTrack *track in playerItem.tracks)
    {
        if ([track.assetTrack.mediaType isEqual:AVMediaTypeAudio])
        {
            track.enabled = enable;
        }
    }
}

答案 3 :(得分:3)

我同意@otto,你的回答解决了我的问题。

username

答案 4 :(得分:0)

不,它在ipad 2 ios 5上运行正常(xcode 4.2)。我使用了dev资源的AVPlayerDemo并使用滑块修改了rate属性,它非常流畅,绝对没有跳转。 0.2以下的行为是奇数。也许速率在极值附近不是线性的,但是肯定是平滑的。从0.2一直到2.我使用我用设备捕获的视频,这可能会有所作为。

再见,

答案 5 :(得分:0)

(Xcode 11.6,iOS 13.6,Swift 5)

不适用于

player.rate = 2.0

它与

一起使用
player.playImmediately(atRate: 3.0)