1. 程式人生 > >關於VideoPlayer的使用(方便自己檢視的筆記)

關於VideoPlayer的使用(方便自己檢視的筆記)

unity5.6之後加的一個videoPlayer元件,也是查資料查到的方便自己之後檢視,直接用程式碼記錄

using UnityEngine;
using UnityEngine.Video;
public static class VideoPlayController
{
    //獲取視訊總時長
    public static int GetVideoTimeCount(this VideoPlayer vp)
    {
        return (int)(vp.frameCount / vp.frameRate);
    }
    /// <summary>
    /// 獲取視訊進度
    /// </summary>
    /// <param name="vsp"></param>
    /// <returns></returns>
    public static float GetVideoProgression(this VideoPlayer vp)
    {
        return (float)((vp.time * vp.frameRate)/(vp.frameCount / vp.frameRate));
    }
 
    /// <summary>
    /// 設定視訊進度
    /// </summary>
    /// <param name="vp"></param>
    /// <param name="progression"></param>
    public static void SetVideoProgression(this VideoPlayer vp, float progression)
    {
        float time = (int)vp.frameCount / vp.frameRate * progression;
        vp.time = time;
        vp.Play();
    }
}

測試 在Unity中視訊的播放及用進度條控制視訊的播放

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Video;
public class VideoTest : MonoBehaviour
{
    public VideoPlayer vp;

    public RawImage  image;
    public Slider progression;
    public Text timeCount;
    public Text currentTime;
    void Start()
    {
        vp.Play();
        progression.value = vp.GetVideoProgression();
        progression.onValueChanged.AddListener(Changed);
        DateFormat((int)vp.GetVideoTimeCount(), timeCount);
    }
 

//格式化視訊播放時間的顯示
    private void DateFormat(int sec, Text text)
    {
        TimeSpan span = new TimeSpan(0, 0, 0, sec);
        text.text = (int)span.Hours + ":" + (int)span.Minutes + ":" + (int)span.Seconds;
    }
 
    // Update is called once per frame
    void Update()
    {

      //如果videoPlayer沒有對應的視訊texture,則返回
        if (videoPlayer.texture == null)
        {
            return;
        }
        //把VideoPlayerd的視訊渲染到UGUI的RawImage
        image.texture = videoPlayer.texture;
        DateFormat((int)vp.time, currentTime);
    }
    private void Changed(float value)
    {
        vp.SetVideoProgression(value);
    }
    public void Play()
    {
        vp.Play();
    }
    public void Pause()
    {
        vp.Pause();
    }
}
總體來說這個控制視訊播放的元件還是蠻方便的

相關推薦

關於VideoPlayer的使用方便自己檢視筆記

unity5.6之後加的一個videoPlayer元件,也是查資料查到的方便自己之後檢視,直接用程式碼記錄 using UnityEngine; using UnityEngine.Video; public static class VideoPlayController

各類工具積累方便自己空閒了檢視練習

有時候會看到特別好的、實在的經驗帖,會得到別人分享的一些工具選擇。不同領域差別太大,自己從頭找花費時間精力太大。往往用手機截圖或者拍照留存,後來一想,還是把它整理集中在部落格裡吧。 當然,工具的時效性也

SparkSQL的小學習方便隨時檢視

