【问题标题】:iOS AVPlayer Play/Pause button issueiOS AVPlayer 播放/暂停按钮问题
【发布时间】:2011-11-12 11:12:02
【问题描述】:

我正在使用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”。

有什么建议吗?

【问题讨论】:

    标签: ios avplayer


    【解决方案1】:

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

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

    您可以查看AVPlayer 类参考here

    【讨论】:

    • 有人说即使暂停了飞行模式还是1.0。
    • 比较 float1.0 可能不是一个好主意。也许 if (radiosound.rate > 0.99)?
    • @SoftDesigner 好点,但 AFAICT 0.0 和 1.0 都可以在 IEEE-754 floating point 中精确表示。
    • 您可以使用 AVPlayer 的 timeControlStatus 属性。 player.timeControlStatus == .paused player.timeControlStatus == .playing
    【解决方案2】:

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

    因此,我还检查了 currentItem 并像这样修改了我的方法:

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

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

    【讨论】:

    • 检查 currentItem 的意义何在?暂停时它不应该为零。该项目不会因为您暂停播放器而消失。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-25
    • 1970-01-01
    • 1970-01-01
    • 2014-12-05
    相关资源
    最近更新 更多