AvPlayer seekToTime 问题

Posted

技术标签:

【中文标题】AvPlayer seekToTime 问题【英文标题】:AvPlayer seekToTime issue 【发布时间】:2014-08-13 12:49:43 【问题描述】:

我正在开发视频应用程序并在AVPlayer 上播放视频。但问题是当我在UISlider 的帮助下寻找特定时间的视频时。播放器seekToTime 方法在integer 中获取时间值,但我希望它在float 中获取。请帮忙 这是我的代码

Float32 sliderValue = (float) avPlayerSlider.value;
[mPlayer seekToTime:CMTimeMake(sliderValue, 1) toleranceBefore:kCMTimeZero toleranceAfter:kCMTimeZero];

【问题讨论】:

【参考方案1】:

您可以设置适当的时间刻度。

CMTimeMake(12345, 10000); //This is 1.2345 seconds 

或使用定义的时间尺度

#define NSEC_PER_USEC   1000ull     /* nanoseconds per microsecond */
#define USEC_PER_SEC    1000000ull  /* microseconds per second */
#define NSEC_PER_SEC    1000000000ull   /* nanoseconds per second */
#define NSEC_PER_MSEC   1000000ull  /* nanoseconds per millisecond */

在我的播放器应用中,我正在使用这样的对话:

CMTime thumbTime = CMTimeMakeWithSeconds(self.currentPlaybackTime, NSEC_PER_SEC);

【讨论】:

【参考方案2】:

我也一直被这个问题困扰,修复一下,代码如下:

[_playerItem cancelPendingSeeks];
[_player seekToTime:CMTimeMakeWithSeconds(leftPosition, NSEC_PER_SEC) toleranceBefore:kCMTimeZero toleranceAfter:kCMTimeZero];

leftPosition(CGFloat)是资产的时间,单位是秒。

希望对你有帮助

【讨论】:

以上是关于AvPlayer seekToTime 问题的主要内容,如果未能解决你的问题,请参考以下文章

AVPlayer seekToTime 永远不会完成

AVPlayer seekToTime 导致播放器停止播放

AVPlayer SeekToTime 不工作。每次从头开始

AVPlayer seekToTime 不正确使用 UISlider

AVPlayer seekToTime:循环播放短视频时性能不佳

iOS AVPlayer seektotime 锁定在某些点