gpt4 book ai didi

ios - 使用iOS AVPlayer时由于内存压力而终止

转载 作者:行者123 更新时间:2023-12-01 16:16:09 25 4
gpt4 key购买 nike

在我的iOS应用程序中,借助于iOS YouTube helper library,我正在循环运行YouTube视频。但是我没有机会播放完整长度的视频,但是20秒后,我再次将相同的视频排队,如下所示。

- (void)playerView:(YTPlayerView *)playerView didChangeToState:(YTPlayerState)state{

if (state == kYTPlayerStateQueued) {
startedTimer = NO;

[self.playerView playVideo];
} else if (state == kYTPlayerStatePlaying) {

if (!startedTimer) {
startedTimer = YES;

vidReplayTimer = [NSTimer scheduledTimerWithTimeInterval:20 target:self selector:@selector(restartVideo) userInfo:nil repeats:NO];
}
}
}


- (void)restartVideo {
[self.playerView cueVideoById:selectedYTVideoId startSeconds:0.1 suggestedQuality:kYTPlaybackQualityMedium];
}

可以按照我的要求完美地工作。

接下来,我想先播放mp4文件,然后YouTube每次都重新播放视频。为此,我使用了 AVPlayer。然后代码已更改,如下所示。
- (void)playerView:(YTPlayerView *)playerView didChangeToState:(YTPlayerState)state{

if (state == kYTPlayerStatePlaying) {
if (self.avPlayer != nil) {
avPlayerLayer.hidden = YES;
self.avPlayer = nil;
}

if (!startedTimer) {
startedTimer = YES;

vidReplayTimer = [NSTimer scheduledTimerWithTimeInterval:20 target:self selector:@selector(restartVideo) userInfo:nil repeats:NO];
}
}
}


- (void)restartVideo {
self.avPlayer = [AVPlayer playerWithURL:introVideoFileURL];

avPlayerLayer = [AVPlayerLayer playerLayerWithPlayer:self.avPlayer];
self.avPlayer.actionAtItemEnd = AVPlayerActionAtItemEndNone;

avPlayerLayer.frame = CGRectMake(0, 0, 320, 330);
[self.view.layer addSublayer: avPlayerLayer];

[self.avPlayer play];

[self.playerView cueVideoById:selectedYTVideoId startSeconds:0.1 suggestedQuality:kYTPlaybackQualityMedium];
}

经过上述更改后,应用程序将按我的预期运行,但运行了将近四分钟后,我的Xcode中弹出了“由于内存压力而终止”的窗口,导致应用程序崩溃。我已使用Instruments开发人员工具检查了内存,到崩溃时,应用已使用了将近35 MB的内存。当应用开始运行时,它使用了超过45 MB的内存并且运行平稳。

如您所见,我仅在需要时创建AVPlayer,并在完成工作后将其设置为nil。这个问题可能是什么原因,我该如何解决?

最佳答案

comments中的Bhavesh Lathigara的解决方案移至Community Wiki答案:

调用didReceiveMemoryWarning时,将所有与视频/音频播放相关的对象都设置为零,并在需要时重新创建它们。

关于ios - 使用iOS AVPlayer时由于内存压力而终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25031269/

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