当ViewController加载时,UISlider的AVPlayer currentTime更新
我正在播放AVPlayer
歌曲。 我为我的媒体播放器和初始化创build了一个独立的视图控制器,并且我为播放器使用的所有方法(播放,暂停,重复,随机播放)都在同一个视图控制器中。
我更新像这样的滑块
[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(sliderUpdate:) userInfo:nil repeats:YES];` - (void) sliderUpdate:(id) sender{ int currentTime = (int)((song.player.currentTime.value)/song.player.currentTime.timescale); slider.value=currentTime; NSLog(@"%i",currentTime); song.currentTime=currentTime; int currentPoint=(int)((song.player.currentTime.value)/song.player.currentTime.timescale); int pointMins=(int)(currentPoint/60); int pointSec=(int)(currentPoint%60); NSString *strMinlabel=[NSString stringWithFormat:@"%02d:%02d",pointMins,pointSec]; lblSlidermin.text=strMinlabel; song.strslidermin=strMinlabel; }
一旦我走出视图控制器,当再来,歌曲播放,但问题是滑块不更新。 所以我创build了一个单独的类来分配当前播放的歌曲细节。 同样在滑块内部更新我为singleton类variables赋值playerCurrentTime(slidercurrent值)。 而我的viewdidload方法我这样分配
if (song.isPlaying==NO) { [self prePlaySong]; }else{ lblAlbum.text=song.currentAlbum; lblArtist.text=song.currentArtist; lblSong.text=song.currentSong; slider.value=song.currentTime; slider.maximumValue=song.sliderMax; slider.minimumValue=song.sliderMin; imgSong.image=song.songImage; [btnMiddle setBackgroundImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateNormal]; }
但滑块没有得到更新。 为什么我可以解决这个问题。 请帮帮我
您不应该为此使用定时器, AVPlayer
提供您观察时间的API。
注册一个观察者(例如在viewWillAppear
)像这样:
CMTime interval = CMTimeMakeWithSeconds(1.0, NSEC_PER_SEC); // 1 second self.playbackTimeObserver = [self.player addPeriodicTimeObserverForInterval:interval queue:NULL usingBlock:^(CMTime time) { // update slider value here... }];
要取消注册观察者(例如在viewDidDisappear
),请执行以下操作:
[self.player removeTimeObserver:self.playbackTimeObserver];
希望有所帮助。
- 无法在iOS5中从CIImage创buildUIImage
- 具有多个预览的AVCaptureSession
- 旋转videow / AVMutableVideoCompositionLayerInstruction
- CMSampleBufferSetDataBufferFromAudioBufferList返回错误12731
- 适用于带有AVFoundation的AVAudioUnitSampler的正确音量信封
- UIImagePickerController:从video获取图像
- find设备的相机分辨率的方法iOS
- iPhone使用AVFoundation从video中读取UIimage(帧)
- 没有AVAsset的纯色的AVMutableComposition