gpt4 book ai didi

ios - MPMoviePlayerViewController 在进入 youtube 后台后播放视频

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

我在我的应用程序的 info.plist 中为所需的背景模式设置了应用程序播放音频,以保持 mpmovieplayerviewcontroller 在进入后台后不会关闭。它做得很好。但是,Apple 最近拒绝了我的应用程序更新,因为我设置了该属性。

然后我一直在寻找解决方案来做同样的工作,但失败了。为了处理它,我在 View Controller 收到 UIApplicationDidEnterBackgroundNotification 时保存了当前播放时间

-(void)willEnterBackground {
NSLog(@"willEnterBackground");
if (self.mp) {
playbackTime = self.mp.moviePlayer.currentPlaybackTime;
[self.mp dismissModalViewControllerAnimated:YES];
}
}

并在收到 UIApplicationWillEnterForegroundNotification 后设置 currentPlayBackTime:
- (void)willEnterForeground {
NSLog(@"willEnterForeground");

if (!self.mp)
return;
if(self.mp.moviePlayer.playbackState == MPMoviePlaybackStateInterrupted || self.mp.moviePlayer.playbackState == MPMoviePlaybackStateStopped || self.mp.moviePlayer.playbackState == MPMoviePlaybackStatePaused)
{
[self continuePlayback];
}
}

- (void)continuePlayback {
NSLog(@"%f", self.mp.moviePlayer.duration);
NSLog(@"%f", playbackTime);
[self.mp.moviePlayer stop];
self.mp = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:[self.videos objectForKey:@"medium"]]] ;
[self.mp.moviePlayer setInitialPlaybackTime:playbackTime];
[self.mp.moviePlayer play];
[self presentModalViewController:self.mp animated:YES];
}

它有效,但有一些权衡:
当我重新启动它时,它丢失了流式视频部分。用户需要再次等待流式传输。

我的问题来了:
  • 有没有办法在应用程序运行时继续流式传输 Youtube 的视频
    在后台?
  • 或者如何保持流式传输的部分?

  • 如果我跳过该行,它将从视频的开头播放:
    self.mp = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:[self.videos objectForKey:@"medium"]]] ;

    在 continuePlayBack 方法或我 setCurrentPlayBackTime 而不是 setInitPlayBackTime。

    最佳答案

    你在那里发现的东西是完全正常的——很奇怪,但很正常。 MPMoviePlayerController只尊重 initialPlaybackTime在新实例上使用时。我确实敦促您提交关于该问题的错误报告,因为它自古以来就已知(iOS3)但未修复。

    没有办法保持缓冲区状态,您起草的解决方案与我在许多应用程序中使用的几乎相同。

    现在直接回答你的问题;

    重新 1) 是和否。正如您自己发现的那样,Apple 确实对 UIBackgroundModes 非常苛刻。用法。尽管他们明确建议使用它来实现不间断的 AirPlay 流(视频和音频内容),但当他们所做的只是播放视频时,他们仍然拒绝应用程序。我还认为苹果审查团队方面的一次史诗般的失败。您可能想尝试与他们的拒绝作斗争,引用他们自己的文档:

    Important: The UIBackgroundModes audio key will allow apps to stream audio or video content in the background using AirPlay.



    发件人: http://developer.apple.com/library/ios/#qa/qa1668/_index.html

    re 2) 否(见介绍性答案文本)

    让我也从不同的角度来解决这个问题......

    如果您的问题实际上是在 iOS5 上设备在通过 AirPlay 流式传输时进入休眠模式。然后,实际上有一种可能的解决方法至少可以工作 - 即使它非常讨厌......

    您可以注册 MPMoviePlayerIsAirPlayVideoActiveDidChangeNotification并检查 airPlayVideoActive在钩子(Hook)方法中。一旦 AirPlay 处于事件状态,只需通过设置 [UIApplication sharedApplication].idleTimerDisabled = YES; 来防止空闲一旦 AirPlay 变为非事件状态,请记住执行相反的操作。所有这些都应该只在 iOS5 上需要,因为 iOS6 修复了 AirPlay 处于事件状态时的空闲问题。

    关于ios - MPMoviePlayerViewController 在进入 youtube 后台后播放视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15389989/

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