gpt4 book ai didi

AVPlayer seekToTime :toleranceBefore:toleranceAfter hangs Intermittently

转载 作者:行者123 更新时间:2023-12-04 11:40:07 24 4
gpt4 key购买 nike

我正在调用 AVPlayer seekToTime:toleranceBefore:toleranceAfter 间歇性挂起,没有完成(甚至没有调用完成 block )。我查看了其他 stackoverflow 但没有成功。

[AVPlayer seekToTime:CMTimeMakeWithSeconds (19,1) toleranceBefore:kCMTimeZero toleranceAfter:kCMTimeZero completionHandler:^(BOOL finished) {}];

有人遇到过这个问题吗?

最佳答案

技术问答QA1820如何使用 AVPlayer seekToTime: 实现流畅的视频擦洗?

问:我的应用程序允许用户结合使用 slider 控件和 AVPlayer seekToTime: 来拖动视频文件:但是视频帧的显示存在相当大的延迟。如何实现更顺畅的擦洗?

A:避免快速连续调用 AVPlayer seekToTime:。这将取消正在进行的搜索,导致大量搜索而不是大量显示目标帧。相反,使用 AVPlayer seekToTime: 的完成处理程序变体,并等待正在进行的查找先完成,然后再发出另一个。 list 1 和 list 2 给出了这种技术的示例(注意:这些示例假设已经创建了一个有效的播放器对象,并且播放器的当前项目状态正在通过键值观察进行维护。有关更多信息,请参阅 AV Foundation 编程指南)。

使用 AVPlayer seekToTime 的完成处理程序变体:用于更平滑的擦洗(Objective-C)。

@import AVFoundation;

@interface MyClass ()
{
AVPlayer player;
BOOL isSeekInProgress;
CMTime chaseTime;
AVPlayerStatus playerCurrentItemStatus; // your player.currentItem.status
...
}

@implementation MyClass

...

- (void)stopPlayingAndSeekSmoothlyToTime:(CMTime)newChaseTime
{
[self->player pause];

if (CMTIME_COMPARE_INLINE(newChaseTime, !=, self->chaseTime))
{
self->chaseTime = newChaseTime;

if (!self->isSeekInProgress)
[self trySeekToChaseTime];
}
}

- (void)trySeekToChaseTime
{
if (playerCurrentItemStatus == AVPlayerItemStatusUnknown)
{
// wait until item becomes ready (KVO player.currentItem.status)
}
else if (playerCurrentItemStatus == AVPlayerItemStatusReadyToPlay)
{
[self actuallySeekToTime];
}
}

- (void)actuallySeekToTime
{
self->isSeekInProgress = YES;
CMTime seekTimeInProgress = self->chaseTime;
[self->player seekToTime:seekTimeInProgress toleranceBefore:kCMTimeZero
toleranceAfter:kCMTimeZero completionHandler:
^(BOOL isFinished)
{
if (CMTIME_COMPARE_INLINE(seekTimeInProgress, ==, self->chaseTime))
self->isSeekInProgress = NO;
else
[self trySeekToChaseTime];
}];
}

@end

关于AVPlayer seekToTime :toleranceBefore:toleranceAfter hangs Intermittently,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30121535/

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