有關AvAudioPlayer,AvPlayer的音、視訊後臺播放的問題

NO IMAGE

 

 

本地音訊

網路音訊

本地視訊

網路視訊

AvAudioPlayer

可播、

可後臺

可播、

可後臺

可播、

可後臺

不可播

AvPlayer

可播、
可後臺

可播、

可後臺

可播、

不可後臺

可播、

不可後臺

 

 

#後臺播放實現方法:

1.在plist檔案中加入以下欄位:

 

2.在播放器建立的後面加上這些程式碼:

AVAudioSession *session = [AVAudioSession sharedInstance];  

[session setActive:YES error:nil];

[session setCategory:AVAudioSessionCategoryPlayback error:nil];

完成以上兩步,就可實現後臺播放功能。

 

 

#遠端控制的實現方法:

1.在建立播放器的類中新增如下程式碼:

(程式碼1)宣告App接收遠端控制事件

– (void) viewWillAppear:(BOOL)animated

{

    [super viewWillAppear:animated];

    [[UIApplication sharedApplication]
beginReceivingRemoteControlEvents];

    [self becomeFirstResponder];

}

 

 

 

 

 

– (void) viewWillDisappear:(BOOL)animated

{

    [super viewWillDisappear:animated];

    [[UIApplication sharedApplication]
endReceivingRemoteControlEvents];

    [self resignFirstResponder];

}

 

– (BOOL)canBecomeFirstResponder

{

    return YES;

 

 

(程式碼2)處理具體的播放、暫停、前進、後退等具體事件

– (void)remoteControlReceivedWithEvent:(UIEvent *)event{

    if (event.type ==
UIEventTypeRemoteControl) {

 

        switch (event.subtype) {

 

           case UIEventSubtypeRemoteControlTogglePlayPause: 

           [self playAction:self.playBtn];

                break;

 

           case UIEventSubtypeRemoteControlPreviousTrack://上一曲

           [self playLastButton:self.nextButton];

 

                break;

 

case UIEventSubtypeRemoteControlNextTrack: //下一曲                        

[self playNextSong:self.nextButton];

 

                break;

 

            case UIEventSubtypeRemoteControlPlay://播放

            [self playAndStopSong:self.playButton];

 

                break;

 

case UIEventSubtypeRemoteControlPause: //暫停

[self playAndStopSong:self.playButton];

 

                break;

                

            default:

                break;

        }

    }

}

 

說明:

1、 後臺播放視訊時的個人觀點:使用AvPlayer播放視訊,到後臺時,使用AvAudioPlayer播放相同視訊的音訊,並設定音訊的進度和音量從視訊的斷點開始,即可實現無縫後臺播放,但此視訊必須是本地視訊,流視訊無法實現。

(參照MoliPlayer App中的本地視訊後臺播放)