MediaPlayer播放視頻

  1. 導(dǎo)入MediaPlayer跟AVKit框架
#import <MediaPlayer/MediaPlayer.h>
#import <AVKit/AVKit.h>
  1. 定義通知事件
  • 創(chuàng)建通知
//檢測(cè)視頻播放完畢 --> 可以連續(xù)播放視頻
    
    //注冊(cè)通知監(jiān)測(cè)視頻播放完畢

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayerPlaybackDidFinishNotification:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
  • 通知綁定
#pragma mark 通知綁定的方法
- (void)moviePlayerPlaybackDidFinishNotification:(NSNotification *)notification
{
    /**
     MPMovieFinishReasonPlaybackEnded,  播放結(jié)束
     MPMovieFinishReasonPlaybackError,  播放錯(cuò)誤
     MPMovieFinishReasonUserExited      退出播放
     */
    
    //1. 獲取通知結(jié)束的狀態(tài)
    NSInteger movieFinishKey = [notification.userInfo[MPMoviePlayerPlaybackDidFinishReasonUserInfoKey] integerValue];
    
    //2. 根據(jù)狀態(tài)不同來自行填寫邏輯代碼
    switch (movieFinishKey) {
        case MPMovieFinishReasonPlaybackEnded:
            NSLog(@"播放結(jié)束");
            
            // 進(jìn)行視頻切換 需要兩步
            
            //1. 要想換視頻, 就需要更換地址
            self.mpC.contentURL = [[NSBundle mainBundle] URLForResource:@"Alizee_La_Isla_Bonita.mp4" withExtension:nil];
            
            // 
            [self.mpC play];
            
            break;
            
        case MPMovieFinishReasonPlaybackError:
            NSLog(@"播放錯(cuò)誤");
            break;
            
        case MPMovieFinishReasonUserExited:
            NSLog(@"退出播放");
            
            // 如果是不帶view的播放器, 那么播放完畢(退出/錯(cuò)誤/結(jié)束)都應(yīng)該退出
            [self.mpC.view removeFromSuperview];
            break;
            
        default:
            break;
    }
    
}
  • 移除通知
- (void)dealloc
{
    //移除通知
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

3.1 不帶View的播放器的控制器

// 不帶View的播放器的控制器 --> 需要強(qiáng)引用, 設(shè)置frame, 添加到view上, 開始播放
    //1. 獲取URL地址
    NSURL *url = [[NSBundle mainBundle] URLForResource:@"Cupid_高清.mp4" withExtension:nil];
    
    //2. 創(chuàng)建不帶View的播放器
    self.mpC = [[MPMoviePlayerController alloc] initWithContentURL:url];
    
    //3. 設(shè)置view.frame
    self.mpC.view.frame = CGRectMake(0, 0, 300, 400);
    
    //4. 添加到view上
    [self.view addSubview:self.mpC.view];
    
    //5. 準(zhǔn)備播放 --> 規(guī)范寫法, 要寫上. 調(diào)用play方法時(shí), 會(huì)自動(dòng)調(diào)用此方法
    [self.mpC prepareToPlay];
    
    //6. 開始播放
    [self.mpC play];
    
    //7. 控制模式
    self.mpC.controlStyle = MPMovieControlStyleFullscreen;
    
    /**
     MPMovieControlStyleNone,       // No controls
     MPMovieControlStyleEmbedded,   // 嵌入式的控制 -- 默認(rèn)
     MPMovieControlStyleFullscreen, // 全屏?xí)r的控制樣式
     */

3.2 帶View的播放器控制器

// 帶View的播放器的控制器
    
    //1. 獲取URL地址
    NSURL *url = [[NSBundle mainBundle] URLForResource:@"Cupid_高清.mp4" withExtension:nil];
    
    //2. 創(chuàng)建帶View的播放器
    MPMoviePlayerViewController *mpVC = [[MPMoviePlayerViewController alloc] initWithContentURL:url];
    
    //3. 模態(tài)視圖彈出 --> 模態(tài)視圖的切換應(yīng)該在View完全展示之后進(jìn)行
    [self presentViewController:mpVC animated:YES completion:nil];
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容