1

Я использую MPMoviePlayerController играть видео в мое приложение. Ниже приведен мой код для воспроизведения видео.MPMoviePlayerController: Не получить звук, когда мы останавливаемся MPMoviePlayerController

**NSURL *url=[[NSURL alloc] initFileURLWithPath:urlPath];   
    if(moviePlayer) 
    { 
     [moviePlayer.view removeFromSuperview]; 
     moviePlayer = nil; 
    } 

    moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url]; 
    moviePlayer.repeatMode = MPMovieRepeatModeOne; 
    moviePlayer.currentPlaybackTime = 0.0; 
    moviePlayer.view.frame = _viewMoviePlayer.frame; 
    moviePlayer.controlStyle =  MPMovieControlStyleNone; 
    moviePlayer.shouldAutoplay = YES; 
    [_viewMoviePlayer addSubview:moviePlayer.view]; 
    [moviePlayer prepareToPlay]; 
    [moviePlayer play]; 
    [self.view sendSubviewToBack:_viewMoviePlayer]; 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayBackDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayer];** 

Когда viewWillDisappear называется, то я просто остановка MoviePlayer и удалить его из поля зрения. Но мой музыкальный проигрыватель по умолчанию работает, но не звучал для него. Когда я закрыл свое приложение, оно будет.

-(void)viewWillDisappear:(BOOL)animated 
{ 
    [super viewWillDisappear:animated]; 
    [moviePlayer stop]; 
    [moviePlayer.view removeFromSuperview]; 
    moviePlayer = nil; 

    [_viewMoviePlayer removeFromSuperview]; 
    _viewMoviePlayer = nil; 
} 

Может кто-нибудь сказать, какой будет неправильно в моем коде? Поэтому я выпускаю moviePlayer, тогда он будет играть музыку по умолчанию, как и должно быть. , когда я проверяю текущий звук для Music, тогда его ohk, а также его шоу-шоу работает в приложении Music. Но не получилось.

ответ

1

Я столкнулся с той же проблемой. Я просто создал один отдельный контроллер. Ниже мой код же:

-(void)playVideo 
{ 
    isPlay = FALSE; 
    if([[MPMusicPlayerController systemMusicPlayer] playbackState] == MPMoviePlaybackStatePlaying) 
     isPlay = TRUE; 

    NSString *urlPath = [[NSBundle mainBundle] 
         pathForResource:@"all" 
         ofType:@"mp4"]; 


    NSURL *url=[[NSURL alloc] initFileURLWithPath:urlPath]; 

    if(player) 
     [player pause]; 

    player = nil; 

    if(avPlayerLayer) 
     [avPlayerLayer removeFromSuperlayer]; 

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

    avPlayerLayer = [AVPlayerLayer playerLayerWithPlayer:player]; 

    avPlayerLayer.frame = self.view.frame; 
    [self.view.layer addSublayer:avPlayerLayer]; 
    [player play]; 
    } 

-(void)removeMoviePlayer 
{ 
    if(isPlay) 
     [[MPMusicPlayerController systemMusicPlayer] play]; 
    NSError *deactivationError = nil; 
    BOOL success = [[AVAudioSession sharedInstance] setActive:NO error:&deactivationError]; 
    if (!success) { 
     NSLog(@"%@", [deactivationError localizedDescription]); 
    }  
} 

Надеется, что это будет полезно для вас ... :)