MPMoviePlayerController 中断 AirPlay iPod 音频,但在设备上工作正常
Posted
技术标签:
【中文标题】MPMoviePlayerController 中断 AirPlay iPod 音频,但在设备上工作正常【英文标题】:MPMoviePlayerController interrupts AirPlay iPod audio, but it works fine on the device 【发布时间】:2012-08-01 21:15:03 【问题描述】:我正在使用 MPMoviePlayerController 播放循环播放的视频剪辑。在应用程序委托中,我将 AVAudiosession 的类别设置为 AVAudioSessionCategoryAmbient,这样我的视频剪辑就不会中断 iPod 音频。
这在设备上播放 iPod 音频时效果很好,但在使用 AirPlay 时,每次我循环播放的视频重新开始时,音频都会短暂中断,这非常频繁(而且很烦人)。
在 AppDelegate.m 中:
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:@"AVAudioSessionCategoryAmbient" error:nil];
在我的视频视图控制器中:
self.videoPlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];
self.videoPlayer.useApplicationAudioSession = YES;
self.videoPlayer.controlStyle = MPMovieControlStyleNone;
self.videoPlayer.repeatMode = MPMovieRepeatModeOne;
我已经搜索了网络,但似乎无法找到答案。任何建议都会很棒。谢谢!
【问题讨论】:
【参考方案1】:问题解决了!我只需要使用 AVPlayer 而不是 MPMoviePlayerController。
self.avPlayer = [AVPlayer playerWithURL:url];
self.avPlayer.actionAtItemEnd = AVPlayerActionAtItemEndNone;
self.avPlayerLayer = [AVPlayerLayer playerLayerWithPlayer:self.avPlayer];
self.avPlayerLayer.frame = self.view.bounds;
[self.view.layer addSublayer:self.avPlayerLayer];
[self.avPlayer play];
让它循环:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(movieDidFinish:)
name:AVPlayerItemDidPlayToEndTimeNotification
object:[self.avPlayer currentItem]];
...
- (void)movieDidFinish:(NSNotification *)notification
[self.avPlayer seekToTime:kCMTimeZero];
【讨论】:
以上是关于MPMoviePlayerController 中断 AirPlay iPod 音频,但在设备上工作正常的主要内容,如果未能解决你的问题,请参考以下文章
在 UICollectionViewCell 中滚动时 MPMoviePlayerController 变为空白
MPMoviePlayerController 隐藏 AirPlay 按钮
使用 URL 在 MPMoviePlayerController 中播放视频 - iOS