在越來越多用到HTML5,用HTML做的頁(yè)面很炫,有些功能也很容易實(shí)現(xiàn)了。比如HTML5實(shí)現(xiàn)視頻音頻播放。
HTML5 將成為 HTML、XHTML 以及 HTML DOM 的新標(biāo)準(zhǔn)。
用于繪畫的 canvas 元素
用于媒介回放的 video 和 audio 元素
對(duì)本地離線存儲(chǔ)的更好的支持
新的特殊內(nèi)容元素,比如 article、footer、header、nav、section
新的表單控件,比如 calendar、date、time、email、url、search
最新版本的 Safari、Chrome、Firefox 以及 Opera 支持某些 HTML5 特性。Internet Explorer 9 將支持某些 HTML5 特性。
當(dāng)前,video 元素支持三種視頻格式:
格式 | IE | Firefox | Opera | Chrome | Safari |
---|---|---|---|---|---|
Ogg | No | 3.5+ | 10.5+ | 5.0+ | No |
MPEG 4 | 9.0+ | No | No | 5.0+ | 3.0+ |
WebM | No | 4.0+ | 10.6+ | 6.0+ | No |
Ogg = 帶有 Theora 視頻編碼和 Vorbis 音頻編碼的 Ogg 文件
MPEG4 = 帶有 H.264 視頻編碼和 AAC 音頻編碼的 MPEG 4 文件
WebM = 帶有 VP8 視頻編碼和 Vorbis 音頻編碼的 WebM 文件
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>視頻播放</title>
</head>
<body>
<div style="text-align:center;">
<button onclick="playPause()">播放/暫停</button>
<button onclick="makeBig()">大</button>
<button onclick="makeNormal()">中</button>
<button onclick="makeSmall()">小</button>
<br />
<video id="video1" width="420" style="margin-top:15px;">
<source src="/項(xiàng)目名字/upload/Video_1509549323159.mp4" type="video/mp4" />
</video>
</div>
<script type="text/javascript">
var myVideo=document.getElementById("video1");
//播放暫停
function playPause()
{
if (myVideo.paused)
myVideo.play();
else
myVideo.pause();
}
//視頻放大
function makeBig()
{
myVideo.width=560;
}
//視頻中等
function makeSmall()
{
myVideo.width=320;
}
//視頻縮小
function makeNormal()
{
myVideo.width=420;
}
</script>
</body>
</html>
定位動(dòng)畫我們?cè)谥耙呀?jīng)實(shí)現(xiàn)了。那么這里只要考慮如何實(shí)現(xiàn)放大動(dòng)畫,最后將兩者結(jié)合起來就好。從后端拿到的返回值是一個(gè)固定長(zhǎng)度的數(shù)組,所以這里還是用 div 利用 flex 布局將圖片平鋪展示,利用 CSS transform 進(jìn)行位置移動(dòng)和縮放。
接下來就是如何計(jì)算出每個(gè) div 的位移。DOM 元素的位移主要關(guān)注左上角頂點(diǎn)的位移。針對(duì)這個(gè)需求可以畫出如下草圖。外層 div 為 container,內(nèi)層 div 為 inner。
從上圖可以看到,每個(gè) div 的位移即 center.left - inner.left, center.top - inner.top. container 的中心點(diǎn):
const containerCenterX = containerRect.left + containerRect.width / 2;
const containerCenterY = containerRect.top + containerRect.height / 2;
inner 移動(dòng)的偏移量:
// 讓 inner 移到 container 的正中間
const offsetX = containerCenterX - itemRect.width / 2 - itemRect.left;
const offsetY = containerCenterY - itemRect.height / 2 - itemRect.top;
最后將方位動(dòng)畫的 div 疊在 inner 上面即可。
梳理清思路之后,就可以實(shí)現(xiàn)代碼了。Demo 已經(jīng)放在 CodeSandbox 上了。其中最主要的還是位移計(jì)算的邏輯。下面是Demo地址,也可以在我的博客上看到 Demo。 Demo 地址:codesandbox.io/p/devbox/si…
布局部分代碼:
<div class="container" ref="container">
<div
v-for="(image, index) in imageList"
:key="index"
class="wrapper"
ref="imageElList"
:style="{ opacity: image.active ? 1 : 0.6 }"
@click="toggleActiveImage(index)"
>
<img :src="image.src" class="image" />
<direction
ref="directionElList"
class="direction"
:style="{ display: image.active ? 'block' : 'none' }"
:pinPosition="selectedDirection"
/>
</div>
</div>
數(shù)據(jù)結(jié)構(gòu)部分:
export const imageDemos = [
{
name: "image-1",
src: "https://images.adsttc.com/media/images/564c/8b23/e58e/ce4d/7300/01c1/newsletter/01.jpg?1447856922",
active: false,
},
{
name: "image-2",
src: "https://i.pinimg.com/550x/65/a9/10/65a91018534fc59b675150fc432ccc41.jpg",
active: false,
},
{
name: "image-3",
src: "https://1.bp.blogspot.com/-PcYuV8FVZmQ/VXWy7y-QjDI/AAAAAAABewE/La-BpNsCsY0/s1600/mapa-grande1.jpg",
active: false,
},
{
name: "image-4",
src: "https://image2.sina.com.cn/gm/zhuanqu/sephiroth/rwjs/fomalhaut_b.gif",
active: false,
},
{
name: "image-5",
src: "https://gd-hbimg.huaban.com/f0c7a577ed51f171967cbd3c1b21e90361b6924b1594b7-yrOBDd",
active: false,
},
];
偏移量計(jì)算部分代碼:
const showActiveImage = (imageEl) => {
const containerEl = container.value;
const containerRect = containerEl!.getBoundingClientRect();
const itemRect = imageEl!.getBoundingClientRect();
const containerCenterX = containerRect.left + containerRect.width / 2;
const containerCenterY = containerRect.top + containerRect.height / 2;
const offsetX = containerCenterX - itemRect.width / 2 - itemRect.left;
const offsetY = containerCenterY - itemRect.height / 2 - itemRect.top;
imageEl!.style.transform = `translate(${offsetX}px, ${offsetY}px) scale(1.2)`;
imageEl!.style.zIndex = 100;
};
這次的需求也可以用于展示動(dòng)畫。比如產(chǎn)品展示或者局部細(xì)節(jié)的展示。根據(jù)不同的需求結(jié)合不同的動(dòng)畫,可以讓我們的頁(yè)面變得更加酷炫。
opaz Video AI for Mac是一款專業(yè)的AI視頻無損放大軟件,topaz video ai mac版使用時(shí)間信息有效提高視頻質(zhì)量和細(xì)節(jié),從而達(dá)到最好的視頻放大、去隔行、降噪和還原效果,另外topaz video enhance ai mac版允許通過片段選擇、處理模型和尺寸比率選項(xiàng)來自定義視頻輸出。Topaz Video AI提供了幾個(gè)功能,包括放大、去噪、銳化和穩(wěn)定。它可以將低分辨率視頻升級(jí)到更高的分辨率,同時(shí)保留細(xì)節(jié)并減少偽影。去噪功能有助于減少視頻中的噪聲和顆粒,從而獲得更干凈、更平滑的畫面。銳化工具增強(qiáng)了視頻的清晰度和清晰度,使其看起來更加詳細(xì)和清晰。穩(wěn)定功能有助于減少相機(jī)抖動(dòng)和抖動(dòng),從而獲得更流暢、更專業(yè)的鏡頭。
https://mac.macxz.com/mac/182833.html?id=MTY4MTYy
Topaz Video Enhance AI for Mac官方介紹
Topaz Video Enhance AI使用最新的深度學(xué)習(xí)技術(shù),通過使用時(shí)間信息自然提高視頻質(zhì)量和細(xì)節(jié)。試試看一下視頻放大,去噪,去隔行和還原方面令人improvements目結(jié)舌的改進(jìn)。
topaz video enhance ai mac版功能特點(diǎn)
升級(jí)
通過從多個(gè)幀中收集細(xì)節(jié)來提高***視頻的分辨率。將SD升級(jí)到HD,將HD升級(jí)到4k或8k,同時(shí)添加清晰自然的視頻細(xì)節(jié)。
去噪
在恢復(fù)視頻中***細(xì)節(jié)的同時(shí)消除雜訊和顆粒感。最小化由逐幀降噪方法引起的閃爍和其他時(shí)間偽像。
去隔行
使用深度學(xué)習(xí)將隔行視頻轉(zhuǎn)換為逐行視頻,同時(shí)保留圖像清晰度。與傳統(tǒng)的去隔行掃描相比,顯著減少了視覺偽影。
https://mac.macxz.com/mac/182833.html?id=MTY4MTYy
恢復(fù)
自然還原舊視頻,而無需添加視覺效果。恢復(fù)***的細(xì)節(jié)并從舊的或降級(jí)的源中刪除壓縮偽像。
運(yùn)動(dòng)會(huì)放大升級(jí)的缺陷。為了使它起作用,您必須以某種方式智能地跨框架攜帶細(xì)節(jié)……而這正是他們所做的。
從多個(gè)幀獲得更好的視頻質(zhì)量
與您一次放大一幀相比,Topaz Video Enhance AI專門使用時(shí)間信息來創(chuàng)建更好的視頻增強(qiáng)結(jié)果。
更少的運(yùn)動(dòng)偽影
其他視頻放大技術(shù)通常會(huì)因相鄰幀中的不同處理而產(chǎn)生“閃爍”或“閃爍”效果。VEAI經(jīng)過培訓(xùn)可顯著減少此類偽影。
恢復(fù)視頻詳細(xì)信息
VEAI經(jīng)過培訓(xùn),可以將***的細(xì)節(jié)注入到您的視頻中,這些細(xì)節(jié)是從多個(gè)相鄰幀中的附加信息得出的。
獲得更自然的結(jié)果
傳統(tǒng)的升頻通常會(huì)導(dǎo)致這種情況,盡管VEAI中也確實(shí)存在視覺偽影,但從多個(gè)幀派生的信息可以緩解這些偽影。
接受過視頻培訓(xùn)
VEAI僅接受視頻剪輯而非靜態(tài)圖像的培訓(xùn)。(提高結(jié)果值得增加收集數(shù)據(jù)集的工作量!)
非常推薦VEAI-對(duì)于老式電視節(jié)目,它會(huì)獲得很好的效果,而在數(shù)字家庭視頻和素材上,它的效果也非常好。
使用您現(xiàn)有的工作流程
Video Enhance AI是適用于Mac和Windows的獨(dú)立軟件,這意味著它可以使用您現(xiàn)有的硬件直接處理視頻,而不是將工作卸載到遠(yuǎn)程服務(wù)器。與基于服務(wù)器的升級(jí)相比,這使其更具成本效益,更快且更好地集成到您的工作流中。
針對(duì)您的硬件進(jìn)行了優(yōu)化
我們直接與不同的硬件制造商合作,以確保軟件在您的計(jì)算機(jī)上盡快運(yùn)行。
便捷的工作流程
輕松轉(zhuǎn)換和合并多個(gè)視頻,從SD到HD,HD到4k等。包括導(dǎo)出預(yù)設(shè)和批處理。
靈活的進(jìn)出口
支持常見的視頻文件類型和圖像序列作為輸入,并直接導(dǎo)出到mp4,mov或圖像序列。
批量處理
讓視頻增強(qiáng)AI在您的視頻排隊(duì)等候的情況下通宵運(yùn)行,并在早上返回以獲取增強(qiáng)的素材。
在將SD轉(zhuǎn)換為HD方面做得非常出色,這是我無法用Final Cut and Resolve復(fù)制的方式。它帶來了細(xì)節(jié),并且給人留下深刻的印象,給我留下了深刻的印象。
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。