有没有办法阻止AVPlayer的rate属性被重置?

问题描述:

我正在使用AVPlayer对象进行视频播放,并且有一个控件来调整播放器的速率。有没有办法阻止AVPlayer的rate属性被重置?

这一切都工作正常,除了每次按下停止/暂停按钮AVplayer对象的速率值似乎重置为1.0。有没有办法来防止这种情况发生?

非常感谢。

在此之后弥补谷歌的利益......

率属性重置为每个玩家开始玩的时候1.0,所以你需要维持率数值在其他地方重新它适用于各玩。

+0

这是相同的行为我MPMoviePlayer得到的,它甚至寻求后会发生。我提出了一个关于它的雷达。 – 2012-01-25 00:30:41

[AVPlayer play]相当于[AVPlayer setRate:1.0]

[AVPlayer pause]相当于[AVPlayer setRate:0.0]

的MPMediaItem给你一个属性来读取每媒体项目的分钟的节拍。

事情是这样的 -

MPMediaItem *item = [[MPMediaItem alloc]init] ; 
. 
. 
. 
int BPM = [item valueForProperty:MPMediaItemPropertyBeatsPerMinute]; 

现在计算的要设置的媒体项目的速度的速度 -

float rate = newBPM/(float)BPM; // lets say BPM = 100, You want to double the rate of the media then newBPM = 200 

现在设置这个速度到AVPlayer对象 -

[AVPLayer setRate:rate]; 

通过AVPlayer的“play”方法重置速率很奇怪,但却是正确的。我用下面的代码作为一种变通方法来加载一个新的球员的项目,调整播放速度,并让它发挥:

[self.player replaceCurrentItemWithPlayerItem: [AVPlayerItem playerItemWithURL: movieURL]]; 
self.player.rate = PLAYER_RATE; 
[self.player seekToTime: kCMTimeZero];