的iOS AVPlayer播放/暂停按钮问题

问题描述:

我使用AVPlayer使用下面的代码来播放来自互联网的实时流:的iOS AVPlayer播放/暂停按钮问题

NSString *u = @"http://192.192.192.192:8036"; 
NSURL *url = [NSURL URLWithString:u]; 
radiosound = [[AVPlayer alloc] initWithURL:url]; 
    [radiosound play]; 

而且我有一个按钮,播放:

[radiosound play]; 

和暂停:

[radiosound pause]; 

我的问题是,我只想使用一个按钮播放/暂停,但是当我使用此代码

if (radiosound.isPlaying) {   
    [radiosound pause]; 
} else {     
    [radiosound play]; 
} 

我的应用程序崩溃,因为AVPlayer不识别“isPlaying”。

任何提示?

AVPlayer没有isPlaying属性。使用rate属性(0.0表示停止,1.0播放)。

if (radiosound.rate == 1.0) {   
    [radiosound pause]; 
} else {     
    [radiosound play]; 
} 

你可以看一下在AVPlayer类引用here

+0

有些人说即使暂停,在飞行模式下它仍然是1.0。 – openfrog

+2

将_float_与_1.0_进行比较可能不是一个好主意。也许__if(radiosound.rate> 0.99)__? – SoftDesigner

+0

@SoftDesigner的好处,但AFAICT 0.0和1.0都可以在[IEEE-754浮点](http://www.cprogramming.com/tutorial/floating_point/understanding_floating_point_representation.html)中精确表示。 –

经过一番研究,我发现当没有网络连接时,在收到-play消息后,AVPlayer仍然将速率设置为1.0。

因此,我也检查了CURRENTITEM和改进我的方法,像:

-(BOOL)isPlaying 
{ 
    if (self.player.currentItem && self.player.rate != 0) 
    { 
     return YES; 
    } 
    return NO; 
} 

请分享你的观点,如果你认为什么是错的这种方法。

+2

检查currentItem有什么意义?暂停时,不应该是零。该项目不会因为您暂停播放器而消失。 – openfrog