iOS AVPlayer播放/暂停按钮问题

Ben*_*Ben 13 ios avplayer

我正在使用AVPlayer以下代码从Internet播放实时流:

    NSString *u = @"http://192.192.192.192:8036";
NSURL *url = [NSURL URLWithString:u];
radiosound = [[AVPlayer alloc] initWithURL:url];
    [radiosound play]; 
Run Code Online (Sandbox Code Playgroud)

我有一个按钮播放:

[radiosound play]; 
Run Code Online (Sandbox Code Playgroud)

和暂停:

[radiosound pause]; 
Run Code Online (Sandbox Code Playgroud)

我的问题是我只想使用一个按钮Play/Pause,但是当我使用这个代码时

if (radiosound.isPlaying) {         
    [radiosound pause]; 
} else {                
     [radiosound play]; 
}
Run Code Online (Sandbox Code Playgroud)

我的应用程序崩溃,因为AVPlayer无法识别"isPlaying".

有小费吗?

gca*_*amp 38

AVPlayer没有isPlaying财产.使用rate属性(0.0表示已停止,1.0正在播放).

if (radiosound.rate == 1.0) {         
    [radiosound pause]; 
} else {                
     [radiosound play]; 
}
Run Code Online (Sandbox Code Playgroud)

你可以在这里查看AVPlayer课程参考.

  • 将_float_与_1.0_进行比较可能不是一个好主意.也许__if(radiosound.rate> 0.99)__? (2认同)
  • @SoftDesigner 好点,但是 AFAICT 0.0 和 1.0 都可以在 [IEEE-754 浮点](http://www.cprogramming.com/tutorial/floating_point/understand_floating_point_representation.html)中精确表示。 (2认同)

phi*_*phi 5

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

因此,我也检查currentItem并修改我的方法:

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

如果您认为这种方法有问题,请分享您的意见.

  • 检查currentItem有什么意义?暂停时不应该是零.该项目不会因为您暂停播放器而消失. (2认同)