VR开发基础—VR视频

1、导入谷歌官方提供的库:

commonwidget、common、panowidget(全景图)、videowidget(视频)

或者添加依赖:

dependencies {

compile project(‘:libraries-common‘)

compile project(‘:libraries-commonwidget‘)

compile project(‘:libraries-videowidget‘)

}

版本要求:

<uses-sdkandroid:minSdkVersion="19"android:targetSdkVersion="22"/>

2、配置清单文件:

<uses-permissionandroid:name="android.permission.INTERNET"/>
<uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE"/>
<applicationandroid:label="SimpleVrPanoramaActivity"
    android:largeHeap="true"
    android:theme="@android:style/Theme.Holo.Light">
    <activityandroid:name=".SimpleVrVedioActivity">
        <intent-filter>
            <actionandroid:name="android.intent.action.MAIN"/>
            <categoryandroid:name="android.intent.category.LAUNCHER"/>
            <categoryandroid:name="com.google.intent.category.CARDBOARD"/>
        </intent-filter>
    </activity>
</application>

3、布局加载 全景资源(图片)控件

<?xml version="1.0" encoding="utf-8"?>
<FrameLayoutxmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#FFF000"
    android:orientation="vertical">
    <com.google.vr.sdk.widgets.video.VrVideoView
        android:id="@+id/video_view"
        android:layout_width="match_parent"
        android:layout_height="500dp"/>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#FFFFFF"
        android:orientation="horizontal">
        <SeekBar
            android:id="@+id/seek_bar"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_weight="1"/>
        <TextView
            android:id="@+id/status_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:gravity="center"
            android:padding="8dp"
            android:text="00:00"/>
    </LinearLayout>
</FrameLayout>

4、初始化全景视频

privatevoid initVideoView() {
    videoView =(VrVideoView) findViewById(R.id.video_view);
    //只能在主线程里面加载资产目录
    VrVideoView.Optionsoption =newVrVideoView.Options();
//输入格式
    option.inputFormat =VrVideoView.Options.FORMAT_DEFAULT;
//声音模式
    option.inputType =VrVideoView.Options.TYPE_MONO;
    try {
        videoView.loadVideoFromAsset("congo.mp4", option);
// String path= Environment.getExternalStorageDirectory()+"/testRoom1_1080Stereo.mp4";
// String path= Environment.getExternalStorageDirectory()+"/testRoom1_1920Mono.mp4";
// Uri uri= Uri.parse("file:///"+path);
// videoView.loadVideo(uri,option);
        isPause=true;
    } catch(Exception e) {
        e.printStackTrace();
        isPause=false;
    }
    videoView.setEventListener(newVrVideoEventListener() {
        @Override
        publicvoid onLoadSuccess() {
            super.onLoadSuccess();
            System.out.println("onLoadSuccess");
        }
//点击
        @Override
        publicvoid onClick() {
            super.onClick();
            toggle();
        }
        @Override
        publicvoid onLoadError(String errorMessage) {
            super.onLoadError(errorMessage);
            System.out.println("onLoadError "+ errorMessage);
        }
        @Override
        publicvoid onCompletion() {
            super.onCompletion();
            System.out.println("onCompletion ");
        }
        @Override
        publicvoid onNewFrame() {
            super.onNewFrame();
            System.out.println("onNewFrame ");
            refreshStatusBar();
        }
    });
}
privateboolean isPause =false;
privatevoid toggle() {
    if(isPause) {
        isPause =false;
        videoView.playVideo();
    } else {
        isPause =true;
        videoView.pauseVideo();
    }
    refreshStatusBar();
}

5、初始化SeekBar进度条

//初始化拖动控件
privatevoid initSeekBar() {
    seekbar =(SeekBar) findViewById(R.id.seek_bar);
    seekbar.setMax(100);
    seekbar.setProgress(0);
    statusText =(TextView) findViewById(R.id.status_text);
//添加事件
    seekbar.setOnSeekBarChangeListener(newSeekBar.OnSeekBarChangeListener() {
        @Override
        publicvoid onProgressChanged(SeekBar seekBar,int progress,boolean fromUser) {
            System.out.println("onProgressChanged fromUser="+ fromUser);
            if(fromUser) {
//指定位置继续播放
                videoView.seekTo(progress);
                refreshStatusBar();
            }
        }
        @Override
        publicvoid onStartTrackingTouch(SeekBar seekBar) {
            System.out.println("SeekBar onStartTrackingTouch");
        }
        @Override
        publicvoid onStopTrackingTouch(SeekBar seekBar) {
            System.out.println("SeekBar onStopTrackingTouch");
        }
    });
}
privatevoid refreshStatusBar() {
    StringBuilder status =newStringBuilder();
    status.append(videoView.getCurrentPosition()/1000f);
    status.append(" / ");
    status.append(videoView.getDuration()/1000f);
    status.append("s");
    statusText.setText(status);
}

6、关联activity

@Override
protectedvoid onPause() {
    super.onPause();
    videoView.pauseRendering();//停止显示
}
@Override
protectedvoid onResume() {
    super.onResume();
    videoView.resumeRendering();//继续显示
    refreshStatusBar();
}
@Override
protectedvoid onDestroy() {
    videoView.shutdown();//停止播放
    super.onDestroy();

}
时间: 2024-10-13 04:53:11

