如果背景音频处于活动状态,MPMoviePlayerController 将冻结

Posted

技术标签:

【中文标题】如果背景音频处于活动状态,MPMoviePlayerController 将冻结【英文标题】:MPMoviePlayerController freezes if background audio is active 【发布时间】:2012-09-03 04:17:19 【问题描述】:

在视图控制器中,我播放了视频和一些背景音乐。如果正在播放背景音乐,则视频在循环播放时会冻结。如果背景音乐未正常播放,则视频循环正常。

我是这样设置视频播放器的:

self.moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:[self getBundleClip:@"MyVideo"]];
self.moviePlayer.controlStyle = MPMovieControlStyleNone;
self.moviePlayer.shouldAutoplay = YES;
self.moviePlayer.repeatMode = MPMovieRepeatModeOne;

音频正在通过此Sound Manager 播放。知道为什么视频会冻结吗?

【问题讨论】:

你想播放音乐背景并以重复模式播放视频吗? 是的,这就是为什么我有 self.movi​​ePlayer.repeatMode = MPMovieRepeatModeOne; 【参考方案1】:

尝试使用在后台播放音乐AVAudioPlayer 和同时播放MPMoviePlayerController 如下代码,以重复模式播放 AVAudioplayer:

首先在头文件 (.h) 中初始化 AVAudioplayer 对象,如下所示:

@interface  Yourviewcontroller : UIViewController

    //your some codes after
    AVAudioPlayer *audioPlayer;


@property (strong, nonatomic) AVAudioPlayer *audioPlayer;

在后台实现播放音频文件后,如下代码:

    audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:    [[NSBundle mainBundle] pathForResource:@"audio" ofType:@"mp3"]] error:NULL]; 

    audioPlayer.numberOfLoops =-1;//it's play audio repeatedly
    audioPlayer.currentTime=0.0f;
    [audioPlayer prepareToPlay];

播放音频后项目的任何部分如下代码:

  [audioPlayer play];

你想像下面的代码一样停止音频播放器:

 [audioPlayer stop];

【讨论】:

以上是关于如果背景音频处于活动状态,MPMoviePlayerController 将冻结的主要内容,如果未能解决你的问题,请参考以下文章

Unity 2D 中的视频播放器播放音频但在处于非活动状态后设置为活动时不显示视觉效果

当 UIActivityViewController 处于活动状态时,视图出现在背景/背景后面

如何在 Android 中服务 onDestroy 后保持对象变量处于活动状态?

AVCaptureSession 处于活动状态时的 AudioServicesPlaySystemSound

单击并处于活动状态时更改 Bootstrap 4.1 .btn-outline-primary 背景?

发生中断时如何让我的音频应用程序在后台保持活动状态?