成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Web視頻合成器Seriously.js入門教程

fizz / 3177人閱讀

摘要:視頻合成器入門教程作者云荒杯傾是一個(gè)實(shí)時(shí)的,基于節(jié)點(diǎn)的注意不是基于視頻合成器。最簡(jiǎn)單的合成器就是直接將和連起來,不使用任何動(dòng)效。這樣就完成了最簡(jiǎn)單合成器。一個(gè)合成器就是一個(gè)數(shù)據(jù)源節(jié)點(diǎn)目標(biāo)節(jié)點(diǎn)特效節(jié)點(diǎn)的網(wǎng)絡(luò)。

Web視頻合成器Seriously.js入門教程

作者:云荒杯傾

Seriously.js是一個(gè)實(shí)時(shí)的,基于節(jié)點(diǎn)(node)的(注意:不是基于nodejs)web視頻合成器。受after affects和nuke等專業(yè)軟件的啟發(fā),Seriously.js能渲染高質(zhì)量的可交互的視頻動(dòng)態(tài)效果。

下載Seriously.js庫(kù)

git clone https://github.com/brianchirl...

加載Seriously.js腳本

和其他js庫(kù)一樣,使用Seriously.js的第一步是在HTML頁(yè)面中加載Seriously.js的腳本庫(kù)。Seriously.js核心腳本(就是Seriously.js)和Seriously的各個(gè)動(dòng)效腳本(放在effects目錄下)是分開的,你可以按需加載核心腳本和動(dòng)效腳本。

代碼加載如下:

    
    
    Seriously.js Tutorial
    
        
        
        
        
        
        
    
    
數(shù)據(jù)源media和目標(biāo)canvas

Seriously.js可以處理的數(shù)據(jù)源有video和image,本例中,使用img元素。在HTML中寫下:

    

Seriously.js一般將數(shù)據(jù)源的處理結(jié)果放在canvas上展示,所以,再在HTML上畫一個(gè)canvas:

通常我們會(huì)將數(shù)據(jù)源隱藏起來,不管是用css的display: none,還是用JavaScript創(chuàng)建一個(gè)不掛載任何dom元素的對(duì)象。不過本例為了你觀察效果,就不隱藏那個(gè)img了。

使用Seriously.js將數(shù)據(jù)源img和目標(biāo)canvas聯(lián)系起來

現(xiàn)在就可以使用Seriously.js寫腳本,以創(chuàng)建和渲染我們的合成器了。最簡(jiǎn)單的合成器就是直接將img和canvas連起來,不使用任何動(dòng)效。

    // 聲明變量
    var seriously, // 主對(duì)象
        colorbars, // img數(shù)據(jù)源對(duì)象
        target; // 目標(biāo)canvas對(duì)象
    
    seriously = new Seriously();
    
    // 創(chuàng)建數(shù)據(jù)源對(duì)象
    colorbars = seriously.source("#colorbars");
    
    // 創(chuàng)建目標(biāo)canvas對(duì)象
    target = seriously.target("#canvas");

下面代碼可以將img和canvas聯(lián)系起來:

    // 連接任何節(jié)點(diǎn)(node)作為canvas的數(shù)據(jù)源. 我們只有一個(gè),就是img.
    target.source = colorbars;
    seriously.go();

當(dāng)我們創(chuàng)建了數(shù)據(jù)源對(duì)象(本例是img),目標(biāo)輸出對(duì)象(本例是canvas),并且建立好了數(shù)據(jù)源和目標(biāo)之間的聯(lián)系網(wǎng)絡(luò)之后,seriously.js并不會(huì)就幫我們渲染。我們需要執(zhí)行seriously.go()方法,才開始渲染。

現(xiàn)在你會(huì)看到那個(gè)圖片的兩個(gè)副本,一個(gè)是在img顯示的,一個(gè)是在canvas顯示的。

這樣就完成了最簡(jiǎn)單合成器。其實(shí)就是復(fù)制一份圖像到canvas。

應(yīng)用你的第一個(gè)特效

