![](/img/trans.png)
[英]Using AVPlayer for the iPhone, SeekToTime only ever restarts the video for me
[英]iOS - AVPlayer seekToTime restarts playback of currentItem
我正在制作一個使用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
定義了一個有理數。 你給的是分子和分母。 如果你的分母很大,那么有理數就會很小。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.