• <strike id="fdgpu"><input id="fdgpu"></input></strike>
    <label id="fdgpu"></label>
    <s id="fdgpu"><code id="fdgpu"></code></s>

  • <label id="fdgpu"></label>
  • <span id="fdgpu"><u id="fdgpu"></u></span>

    <s id="fdgpu"><sub id="fdgpu"></sub></s>
    您當前的位置是:  首頁 > 資訊 > 文章精選 >
     首頁 > 資訊 > 文章精選 >

    通過Canvas在瀏覽器中更酷的展示視頻

    2019-08-22 13:56:08   作者:文 / Matthew McClure 譯 / John   來源:CTI論壇   評論:0  點擊:


      有了Canvas可以更靈活的展示體驗更好的視頻,能夠與頁面更好的融合。
      原文 https://mux.com/blog/canvas-adding-filters-and-more-to-video-using-just-a-browser/
      視頻無疑是網頁中最引人關注的元素之一。在一個兼容性良好的網頁內,視頻的動態(tài)畫面讓網頁內容能夠更加生動地展現(xiàn)給用戶,而那些可響應用戶行為并與網頁瀏覽者互動的網頁視頻元素則將這種美妙體驗提升到了新的高度。
      這里我想為大家介紹Canvas API!為實現(xiàn)更加高階的視覺效果,Canvas API向開發(fā)人員提供了一種通過<canvas>元素在DOM中繪制圖形的方法。此方法的一項常見用例就是處理圖像,這也使其成為處理連續(xù)圖像也就是視頻的一大利器。我們希望通過以下幾個典型案例為大家分享視頻+畫布并實現(xiàn)更生動精彩的網頁交互效果,探索該項技術的無限可能。
      樣板參數(shù)
      為了保證這些案例能夠客觀充分反映Canvas API的優(yōu)勢,我們確立了以下測試樣板參數(shù):首先,我們使用Mux為每個視頻附予播放ID,而player.js僅僅是一個用于抓住頁面中的所有視頻元素與data-playback-id屬性,并初始化每一個 HLS.js 的小工具;其次,我們的每個測試小樣都有一個用于演示的Processor class。這些演示文件都是自包含的,即便是簡單示例與高級示例之間也具有足夠相似性,這樣便于控制變量以精確比較他們之間的差異。
      拷貝視頻:從視頻元素渲染到Canvas
      詳情視頻鏈接:https://gp0hk.csb.app/1-simple.html
      注意:這些CodeSandbox演示可能無法在Safari上運行。
      在此示例中,我們所做的只是將video元素以canvas元素的輸出形式呈現(xiàn)。這里展示的是一個帶有video和canvas元素的裸露HTML文件(接下來的每個例子都使用與此完全相同的文件)。當我們創(chuàng)建類的新示例Processor時,我們抓取video和canvas元素然后從畫布中獲取2D上下文。接下來,通過設置一個監(jiān)聽器來啟動我們所構造的函數(shù)集合,以便于在視頻元素開始播放時應用這些優(yōu)化。
      當play事件被觸發(fā)時,updateCanvas方法開始被調用。在這種情況下,被調用的只是drawImage上下文,用以確保video元素中的內容能夠準確被繪制。當此調用完成后我們會使用requestAnimationFrame立即再次調用該函數(shù)。
      也許你想問:這里為什么不使用setTimeout而使用requestAnimationFrame?這樣做最重要的原因是避免丟幀或剪切。與setTimeout不同,requestAnimationFrame和顯示器的刷新率同步,使用requestAnimationFrame能夠有效規(guī)避對終端顯示設備幀率與刷新率的不必要猜測。
      讓我們用圖像創(chuàng)造點什么吧!
      詳情視頻鏈接:https://gp0hk.csb.app/2-filter.html
      上述示例與我們之前的示例幾乎完全相同。但是,在這里我們不是僅僅完全復制整個video元素,而是在將圖像繪制到上下文之前操作圖像。
      在如原先那樣繪制圖像之后,我們可以將該圖像數(shù)據(jù)以記錄了每個像素RGBA值的數(shù)組的形式從該上下文中取出。不能不說這是一件令人興奮的事情,因為這意味著我們可以遍歷每個像素并在此基礎上實現(xiàn)我們期待的任何功能。而在此情形下,我們要做的是將把絢麗的彩色視頻轉換為灰階版本。
      最終我們只是采用了 Mozilla團隊描述 的方法,也就是將每個RGB估值器設置為其中所有3個的平均值。隨后我們更新圖像數(shù)據(jù)數(shù)組中的這些值,并將更新后的版本寫入到上下文中。
      一個接近實際的例子:分析和利用視頻的細節(jié)
      這里我想與大家分享一下Phil痛苦——2015年以來,他一直任職于Demuxed 公司。今年除了常規(guī)領域,他還一直致力于 Demuxed 2019網站 ,該 網站 頁面的頂部有一個大型動畫,設計此動畫的目標是希望其與網頁背景完美融合。動畫可以使用JavaScript和SVG完成,但這樣會導致動畫文件非常臃腫,以至于完全占據(jù)了MacBook Pro的處理器核心。我們的討論以該命題為重點,我們希望使用合適的編碼方案已實現(xiàn)高效的視頻動畫展示效果。
      Phil把視頻放在了hero上,并且他注意到視頻的背景顏色與CSS中指定的背景顏色不完全匹配。但這并不要緊,Phil做了任何明智的開發(fā)者都會做的事情——使用顏色提取工具抓取了視頻背景的十六進制顏色值,隨后統(tǒng)一兩種背景的顏色。
      當Phil在不同的瀏覽器或設備中打開該網頁時,他意識到了我們正在處理的色彩空間問題——在解碼視頻時,不同的瀏覽器或硬件處理顏色空間的方式不同,因此就像我們試圖做的那樣,這里基本上沒有辦法可靠地匹配不同解碼器的十六進制值。
      仔細觀察,你會看到紫色背景的細微差別。經許可使用的多路分配圖像。
      為了解決這個問題,我們放棄了這種嘗試并試圖只在每個瀏覽器內進行初始修復。我們像以前那樣將畫面框架繪制到畫布上并且我們只抓取邊緣上的一個像素;當瀏覽器將圖像渲染到畫布時將顏色轉換為正確的顏色空間,這樣我們就可以抓住邊緣上的一個RGBA值并將主體背景顏色設置為相同!
      詳情視頻鏈接:https://gp0hk.csb.app/3-analyze.html
      萬事俱備!接下來我們添加點機器學習理論
      在當下的技術趨勢中,機器學習成為避之不及的關鍵熱詞。幾乎所有技術博客文章內沒有機器學習解決不了的問題;更重要的是,我們原先似乎沒有利用機器學習實現(xiàn)什么頗具建設性的技術成就。盡管Mux 利用ML 做實現(xiàn)了很多  很酷的  事情 。但我本人卻并未利用機器學習實現(xiàn)什么酷炫的優(yōu)化。
      我們將進一步討論最后一個例子并將其中的一些概念結合在一起:我們使用 Tensorflow的對象檢測模型 在每個幀中查找對象并對它們進行分類,然后我們將在畫布中用框繪制框架和與之相關的標簽。根據(jù) Spoiler alert分類器,我們認為該分類器針對示例Big Buck Bunny中的一切物體所作出的識別結果可能都是錯誤的。
      這里我想強調的是:我不是數(shù)據(jù)科學家,這是我第一次親自使用Tensorflow。盡管使用機器學習搭建視覺分析框架并進行實時分析看上去非常酷炫,但這一切真的能在實際案例當中起到決定性關鍵作用嗎?最后我們請Phil使用相機拍攝他的寵物狗散步,看看機器學習應對這一場景的效果如何……
      詳情視頻鏈接:https://g9zew.csb.app/5-woof.html
      實際結果的確出乎我的意料:機器學習可以成功識別99%幀內的寵物狗,僅有1%的情況將寵物狗識別成馬,不得不說這超出了我的預期。
      我們還能做些什么呢?
      我們可以使用類似的方法實現(xiàn)色度值過濾器來構建自己的綠幕或構建圖形和疊加層。如果你正在使用HTML5視頻和畫布做一些其他有趣的事情, 請與我們分享。來源:LiveVideoStack
    【免責聲明】本文僅代表作者本人觀點,與CTI論壇無關。CTI論壇對文中陳述、觀點判斷保持中立,不對所包含內容的準確性、可靠性或完整性提供任何明示或暗示的保證。請讀者僅作參考,并請自行承擔全部責任。

    專題

    CTI論壇會員企業(yè)

    亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩 横峰县| 开封县| 赤水市| 九龙坡区| 凌云县| 镇坪县| 海淀区| 明溪县| 大邑县| 洛川县| 莎车县| 图木舒克市| 睢宁县| 马鞍山市| 射阳县| 汤原县| 三江| 汉寿县| 全椒县| 阿拉善右旗| 安丘市| 图片| 德庆县| 泗洪县| 玉林市| 辉南县| 凭祥市| 江口县| 唐海县| 永泰县| 东至县| 柘城县| 古蔺县| 大悟县| 阳东县| 于都县| 林州市| 安丘市| 沈阳市| 武山县| 山阳县| http://444 http://444 http://444 http://444 http://444 http://444