簡體   English   中英

iOS - AVPlayer seekToTime重新開始播放currentItem

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM