QNAP NAS

QNAP online resources collection

Image
QNAP is the famous private cloud solution provider, the main product is NAS (Network attach Storage), this article collect QNAP online resources and help QNAPer / NAS beginner quickly know how to select NAS and find application information, if any suggestion website, welcome to comment and share with us. QNAP website  https://www.qnap.com/en/ Topic include NAS, Operation System, Application, Tutorial / FAQ , Forum and Customer Service.

在 Android 的影片 3D 範例程式碼

在 Android 的影片 3D 範例程式碼

下載範例程式碼

簡介

您可在 Android 非常輕鬆地建立應用程式播放影片,也可以輕鬆建立具有 3D 圖形表面的遊戲應用程式。不過要建立應用程式在3D 圖形3D 圖形物件播放影片,就不是這麼簡單。本文說明作者為了因應以上挑戰所建立的應用程式。此應用程式可播放在 3D 表面渲染的影片,並可讓使用者以互動方式操控影片表面。
本項應用程式必須克服三項實作挑戰:
  1. 如何建構程式碼,讓使用者能夠變更 3D 表面,並同時播放影片。
  2. 雖然預設的 Android 媒體播放器配備齊全,擁有各種播放選項,但是並無法取得影片影像資料,不能以自訂方式加以渲染。
  3. 如何設計圖形元件執行影片資料渲染?
此應用程式也挑戰裝置功能,強迫影片及圖形物件同時運作。本文將說明此應用程式的功能及用途,然後簡述其設計。

功能

此應用程式具有下列功能:
  1. 可讓使用者由本機媒體庫選擇影片。
  2. 可於垂直及水平配置運作,配置變更時影片可繼續播放。
  3. 應用程式提供三種播放模式:
    1. 預設模式:這是標準播放模式,影片播放方式就和標準媒體播放器一樣。
    2. 隨機旋轉:影片表面會沿著水平及垂直軸隨機旋轉,色彩也會在紅色色調及一般色彩之間切換。
    3. 觸控旋轉:使用者可利用觸控方式左右滑動及旋轉表面,並可變更速度。
    4. 應用程式推向背景或關閉時,目前播放的影片將會儲存,並於應用程式重新啟動時再次播放。
附註: 沒有影片工作階段控制功能,使用者無法停止、快轉或回轉影片。若應用程式推向背景或停止,影片就只能從頭播放。

使用模式

開始播放影片

應用程式本身並沒有任何影片,因此使用者可選擇 Android 平台支援的任何影片。不過建議使用採用 MPEG-4 容器 H.264AVC 轉碼器的影片,因為這是開發期間用於測試的格式。應用程式首次啟動時,將顯示檔案選擇器畫面 (請參閱前頁螢幕截圖)。
使用者選擇偏好的檔案選擇器之後,就會在螢幕上出現指示。選擇影片後,就將開始播放。
附註: 有時需要等一下影片才會播放,大約 5~10 秒鐘。

選擇不同模式

應用程式會以標準模式啟動。如欲變更模式,使用者可按 UI 的選項按鈕,啟動選項功能表。
選項功能表提供四個選項:前三個為播放模式選項,最後一個可讓使用者選擇不同影片。
 

隨機旋轉

此選項可讓渲染影片的表面沿著水平及垂直軸隨機旋轉,並顯示 3D 效果,也可以定期在螢幕上顯示紅色。
 

觸控旋轉

在觸控旋轉模式中,使用者可左右滑動,讓表面沿著垂直軸左右旋轉。如果加快滑動速度,旋轉就會加速,如果使用者停止滑動,就會自然減速。
 

設計

此應用程式的三大主要元件為:UI 元件提供使用者應用程式的互動展示;影片元件執行影片播放;OpenGL* 表面可渲染影片幀緩衝器,並於特殊模式建立 3D 效果。
影片播放元件有兩個執行緒。影片引擎執行緒使用 MediaCodec 類別。此類別於 Android JellyBean 版本 (API 16) 推出,暴露了 Android 媒體框架的低層級 API,因此可於框架層級控制播放。在每個影片幀,圖形資料可保留影像資料,並變更影像渲染的方式。
播放元件也實作音訊引擎執行緒,可播放影片音軌。為了同步影片及音訊執行緒,讓人物說話的嘴部動作與聲音相符,其中實作了 AV 同步演算法。影片播放時,一定會比較時間戳記及音訊時間戳記,並調整播放速度,讓影片幀絕對不超過 30 毫秒的時間限制。
圖形元件延伸 GLSurfaceView,將自訂的渲染類別內嵌至類別中。渲染類別實作渲染器介面,執行 OpenGL 渲染演算法。演算法在紋理表面實作 3D 旋轉效果,也依據使用者輸入將模式變更為不同演算法。
在渲染器中,影片幀的旋轉及色彩是由簡單的頂點及像素著色器處理。影片平面旋轉是由一系列的歐拉角 (Euler-angle) 旋轉執行。幀的著色是由線性混合的影片幀內容,以及像素著色器內部的固定色彩 (在此為紅色) 達成。
圖形元件也作為影片引擎的影片幀接聽程式,並於建構期間傳遞給 MediaCodec 物件,每次影片幀可用時就會呼叫渲染函數。圖形元件在 UI 元件中有函式,因此使用者可變更播放模式。
MediaCodec 解碼程序以影片幀的速度運作,圖形元件的渲染函數則以圖形幀的速度運作。因此在存取幀緩衝器時,兩個元件之中的函式必須同步。
相關連結及資源:
若要進一步瞭解更多 Android 開發者專用的 Intel 工具,請參閱 Intel® Developer Zone for Android.

關於作者

Mark Liu 於 Intel 超行動部門 (Ultra-Mobile Group) 擔任軟體工程師,負責開發 Android 型裝置的驗證架構。他也參與 Intel 超行動部門的多項 Android 專案,包括智慧型手機和平板裝置。這項工作大多與媒體播放、視訊會議及軟體堆疊效能調校有關。
Mark 加入 Intel 軟體與服務事業群的 Intel® Atom™ 處理器裝置軟體功能團隊後,曾參與多項橫向工作,包括開發 Android 媒體應用程式範例、Windows* 8 媒體架構系統最佳化,以及編寫媒體應用程式文件。
Chris Kirkpatrick 為軟體應用程式工程師,目前任職於 Intel 軟體與服務事業群,在視覺及互動運算工程 (Visual & Interactive Computing Engineering) 團隊負責支援 Intel 圖形解決方案,於奧勒岡州立大學 (Oregon State University) 取得電腦科學學士學位。

Comments

Popular posts from this blog

How to use MongoDB on QNAP NAS ?

How to setup influxDB and Grafana on QNAP NAS ?

QNAP QVR Pro Client user guide

How to use PostgreSQL on QNAP NAS ?

How to setup GPU on QNAP NAS (QTS 4.3.5+)

How to use QNAP IoT solution - QIoT Suite

How to use Home Bridge on QNAP NAS ?

卸任倒數 宏碁突圍再出奇招 不轉型雲端 施振榮:我就是罪人