gpt4 book ai didi

iOS - AVPlayer seekToTime 重新开始播放 currentItem

转载 作者:行者123 更新时间:2023-11-28 22:09:36 26 4
gpt4 key购买 nike

我正在制作一个使用 AVPlayer 的应用程序。在我的一个观点中,我有一个 UISlider,用户应该能够使用它向前和向后滑动。我在让 seekToTime 按我的意愿工作时遇到了一些问题。当我尝试更改时间时,播放从 0 开始,但我不确定如何解决这个问题。我当前的实现如下所示:

[self.progressSlider  addTarget:self action:@selector(sliderValueChanged) forControlEvents:UIControlEventValueChanged];

[self.progressSlider addTarget:self action:@selector(sliderReleased) forControlEvents:UIControlEventTouchUpInside];


- (void)sliderValueChanged {

[...]
[player pause];

}

- (void)sliderReleased {

float timeInSecond = self.progressSlider.value;

timeInSecond *= 1000;

// I have trie to hard code this value, but I get the same result.
CMTime cmTime = CMTimeMake(timeInSecond, NSEC_PER_SEC);

[player.currentItem seekToTime:cmTime toleranceBefore:kCMTimeZero toleranceAfter:kCMTimeZero completionHandler:^(BOOL finished) {

if (finished) {
[player play];
}
}];
}

对我做错了什么有什么想法吗?

可以提及我使用 AVPlayer 的流式传输音频:playerItemWithURL 如果这有任何区别的话。

最佳答案

一个问题是 NSEC_PER_SEC 是 1,000,000,000,所以 CMTimeMake(timeInSecond, NSEC_PER_SEC) 将是一个非常小的数字(除非 timeInSecond大得离谱) - 事实上,它会任意接近于零,这正是你正在经历的。

需要说明的是:CMTimeMake 定义了一个有理数。你给了一个分子和一个分母。如果分母很大,那么有理数就会很小。

关于iOS - AVPlayer seekToTime 重新开始播放 currentItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23228181/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com