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)

UISlider 进展不顺利

UISlider Swift 的 AVPlayer 进度

VS2008中Slider控件制作播放器的进度条,如何在视频播放时改变滑块位置

在 iOS 中播放 Avplayer 时移动滑块变得跳跃

ios音频:使用audioqueue改变播放进度