AVPlayer 进度滑块随用户拖动而变化
Posted
技术标签:
【中文标题】AVPlayer 进度滑块随用户拖动而变化【英文标题】:AVPlayer Progress slider change with user dragging it 【发布时间】:2012-06-12 10:14:33 【问题描述】:我正在使用 AVPlayer,它运行良好。
我放了滑块,它是根据玩家持续时间的进展。 但是我想如果用户拖动滑块然后播放时间会相应地改变。即根据滑块位置向前或向后播放歌曲。
我试过了
-(IBAction)sliderChange:(id)sender
[player pause];
CMTime t = CMTimeMake(slider.value,1);
[player seekToTime:t];
[player play];
但它再次将滑块带到起点。任何帮助将非常感激。
编辑(使用以下链接)
AVPlayer Video SeekToTime
【问题讨论】:
【参考方案1】:-(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
【讨论】:
非常感谢您的回答,但请您再次检查一下,因为在我的问题中,我写的是我正在实现 AVPlayer 而不是 AVAudioPlayer。 setCurrentTime 对 AVPlayer 不可见。谢谢 当我触摸滑块时使用此代码,它会从启动开始。它到达起点。 暂停播放器,当你改变slider的值时,获取slider的最新值并尝试实现这个方法'-(void)sliderTimerChange CMTime time = [queuePlayer currentTime]; if (CMTIME_IS_VALID(time) && isPlaying) [self showTimeOnScroll:time]; [NSTimer scheduleTimerWithTimeInterval:0.01 target:self 选择器:@selector(sliderTimerChange) userInfo:nil repeats:NO]; else NSLog(@"时间无效"); ' 是的,slider 的变化只是和 valuechanged 绑定的,没错,你崩溃的方法是-(void) showTimeOnScroll:(CMTime)time float timeOriginal = CMTimeGetSeconds(time); sliderTimer.value = timeOriginal;
@mann :您是否仍然面临问题,我正在寻找对您有帮助的东西。 [***.com/questions/6329706/avplayer-video-seektotime]以上是关于AVPlayer 进度滑块随用户拖动而变化的主要内容,如果未能解决你的问题,请参考以下文章
iOS: ios视频播放(MPMediaPlayerController,AVPlayer,AVPlayerViewcontrollerffmpeg-AVPlayer)