AVPlayereekToTime 与 UISlider 不正确

问题描述 投票:0回答:2
- (void)viewDidLoad {
    [super viewDidLoad];
    self.slider.maximumValue = 30;
}

- (void)slide:(UISlider *)slider {
    NSLog(@"....progress  slider value:%d", (int)slider.value);
    CMTime showingTime = CMTimeMakeWithSeconds((int)slider.value, 1);
    [self.player seekToTime:showingTime];
}

每次滑动 UISlider 时,控制台都会在我滑动时记录正确的数字。大约6秒。但滑块会跳回0;如果我将其滑动到大于 10 的值,例如 14,它会滑回到 10。

有人可以帮助我吗?谢谢

ios avplayer uislider
2个回答
5
投票

试试这个。

首先你必须根据 UISlider 的值初始化一个 CMTime 对象。然后调用AVPlayer对象的seek to time方法。将 CMTime 对象作为参数传递。

CMTime showingTime = CMTimeMake(slider.value *1000, 1000);

[self.player seekToTime:showingTime toleranceBefore:kCMTimeZero toleranceAfter:kCMTimeZero];

0
投票

Swift AVPlayer 寻道功能

Swift 版本

self.player.seek(
    to: CMTimeMake(
        value: Int64(playbackSlider.value * 1000),
        timescale: 1000
    ),
    toleranceBefore: .zero, 
    toleranceAfter: .zero
)
//can be read: Be at time

当您跳过

toleranceBefore
toleranceAfter
时 - 默认使用
.positiveInfinity

self.player.seek(
    to: CMTimeMake(
        value: Int64(playbackSlider.value * 1000),
        timescale: 1000
    )
)
//can be read: Be as you wish
© www.soinside.com 2019 - 2024. All rights reserved.