与音乐应用程序播放歌曲一起播放静音视频

may*_*uur 4 iphone mpmovieplayercontroller mpmusicplayercontroller ios avplayer

好吧,所以我有一个应用程序,其中有许多练习视频,根本没有任何声音.

此外,在练习开始时,我会显示设备音乐播放器中的所有mp3文件,供用户选择音频文件.

但是,每当视频开始时,音乐播放器就会暂停.如何让它以音乐播放器继续播放和视频同时播放的方式工作.

对于Video,使用类--MPMoviePlayerViewController

它添加如下:

self.movieplayerController = [[MPMoviePlayerViewController alloc] initWithContentURL:urlStr];
self.movieplayerController.moviePlayer.controlStyle =  MPMovieControlStyleFullscreen;
self.movieplayerController.moviePlayer.fullscreen = YES;
self.movieplayerController.moviePlayer.view.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(movieFinishedCallback:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
[self presentModalViewController:movieplayerController animated:YES];
Run Code Online (Sandbox Code Playgroud)

对于音乐播放器,类是--- MPMusicPlayerController.

音频选择并播放如下:

 - (void)mediaPicker: (MPMediaPickerController *)mediaPicker didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection
{
      [self dismissModalViewControllerAnimated: YES];

      [self.musicPlayer stop];

      [self.musicPlayer setQueueWithItemCollection:mediaItemCollection];

      [self.musicPlayer play];
}
Run Code Online (Sandbox Code Playgroud)

编辑:

尝试AVPlayer播放视频但没有成功!

代码如下:

AVPlayerItem *playerItem = [[AVPlayerItem alloc] initWithURL:urlStr];
AVPlayer *player = [[AVPlayer alloc] initWithPlayerItem:playerItem];

AVPlayerLayer *avPlayerLayer = [AVPlayerLayer playerLayerWithPlayer:player];

avPlayerLayer.frame = self.view.frame;
[self.view.layer addSublayer:avPlayerLayer];
[player play];
Run Code Online (Sandbox Code Playgroud)

may*_*uur 5

终于得到了答案....

适用于AVPlayer.

如上所述在问题中初始化它.

AVPlayerItem *playerItem = [[AVPlayerItem alloc] initWithURL:urlStr];
AVPlayer *player = [[AVPlayer alloc] initWithPlayerItem:playerItem];

AVPlayerLayer *avPlayerLayer = [AVPlayerLayer playerLayerWithPlayer:player];

avPlayerLayer.frame = self.view.frame;
[self.view.layer addSublayer:avPlayerLayer];
[player play];
Run Code Online (Sandbox Code Playgroud)

但在此之前,在AppDelegate中,创建一个允许混音的AudioSession.

AudioSessionInitialize(NULL, NULL, NULL, NULL);  
UInt32 sessionCategory = kAudioSessionCategory_AmbientSound;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);
UInt32 allowMixWithOthers = true;
AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryMixWithOthers, sizeof(allowMixWithOthers), &allowMixWithOthers);
AudioSessionSetActive(true);    
Run Code Online (Sandbox Code Playgroud)

从这里得到了答案.

应用AVPlayer播放后播放mp4中断iPod音乐