如果只實(shí)現(xiàn)上面那個(gè),就太無聊了。所以我們要繼續(xù)下一步,實(shí)現(xiàn)一個(gè)vignette特效。在最前面加載Seriously.js腳本那一節(jié),我們已經(jīng)把vignette特效的腳本加載進(jìn)去了(就是下面那一行代碼),現(xiàn)在要做的就是創(chuàng)建一個(gè)特效節(jié)點(diǎn)(node),并且把這個(gè)節(jié)點(diǎn)插入到合成器的特定位置。

    

創(chuàng)建一個(gè)特效節(jié)點(diǎn)和創(chuàng)建數(shù)據(jù)源節(jié)點(diǎn)以及目標(biāo)節(jié)點(diǎn)類似,不過似乎更簡(jiǎn)單,只要在參數(shù)里面?zhèn)魈匦У拿志秃昧恕?/p>

    var vignette = seriously.effect("vignette");

OK,現(xiàn)在,所有節(jié)點(diǎn)又一次都創(chuàng)建好了。我們要把這些節(jié)點(diǎn)按順序連起來。一個(gè)Seriously合成器就是一個(gè)數(shù)據(jù)源節(jié)點(diǎn)、目標(biāo)節(jié)點(diǎn)、特效節(jié)點(diǎn)的網(wǎng)絡(luò)。這三種都是節(jié)點(diǎn),images從一個(gè)特效節(jié)點(diǎn)傳到另一個(gè)特效節(jié)點(diǎn),在新的特效節(jié)點(diǎn)進(jìn)行對(duì)應(yīng)的圖像修改,繼續(xù)傳到下一個(gè)特效節(jié)點(diǎn),直到遇到target節(jié)點(diǎn),也就是目標(biāo),一般是canvas,就把最終結(jié)果顯示出來。特效節(jié)點(diǎn)可以有一個(gè)或者多個(gè)圖像數(shù)據(jù)源,輸出一個(gè)單幅圖片。

在本例,我們傳一副圖像從源節(jié)點(diǎn)到 vignette 節(jié)點(diǎn),在 vignette 節(jié)點(diǎn)做了特效修改后,再傳到target目標(biāo)節(jié)點(diǎn)。所以完整的腳本如下:

    // 聲明變量
    var seriously, // 主對(duì)象
        colorbars, // 數(shù)據(jù)源圖像節(jié)點(diǎn)
        vignette, // 特效節(jié)點(diǎn)
        target; // 目標(biāo)節(jié)點(diǎn)
    
    seriously = new Seriously();
    colorbars = seriously.source("#colorbars");
    target = seriously.target("#canvas");
    vignette = seriously.effect("vignette");
    
    // 按正確順序連接所有節(jié)點(diǎn)
    vignette.source = colorbars;
    target.source = vignette;
    //渲染結(jié)果
    seriously.go();

重新加載頁(yè)面,就可以看到vignette特效了,圖像邊界變深色。

一個(gè)小技巧

或者說是另一種腳本寫法。
上面代碼中:

// 按正確順序連接所有節(jié)點(diǎn)
    vignette.source = colorbars;

這一行其實(shí)可以簡(jiǎn)寫為:

    vignette.source = "#colorbars";    

因?yàn)閟eriously知道vignette.source后面一定要跟一個(gè)圖像htmlElement或者一個(gè)圖像節(jié)點(diǎn)(colorbars = seriously.source("#colorbars");),所以,如果你直接跳過colorbars = seriously.source("#colorbars")這一行,給它賦值一個(gè)HTMLElement,也是可以的。

這算是seriously為開發(fā)者提供的一種方便吧。

調(diào)整特效參數(shù)

大多數(shù)特效盡管有默認(rèn)顯示的效果,但是對(duì)這些效果進(jìn)行微調(diào)也是經(jīng)常遇到的。在seriously中,每一種特效都有一些參數(shù)可以調(diào)整,我們現(xiàn)在用的這種vignette 特效,只有一個(gè)amount屬性,默認(rèn)值是1。