1、SQLContextApp package sparkSQLmook import org.apache.spark.sql.SQLContext import org.apache.spark.{SparkConf, SparkContext} /** * spark1.6的

【JanelSirry's Blog】百度很多東西都有,但是很多不能用,所以需要自己來實踐,作為筆記而記錄,方便自己檢視,也方便分享,喜歡的加關注!

百度統計 [removed] var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.

RXjava具體使用自己筆記

1、MyObservable.subscribeOn(Schedulers.io()) // 指定主執行緒 .observeOn(AndroidSchedulers.mainThread()).sub

Shader內建函式方便自己

一、內建包含檔案   Unity中有類似於C++的包含檔案.cginc,在編寫Shader時我們可以使用#include指令把這些檔案包含進來 這樣我們就可以使用Unity為我們提供的一些非常好用的函式、巨集和變數。 例如:#include"UnityCG.cginc" 包含檔案的位置:

ZOJ 3228 Searching the String AC自己主動機

root nod () set -m ifdef lan pty freopen 題目鏈接:Searching the String 解析:給一個長串。給n個不同種類的短串。問分別在能重疊下或者不能重疊下短串在長串中出現的次數。 能重疊的已經是最簡單的A

python 魔法方法學習過程的筆記

但是 pow imp int 異或運算 pre bsp beijing getitem 有小夥伴會問,什麽是python的魔法方法,python的魔法方法有什麽用呢, 它們在面向對象的Python的處處皆是。它們是一些可以讓你對類添加“魔法”的特殊方法。 它們經常是兩個下劃

Linux----軟件安裝管理慕課網筆記

樹形 擴展 方法 程序 style 慕課網 命令管理 平臺 很難 一、軟件包安裝簡介 軟件包分類 源碼包 腳本安裝包 二進制包(rpm包,系統默認包) 源碼包 源碼包優點 開源,如果有足夠能力,可以自行修改源代碼 可以自由選擇所需的功能 軟件是編譯安裝,所以

C/C++學習筆記2.C++中vector的使用

alt double space ons 說明 info 部分 所有 con 說明:vector是C++中一個非常方便的容器類,它用於存放類型相同的元素,利用成員函數及相關函數可以方便的對元素進行增加或刪除,排序或逆序等等,下面將對這些功能一一敘述。 一.vector的第一

xxx.launch檔案詳解部落格學習筆記

ROS筆記(一)xxx.launch檔案詳解 .launch檔案是ROS中用於同時啟動多個節點的重要檔案,在大型的ROS專案中使用頻繁,所以掌握其主要元素與屬性對ROS系統的應用至關重要: launch標籤(元素)說明 launch拓展說明 parameter說明

set 容器的使用胡凡 演算法筆記

C++ Sets 集合(Set)是一種包含已排序物件的關聯容器 set insert 將x插入到容器當中自動遞增排序並去重 begin() 返回指向第一個元素的迭代器 clear() 清除所有元素

**C++變數和基本內建型別**C++ Primer讀書筆記

1.內建型別包括算數型別和空型別(void,適用於沒有任何返回值的函式或者其他的特殊場合)。算數型別包括整形(字元和布林型)和浮點型。 2.除了布林型和擴充套件的字元型之外。,其餘的整形都可以通過在前面新增unsigned來變成無符號型別(帶符號的型別可以表示負數,0,和整數。無符號型別

Linux達人養成計劃慕課網筆記

一、Linux簡介 1、Linux分為核心版和發行版 2、Window是與Linux的區別 (1)Linux嚴格區分大小寫 (2)Linux中所有內容以檔案形式儲存,包括硬體 (3)Linux沒有副檔名概念 即Linux不靠副檔名區分檔案型別(靠許可權區分),但會有一些約定尋常的副

教你怎麼用Vulnhub來搭建環境(爸爸再也不用擔心我沒有靶場練習了)增加自己的部分

0x01 前言 0x02 下載 映象的下載地址和描述、難度等級等 隨便點選下載,有些需要FQ才能下載,推薦官網的下載地址。 作為測試,我就下載JIS-CTF: VulnUpload作為演示吧 0x03 安裝 下載完後,解壓出來,會看到

Windows下編譯xgboost的C++原始碼方便vs執行的

(作者:陳玓玏) 1、 下載原始碼: 網址:https://github.com/dmlc/xgboost ,最好不要直接下載zip,而是克隆,因為直接下載會下載不到xgboost依賴的dmlc-core和rabbit等庫,導致編譯失敗。克隆的好方法是通過git

妙味課堂:一起學習jQuery原始碼【逐行分析jQuery原始碼的奧祕】妙味課堂筆記--框架介面

jQuery 的學習版本為: 2.0.3 內層程式碼塊分析 (function(){ ( 21,94 ) 定義了一些變數和函式 jQuery = function (){}; ( 96,283 ) 給jQuery物件,新增一些方法和屬性

java之多型java程式設計思想筆記

(摘自看過的書籍與部落格) 多型是指在程式中定義的引用變數所指向的具體型別和通過該引用發出的方法呼叫在程式設計時並不確定,而是在程式執行期間才確定,即一個引用變數到底會指向哪個型別物件,該引用變數發出的方法呼叫到底是哪個類中實現的方法,必須由程式執行期間才

NODE後端處理資料ejs 渲染到頁面小白的筆記

前一陣學過前端渲染和後端渲染 沒幾天就忘沒了 今天來複習一下後端渲染 記個筆記 1.安裝 首先需要express模組,fs模組,ejs模組 npm install ejs --save 2. .ejs檔案 這裡和.html一樣 所以我只粘了body裡面的程式碼

node外部處理mongoDB資料庫小白的筆記

node外部處理mongoDB資料庫(小白的筆記) index.js裡面完成對mongoDB資料庫的操作 const mongodb = require('mongodb') const { MongoClient, ObjectId } = mongodb