VR+全景播放器+頭控講解-03

VR+全景播放器+頭控講解-01-知識儲備
VR+全景播放器+頭控講解-02-創(chuàng)建球體
VR+全景播放器+頭控講解-03-渲染視頻
VR+全景播放器+頭控講解-04-滑動手勢
VR+全景播放器+頭控講解-05-伸縮畫面
VR+全景播放器+頭控講解-06-頭控實(shí)現(xiàn)
VR+全景播放器+頭控講解-07-分屏技術(shù)

本節(jié)學(xué)習(xí)目標(biāo)

如何創(chuàng)建將APlayer 加載的視頻渲染到球體上

實(shí)現(xiàn)步驟

  • 第一步 創(chuàng)建一個AVPlayer 對象

     _player = [[AVPlayer alloc]init];
    
  • 第二步 創(chuàng)建一個SCNVedioNode 對象

    self.vedioNode = [[SKVideoNode alloc]initWithAVPlayer:_player];
    self.vedioNode.size = CGSizeMake(VEDIO_WIDHT, VEDIO_HEIGHT);
    
  • 第三步 創(chuàng)建一個SKScene 對象

    _skScene = [SKScene sceneWithSize:self.vedioNode.size];
    self.skScene.scaleMode = SKSceneScaleModeAspectFit;
    
  • 第四步 讓球體去渲染這個SKScene 對象

    [self.skScene addChild:self.vedioNode];
    self.vedioNode.position = CGPointMake(VEDIO_WIDHT/2, VEDIO_HEIGHT/2);
    

    // 將skscene對象設(shè)置為球體渲染的內(nèi)容
    self.renderNode.geometry.firstMaterial.diffuse.contents = self.skScene;

其他功能實(shí)現(xiàn)

下面這部分都比較簡單

  • 1.監(jiān)聽播放器的當(dāng)前時間,緩沖時間,視頻總時長

     self.observerPlayerTime = [self.player addPeriodicTimeObserverForInterval:CMTimeMake(1, 1) queue:dispatch_get_main_queue() usingBlock:^(CMTime time) {
          // 處理邏輯代碼
    }];
    
  • 2.視頻可播放狀態(tài)檢測
    [self.player reasonForWaitingToPlay]

  • 3.播放/暫停功能
    [self.player play];
    [slef.player pause];

  • 4.播放完成/失敗檢測

    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(playToEndTime:) name:AVPlayerItemDidPlayToEndTimeNotification object:nil];
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(playFail:) name:AVPlayerItemNewErrorLogEntryNotification object:nil];
    
  • 5.計(jì)算視頻緩沖的時間

     NSArray *loadedTimeRanges = [[self.player currentItem]   loadedTimeRanges];
    CMTimeRange timeRange = [loadedTimeRanges.firstObject CMTimeRangeValue];// 獲取緩沖區(qū)域
    float startSeconds = CMTimeGetSeconds(timeRange.start);
    float durationSeconds = CMTimeGetSeconds(timeRange.duration);
    NSTimeInterval result = startSeconds + durationSeconds;// 計(jì)算緩沖總進(jìn)度
    

本節(jié)內(nèi)容講解完畢
SceneKit 中文教程

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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