我們可以簡(jiǎn)單的按下面代碼設(shè)置一下這個(gè)參數(shù)。下面兩行你選哪行都行:

    vignette.amount = 10;
    //or...
    vignette.amount = 0.1;

seriously的特效參數(shù)的值一般是有特定范圍,比如這個(gè)amount,就有最小值:0。如果你給他設(shè)了一個(gè)負(fù)值,其實(shí)他會(huì)默認(rèn)重新設(shè)為0。

    vignette.amount = -42;
    console.log(vignette.amount); // 結(jié)果為0

另外,如果你給參數(shù)值設(shè)置了錯(cuò)誤的類型,它會(huì)重新設(shè)置成默認(rèn)值。比如下面:

    vignette.amount = "aaaaaaaaaaaaaa";
    console.log(vignette.amount); // 結(jié)果為1,上面說了amount的默認(rèn)值是1。
變得可交互

如何讓這個(gè)參數(shù)變得可交互呢?HTML5給input提供了type=“range”。我們可以用它讓amount參數(shù)的值在HTML頁(yè)面隨便調(diào)整。
html部分:

腳本部分:

vignette.amount = "#vignette-range";

或者這樣寫:

vignette.amount = document.getElementById("vignette-range"); 

現(xiàn)在你就可以在range條的范圍內(nèi),任何調(diào)整amount的值了。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/88693.html

相關(guān)文章

  • Web視頻成器Seriously.js入門教程

    摘要:視頻合成器入門教程作者云荒杯傾是一個(gè)實(shí)時(shí)的,基于節(jié)點(diǎn)的注意不是基于視頻合成器。最簡(jiǎn)單的合成器就是直接將和連起來,不使用任何動(dòng)效。這樣就完成了最簡(jiǎn)單合成器。一個(gè)合成器就是一個(gè)數(shù)據(jù)源節(jié)點(diǎn)目標(biāo)節(jié)點(diǎn)特效節(jié)點(diǎn)的網(wǎng)絡(luò)。 Web視頻合成器Seriously.js入門教程 作者:云荒杯傾 Seriously.js是一個(gè)實(shí)時(shí)的,基于節(jié)點(diǎn)(node)的(注意:不是基于nodejs)web視頻合成器。受af...

    時(shí)飛 評(píng)論0 收藏0
  • python

    Python裝飾器為什么難理解? 無論項(xiàng)目中還是面試都離不開裝飾器話題,裝飾器的強(qiáng)大在于它能夠在不修改原有業(yè)務(wù)邏輯的情況下對(duì)代碼進(jìn)行擴(kuò)展,權(quán)限校驗(yàn)、用戶認(rèn)證、日志記錄、性能測(cè)試、事務(wù)處理、緩存等都是裝飾器的絕佳應(yīng)用場(chǎng)景,它能夠最大程度地對(duì)代碼進(jìn)行復(fù)用。 但為什么初學(xué)者對(duì)裝飾器的理解如此困難,我認(rèn)為本質(zhì)上是對(duì)Py… Python 實(shí)現(xiàn)車牌定位及分割 作者用 Python 實(shí)現(xiàn)車牌定位及分割的實(shí)踐。 ...

    chenatu 評(píng)論0 收藏0
  • 前端綜合性文檔和教程總結(jié)(持續(xù)更新)

    摘要:小弟在前端摸爬滾打一段時(shí)間,發(fā)現(xiàn)前端的比較好的文檔比較分散,特別是中文的,我平時(shí)都是收藏在瀏覽器里,以后有好的教程和綜合性的文檔我會(huì)更新到這里。小組中文文檔,很全。 小弟在前端摸爬滾打一段時(shí)間,發(fā)現(xiàn)前端的比較好的文檔比較分散,特別是中文的,我平時(shí)都是ctrl+D收藏在瀏覽器里,以后有好的教程和綜合性的文檔我會(huì)更新到這里。一則可以做個(gè)記錄,防止丟失。二則有需要的朋友可以來我這里找一找。 ...

    piglei 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<