1. 程式人生 > >三、VR視訊播放器開發 ---- Android VR視訊/Google VR for Android /VR Pano/VR Video

三、VR視訊播放器開發 ---- Android VR視訊/Google VR for Android /VR Pano/VR Video

simplevideowidget

如果沒有看上一篇文章的請先看完再來看這一篇吧,有寫重複的就不介紹了

AndroidManifest

上一篇文章有提到,其實這裡也沒有什麼特別的

build.gradle

dependencies {
    compile project(':libraries-common')
    compile project(':libraries-commonwidget')
    compile project(':libraries-videowidget')
}

佈局檔案

裡面就一個主要標籤

 <com.google
.vr.sdk.widgets.video.VrVideoView android:id="@+id/video_view" android:layout_width="match_parent" android:layout_height="250dip" android:scrollbars="@null" />

SimpleVrVideoActivity

更改過的程式碼:

package com.google.vr.sdk.samples.simplevideowidget;

import
android.app.Activity; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import com.google.vr.sdk.widgets.video.VrVideoEventListener; import com.google.vr.sdk.widgets.video.VrVideoView; import java.io.IOException; public class SimpleVrVideoActivity extends Activity {
private static final String TAG = "SimpleVrVideoActivity"; private String fileUri = "congo.mp4";//assets資料夾下的檔名 private VideoLoaderTask backgroundVideoLoaderTask;//非同步載入視訊 private VrVideoView videoWidgetView;//Google提供給我們現實播放VR視訊的View private boolean isPaused = false;//標記是否暫停 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_layout); videoWidgetView = (VrVideoView) findViewById(R.id.video_view);//初始化VrVideoView videoWidgetView.setEventListener(new ActivityEventListener());//為VrVideoView新增監聽 //如果有任務在執行則停止它 if (backgroundVideoLoaderTask != null) { backgroundVideoLoaderTask.cancel(true); } //建立一個任務 backgroundVideoLoaderTask = new VideoLoaderTask(); //執行任務。將視訊檔名(根據專案實際情況傳吧)傳入 backgroundVideoLoaderTask.execute(fileUri); } private void togglePause() { if (isPaused) { videoWidgetView.playVideo();//播放 } else { videoWidgetView.pauseVideo();//暫停 } isPaused = !isPaused; } private class ActivityEventListener extends VrVideoEventListener { @Override public void onLoadSuccess() {//載入成功 Log.i(TAG, "Sucessfully loaded video " + videoWidgetView.getDuration()); } @Override public void onLoadError(String errorMessage) {//載入失敗 Log.e(TAG, "Error loading video: " + errorMessage); } @Override public void onClick() {//當我們點選了VrVideoView時候觸發 togglePause(); } @Override public void onNewFrame() {//一個新的幀被繪製到螢幕上。 } @Override public void onCompletion() {//視訊播放完畢。 videoWidgetView.seekTo(0);//移動到視訊開始 } } class VideoLoaderTask extends AsyncTask<String, Void, Boolean> { @Override protected Boolean doInBackground(String... uri) { try { videoWidgetView.loadVideoFromAsset(uri[0]);//載入視訊檔案 } catch (IOException e) {//視訊檔案開啟失敗 Log.e(TAG, "Could not open video: " + e); } return true; } } @Override protected void onPause() { super.onPause(); videoWidgetView.pauseRendering();//暫停3D渲染和跟蹤 isPaused = true; } @Override protected void onResume() { super.onResume(); videoWidgetView.resumeRendering();//恢復3D渲染和跟蹤,但官方文件上面沒有寫 } @Override protected void onDestroy() { videoWidgetView.shutdown();//關閉渲染並釋放相關的記憶體 super.onDestroy(); } }

上面用的方法全都是來源於VrVideoView這個類中,下面介紹一下 示例程式碼中沒有出現的方法。

  1. getDuration()//獲取視訊的持續時間(毫秒為單位)
  2. getCurrentPosition() //獲取的視訊的當前位置(毫秒為單位)
  3. loadVideo(URI uri)//載入從給定的URI的全景視訊

    URI可以是:
    相對檔案到盤的根,例如“/sdcard/FILENAME.MP4”。如果視訊是APK的資產的一部分,loadVideoFromAsset(String, VrVideoView.Options)應改為使用。
    遠端URL以HTTP或HTTPS方案,如“http://foo.com/file.mp4”。HLS URL(如“http://foo.com/file.m3u8”)的支援,但需要正確的輸入格式在要設定VrVideoView.Options的物件。

疑問

如果是我的操作有問題請指正,避免誤導其他讀者 ^_^

在官方文件中是有VrVideoView.Options這個類的
這裡寫圖片描述

然而我在VrVideoView中並沒有發現Options這個類,因為我進行了以下操作 來證實這個說法。
1、 無法匯入包
這裡寫圖片描述

2、無法建立類
這裡寫圖片描述

3、在VrVideoView類中搜索不到Options
這裡寫圖片描述

4、VrVideoView的loadVideoFromAsset方法沒有文件中的第二個引數
這裡寫圖片描述
這裡寫圖片描述

我是2016.8.3下載的,不知道以後會不會更新文件,或者進行別的操作。

既然Options類無法找到就不在這裡根據文件描述了。

總結

1. 匯入google的庫
2. 在相應的佈局檔案中引入控制元件 com.google.vr.sdk.widgets.pano.VrPanoramaView
3. 初始化控制元件
4. 呼叫VrPanoramaView的loadImageFromBitmap方法或者loadVideo方法
5. 在onPause、onResume、onDestroy中做出相應處理

好了,這篇就到這吧。如果有機會的話會繼續分享一些關於 原始碼分析自定義VR視訊播放器自定義全景圖片播放器 等一些進階文章。

朋友們如果急需要的話就留言,我看見了會加快速度

相關推薦

VR視訊播放開發 ---- Android VR視訊/Google VR for Android /VR Pano/VR Video

simplevideowidget 如果沒有看上一篇文章的請先看完再來看這一篇吧,有寫重複的就不介紹了 AndroidManifest 上一篇文章有提到,其實這裡也沒有什麼特別的 build.gradle dependencie

基於NDKC++FFmpeg的android視訊播放開發實戰-夏曹俊-專題視訊課程

基於NDK、C++、FFmpeg的android視訊播放器開發實戰—1796人已學習 課程介紹         課程包含了對流媒體(拉流)的播放,演示了播放rtmp的香港衛視,支援rtsp攝像頭和h

基於FFmpeg的視訊播放開發系列教程(

   本篇開始講解音訊解碼播放,該專案用Qt的音訊類QAudioFormat, QAudioOutput等進行解碼,先講解一些關於音訊的知識。 1.取樣頻率   指每秒鐘取得聲音樣本的次數。取樣的過程就是抽取某點的頻率值,很顯然,在一秒中內抽取的點越多,獲取得頻率資

Unity(VR)視訊播放開發紀錄(非教程)-- 流程:

unity: 1.      介面。 2.      ManagerMedia(單列實現對視訊播放器平臺的sdk),只需用提供介面不需要理會平臺。 3.      要點,你要看到的視訊是需要渲染到unity的紋理上,理所當然必須在unity生成一個紋理id傳過去。 Text

基於FFmpeg的視訊播放開發系列教程(二)

        本節課程的目的:讀幀解碼顯示視訊         開始進入ffmepg的開發之旅。音視訊的細節知識不統一講解,我在教程中逐點滲透,容我以雷神的話開篇。       &nb

基於FFmpeg的視訊播放開發系列教程(一)

前言        在各大部落格,論壇,看到很多人對流媒體音視訊的開發感興趣,可是不知道怎麼入門,對音視訊的瞭解也很少,寫程式碼更不用說了,經過一段時間的整理,我準備在csdn上寫一套ffmpeg音視訊播放器的開發教程,希望對想從事ffmpeg音視訊領域的

視訊播放開發

在做視訊播放器之前,我們先了解一些基本定義。 基本定義 視訊 連續的影象變化每秒超過24幀畫面以上時,根據視覺暫留原理,人眼無法辨別單幅的靜態畫面;看上去是平滑連續的視覺效果,這樣連續的畫面叫做視訊。 幀率 指的是視訊格式每秒鐘播放的靜態畫面數量。

CSDN學院中的Android影音(流媒體)播放開發實戰基於NDKC++和FFmpeg 課程已經上線

CSDN學院中的 FFmpeg安卓流媒體播放器開發實戰視訊課程已經上線 課程開發工具:      AndroidStudio3   Android影音(流媒體)播放器開發實戰基於NDK、C++和FFmpeg   對學員

android形狀屬性鎖屏密碼動態模糊kotlin專案抖音動畫記賬app視訊播放等原始碼

Android精選原始碼 直觀瞭解Android的“形狀”屬性如何影響Drawable的外觀。 一個靈活的視訊播放器, 可替換播放器核心。 android鎖屏輸入密碼功能原始碼 背景動態模糊方案,元件實現類對bitmap模糊處理的各類算... 簡單天氣,帶

簡單實現Android視訊播放倍速清晰度切換m3u8下載

簡單的前提是使用開源庫 在庫的基礎上新增相對應的功能, 以 JiaoZiVideoPlayer 為例 ,本身自帶的播放引擎是MediaPlayer,也就是Android自帶的播放器,有很多不完善的地方,倍速切換隻支援5.0以上,否則報 NoClassDefFoundError 錯誤

Android自定義視訊播放

一、引言 在上文中,我們通過自定義控制面板的佈局,來實現自定義的播放控制,下面來對裡面的各個元件進行事件繫結。 @Override public void onClick(View v) { if ( v == btnVoice ) {

Android多媒體之視訊播放高階開發

1.獲取播放的資料來源 播放視訊的資料來源一般有兩個,一個是請求網路,從伺服器後臺直接獲取播放的視訊資訊,另一種是播放手機中本地的視訊,這裡我們採用的播放源為播放手機本地的視訊 1.1 查詢獲取手機中的視訊的資訊 1.1.1 查詢方法一 定義要查詢到的視訊的資訊,包括視

Android使用VLC庫開發自己的視訊播放

clone完成之後,把工程目錄下的java_sample/src/main/java/org/videolan/javasample/JavaActivity.java拷貝至TestVideoPlayer工程videoPlayer目錄下,再新增必要的檔案之後,整個工程目錄如下:

android分屏”視訊播放

最近由於工作需要,要寫一個android上三分屏視訊的播放器,在網上也沒找到有用的資料,只好自己動手了。跟大家分享一下。 三分屏,主要由音訊和圖片構成。播放它的基礎就是音、圖同步。 我用了android兩個元件,一個是viewflipper,用於播放圖片,還有一個是medi

android音樂播放開發 SweetMusicPlayer 載入歌曲列表

路徑 本地 exc tao near import 設置 優先 特殊 上一篇寫了播放器的總體實現思路,http://blog.csdn.net/huweigoodboy/article/details/39855653,如今來總結下載入歌曲列表。 代碼地址

優酷騰訊視訊播放介面引數說明

優酷: 優酷的視訊播放器介面連線為:http://open.youku.com/tools/ 裡面已經有教詳細的說明了。 在這裡也做一些說明吧:匯入js檔案: 1 <script type="text/javascript" src="http://player.youku.com/jsa

android,Exoplayer實現視訊播放

bundle配置: implementation 'com.google.android.exoplayer:exoplayer-core:2.8.1'implementation 'com.google.android.exoplayer:exoplayer-dash:2.8.1'implementati

關於使用OpenCV-python開發簡易視訊播放

正在研究開簡易如何開發簡易視訊播放器,找了一些一列,包括在pyglet上面的程式碼,但是好長,執行出錯。 看到一個很簡潔的程式碼,沒有報錯但是彈開之後不會自動播放視訊,也沒有生成應用程式。 http://blog.51cto.com/7335580/2145914 這是他的連結,很簡潔

android平臺下基於ffmpeg和ANativeWindow實現簡單的視訊播放

音視訊實踐學習 android全平臺編譯ffmpeg以及x264與fdk-aac實踐 ubuntu下使用nginx和nginx-rtmp-module配置直播推流伺服器 android全平臺編譯ffmpeg合併為單個庫實踐 android-studio使用c

基於QtFFMpeg的音視訊播放設計二(封裝)

在上一篇中我們實現了視訊的解碼、格式轉換,但其基本是堆出來的程式碼,可複用性以及擴充套件性比較低,現在我們對它進行類的封裝。這裡我們把它分為四個小部分。 1、重構封裝FFMpeg類完成開啟和關閉視訊介面 2、重構讀取視訊幀介面 3、重構解碼介面 4、重構ToRGB介面