VR---得图SDK VR视频简单播放

由于是得图F4的设备,所以首选得图,最后是不是,不告诉你


得图iOS SDK集成参看得图开发者中心:http://developer.detu.com/home/page/show?page_id=41

需求:全屏重复播放本地全景小视频

实现效果不好演示,得图只支持真机测试

具体实现如下:

注明:只是简单实现,官方demo涵盖了各种类型播放,所以这里抽离出播放视频来,且将其前缀去掉了(不地道),但由于与PanoPlayer冲突,所以随便加了个FP前缀。

VRController.m 
// 遵守
// MARK: VR
@property (nonatomic,strong) FPPanoPlayer *panoplayer; // 播放器承载View
@property (nonatomic,strong) PicOrMovItem *item; // 播放选项
@property (nonatomic, assign) PanoVideoPluginStatus playMovStatus; // 播放状态

懒加载设置选项

#pragma mark - getters

- (FPPanoPlayer *)panoplayer{
    if (nil == _panoplayer) {
        FPPanoPlayer *panoplayer = [[FPPanoPlayer alloc] init];
        [self.view addSubview:panoplayer];
        _panoplayer = panoplayer;
        _panoplayer.panoPlayer.delegate = self;
        _playMovStatus = STATUS_BUFFER_EMPTY;
        // 播放模式
//        [_panoplayer setViewMode:5];
        // 开启陀螺仪
        self.panoplayer.gyroEnable = YES;
//        self.panoplayer.panoPlayer.gyroEnable = YES;
        [panoplayer mas_makeConstraints:^(MASConstraintMaker *make) {
            make.edges.equalTo(@0);
        }];
    }
    return _panoplayer;
}

- (PicOrMovItem *)item{
    if (nil == _item) {
//       这些选项就是明面意思 
        _item = [PicOrMovItem new];
        _item.fromWhere = DataFromLocal;
        _item.isLiveShow = NO;
        _item.fileType = 2; // 1,图片 2,视频
        NSString *path = [[NSBundle mainBundle] pathForResource:@"2016_032_pano.mp4" ofType:nil];
        path = [NSString stringWithFormat:@"file://%@",path];
        // 网络视频直接UrlString
        _item.url = path;
        _item.title = @"本地视频";
    }
    return  _item;
}

XML非常关键,一般我们需要替换的就俩:type和url

#pragma mark - 视频源替换
- (void)setupResource{
    // 创建XML
//    PanoPlayerUrl *panoPlayerUrl = [[PanoPlayerUrl alloc]init];
    NSString *tpl = @" \
     \
     \
    \
    \
     \
     \
     \
      \
     \
     \
    ";

    tpl =  [tpl stringByReplacingOccurrencesOfString:@"%url" withString:self.item.url];
    PanoPlayerUrl *panoplayerurl = [[PanoPlayerUrl alloc] init];
    [panoplayerurl SetXmlContent:tpl];
    [self.panoplayer.panoPlayer Play:panoplayerurl];

}

进行重复播放设置

#pragma mark - PanoPlayer delegate
-(void)PluginVideoOnStatusChanged:(PanoVideoPluginStatus)s{
    self.playMovStatus = s;
    switch (s) {
        case STATUS_PLAYING: {
            
            break;
        }
        case STATUS_PAUSE: {
            
            break;
        }
        case STATUS_STOP: {
            NSLog(@"stop test");
            // 在此进行重播
            self.playMovStatus = STATUS_PLAYING;
            [self setupResource];
            break;
        }
        case STATUS_FINISH:{
//            self.playMovStatus = STATUS_PLAYING;
            NSLog(@"finish test");
            break;
        }
        case STATUS_BUFFER_EMPTY:{
            
            break;
        }
        default: {
            break;
        }
    }
}

播放器必须销毁

//销毁播放器
-(void)dealloc{
    
    [self clearPlayer];
    [self.panoplayer removeFromSuperview];
}

// 销毁播放器
-(void)clearPlayer{
    
    if(self.panoplayer.panoPlayer){
        [self.panoplayer.panoPlayer cleargc];
        self.panoplayer.panoPlayer = nil;
    }
}

才刚刚接触VR播放,共同进步吧!

你可能感兴趣的:(VR---得图SDK VR视频简单播放)