VR开发基础—VR视频的相关文章

Daydream VR入门基础教程,VR开发基础知识——VR view基本介绍

VR view基本介绍 VR view是Google在2016年4月推出的一个VR基本概念,是一种"客户端"VR显示技术,可将 360 度照片或视频部署在各种设备上的简易方式,囊括 PC 端和移动端.在APP上嵌入VR View代码之后,全景照片或者视频将会变成分屏的VR内容.用户可以在手机上通过Cardboard等盒子或者在PC端通过头盔体验VR. 我们来看看一张VR全景图片是什么样的: 为什么是两张一模一样的呢?因为这是分别给左右眼观看的,遵循了VR view视图的基本规则,关于V

VR开发基础—全景图

1.导入谷歌官方提供的库: commonwidget.common.panowidget(全景图).videowidget(视频) 或者添加依赖: dependencies { compile project(':libraries-common') compile project(':libraries-commonwidget') compile project(':libraries-panowidget') } 版本要求: <uses-sdkandroid:minSdkVersion=&qu

Daydream VR入门基础教程,学习Google VR for Android全景应用示例SimpleVrPanorama制作VR全景应用

前言 前两篇介绍了Daydream Android VR开发环境的搭建和官方VR Demo寻宝游戏的演示,这篇我们来一起研究下示例项目SimpleVrPanorama,同时通过了解它来了解如何开发一款VR全景图形应用. -------------------------------------------------------------------------------------------------------------------- Daydream快速入门开发基础教程一:And

一起学Google Daydream VR开发,快速入门开发基础教程一:Android端开发环境配置一

原文因涉及翻墙信息,被强制删除,此文为补发! 准备工作 进入Google Daydream开发者官网,开启准备工作,官网地址:https://vr.google.com/daydream/developers/ -------------------------------------------------------------------------------------------------------------------- Google Daydream开发者网址: https

优分享VR开源啦,优分享VR是基于Google VR开发的一款手机VR视频资源的聚合软件

欢迎来到优分享VR开源项目 优分享VR 开源中国Git地址: http://git.oschina.net/xumingwang/youkes_vr 优分享VR是 优分享安卓APP VR视频播放开源部分.其它开源部分:优分享开源浏览器 优分享VR是基于Google VR开发的一款手机VR视频资源的聚合软件.由于google vr sdk现在出于初级阶段,所以本软件也不能完美的支持一些VR视频资源的播放,不过随着Google VR的发展,优分享也会与时俱进的支持更多的VR视频资源. 优分享VR安卓

安卓开发基础知识4(三星 、ARM 为大朋背书,详解VR一体机解决方案)

需求说明:安卓开发 内容       :第一部分  大朋VR一体机方案                   第二部分  三星VR一体机方案 来自       :时间的诗 原文:http://www.ithome.com/html/it/235838.htm 第一部分 大朋VR一体机 大朋VR作为国内领先的虚拟现实企业,今年又率先推出全球首款可量产的VR一体机,短短两年,业界声望.市场地位持续飙升.除却战略和团队的因素之外,背后理所当然存在不少为其"撑腰"的大咖,其中包括为大朋VR一体机

GOOGLE VR SDK开发VR游戏,VR播放器之一

最近一年来,VR虚拟现实和AR增强现实技术的宣传甚嚣尘上.其实VR,AR技术很早就有了,一直没有流行开来,不可否认价格是影响技术推广的最大壁垒.谷歌对VR最大的贡献是提供了廉价的谷歌眼镜,按照GOOGLE提供的图纸,使用两个放大镜和一个披萨盒就能轻松DIY出自己的VR眼镜,同一时期谷歌推出来开源的VR SDK,使得开发者可以轻松构建VR游戏和VR播放器,使得几乎所有对这一切感兴趣的公司可以轻松的低成本的在技术上布局VR产业链.很多VR眼镜已经降到了几十块钱,毫无疑问,谷歌又借着廉价和开源改变了我

VR开发教程

VR开发课程大纲 VR开发课程大纲哪里有?2016年,VR虚拟现实元年推动VR产业的爆发,中国的VR产业有了很大的进展.与此同时,VR产业相关人才短缺的问题愈发凸显.千锋教育把握市场需求,开设VR课程,致力于为学员提供最优质的VR课程. 今天小编就给大家分享一下VR开发的学习线路图和VR开发课程大纲,希望能对大家有所帮助. 此学习线路是千锋教育VR开发团队精心总结的VR开发学习线路图.千锋官网上也有详细的VR基础入门视频教程.无论是自学还是即将踏上培训的旅程,我们都愿意对有意向从事VR开发的同学

VR开发课程大纲

VR开发课程大纲 VR开发课程大纲哪里有?2016年,VR虚拟现实元年推动VR产业的爆发,中国的VR产业有了很大的进展.与此同时,VR产业相关人才短缺的问题愈发凸显.千锋教育把握市场需求,开设VR课程,致力于为学员提供最优质的VR课程. 今天小编就给大家分享一下VR开发的学习线路图和VR开发课程大纲,希望能对大家有所帮助. 此学习线路是千锋教育VR开发团队精心总结的VR开发学习线路图.千锋官网上也有详细的VR基础入门视频教程.无论是自学还是即将踏上培训的旅程,我们都愿意对有意向从事VR开发的同学