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 不正确使用 UISlider