2012-06-12 21 views
1

我正在使用AVPlayer,它的工作良好。AVPlayer進度滑塊隨用戶拖動而改變

我把滑塊,它根據球員的持續時間進展。 但我想如果用戶拖動滑塊,然後相應地播放時間更改。即歌曲根據滑塊位置向前或向後。

我已經試過

-(IBAction)sliderChange:(id)sender{ 
[player pause]; 
CMTime t = CMTimeMake(slider.value,1); 
[player seekToTime:t];  
[player play]; 
} 

但它再次發生滑塊的起點。任何幫助將非常感激。

EDIT(具有下文LINK WORKING)

AVPlayer Video SeekToTime

回答

8
-(IBAction) valueChangeSliderTimer:(id)sender{ 
    [avplayer pause]; 
    isPlaying = FALSE; 
    [btnPauseAndPlay setTitle:@"Play" forState:UIControlStateNormal]; 

    float timeInSecond = sliderTimer.value; 

    timeInSecond *= 1000; 
    CMTime cmTime = CMTimeMake(timeInSecond, 1000); 

    [avplayer seekToTime:cmTime toleranceBefore:kCMTimeZero toleranceAfter:kCMTimeZero]; 
} 

被修改代碼。

而且嘗試此鏈接,以及: Try this link

+0

非常感謝你的答案,但請你再檢查,因爲在我的問題,我寫我實現AVPlayer不AVAudioPlayer。對於AVPlayer,setCurrentTime不可見。謝謝 – Mann

+0

有了這段代碼,當我觸摸滑塊,然後它從開始啓動。它到達了起點。 – Mann

+0

暫停您的播放器,當您更改滑塊的值時,獲取最新的滑塊值並嘗試實施此方法 ' - (void)sliderTimerChange { CMTime time = [queuePlayer currentTime]; \t if(CMTIME_IS_VALID(time)&& isPlaying){ \t \t [self showTimeOnScroll:time];\t \t [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(sliderTimerChange)userInfo:nil repeatats:NO]; \t \t} \t else { \t \t NSLog(@「time is invalid」); \t} }' – Dhruv