gpt4 book ai didi

ios - UISlider 的 Avplayer 问题

转载 作者:行者123 更新时间:2023-11-29 10:23:42 27 4
gpt4 key购买 nike

您好,我刚刚创建了 AVplayer 来播放来自服务器的音频。我的问题是我的 UISlider 没有根据 Audioplayer 移动。请帮助我解决这个问题。

    seekbar =[[UISlider alloc]init];
seekbar.frame=CGRectMake(10,CGRectGetMinY(PlayAudio.frame)-50, CGRectGetWidth(self.view.frame)-20, 20);
[seekbar addTarget:self action:@selector(seekTime:) forControlEvents:UIControlEventValueChanged];
seekbar.continuous=YES;
seekbar.minimumValue=0;
seekbar.maximumValue=20;
[self.view addSubview:seekbar];

-(void)Audio{
NSString *urlString= @"https.wav";

audioPlayer = [[AVPlayer alloc]initWithURL:[NSURL URLWithString:urlString]];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(playerItemDidReachEnd:)
name:AVPlayerItemDidPlayToEndTimeNotification
object:[audioPlayer currentItem]];
[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(updateProgress) userInfo:nil repeats:YES];
[audioPlayer play];


}

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {

if (object == audioPlayer && [keyPath isEqualToString:@"status"]) {
if (audioPlayer.status == AVPlayerStatusFailed) {
NSLog(@"AVPlayer Failed");

} else if (audioPlayer.status == AVPlayerStatusReadyToPlay) {
NSLog(@"AVPlayerStatusReadyToPlay");
[audioPlayer play];


} else if (audioPlayer.status == AVPlayerItemStatusUnknown) {
NSLog(@"AVPlayer Unknown");

}
}
}

- (void)seekTime:(id)sender {

[seekbar setValue:CMTimeGetSeconds(audioPlayer.currentTime)];
}

最佳答案

seekTime 仅在用户移动 slider 时调用。所以这不是更新它的好地方。

您应该有一个从 NSTimer 调用的 updateProgress 方法,这是您需要更新 slider 位置的地方:

- (void)updateProgress {
[seekbar setValue:CMTimeGetSeconds(audioPlayer.currentTime)];
}

所以每次 NSTimer 触发时,它应该更新 slider 的位置。

seekTime 方法中,您应该执行相反的操作:将音频播放设置为用户选择的点。像这样:

[audioPlayer setCurrentTime:seekbar.value];

关于ios - UISlider 的 Avplayer 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33475951/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com