我正在使用AVPlayer对象进行视频播放,并且可以控制播放器的速率。
除了每次按下停止/暂停按钮时AVplayer对象的速率值似乎重置为1.0,这一切都正常。有没有办法防止这种情况发生?
非常感谢。
答案 0 :(得分:5)
[AVPlayer play]
等同于[AVPlayer setRate:1.0]
[AVPlayer pause]
等同于[AVPlayer setRate:0.0]
答案 1 :(得分:0)
这样做是为了Google的利益......
每次玩家开始玩时,费率属性都会重置为1.0,因此您需要在其他地方维持费率值,并在每次游戏时重新应用。
答案 2 :(得分: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];
答案 3 :(得分:0)
通过AVPlayer的'play'方法重置速率很奇怪,但却是真的。我使用以下代码作为解决方法来加载新的播放器项目,调整播放速率并让它播放:
[self.player replaceCurrentItemWithPlayerItem: [AVPlayerItem playerItemWithURL: movieURL]];
self.player.rate = PLAYER_RATE;
[self.player seekToTime: kCMTimeZero];