Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
在越來越多用到HTML5,用HTML做的頁面很炫,有些功能也很容易實現(xiàn)了。比如HTML5實現(xiàn)視頻音頻播放。
HTML5 將成為 HTML、XHTML 以及 HTML DOM 的新標準。
用于繪畫的 canvas 元素
用于媒介回放的 video 和 audio 元素
對本地離線存儲的更好的支持
新的特殊內容元素,比如 article、footer、header、nav、section
新的表單控件,比如 calendar、date、time、email、url、search
最新版本的 Safari、Chrome、Firefox 以及 Opera 支持某些 HTML5 特性。Internet Explorer 9 將支持某些 HTML5 特性。
當前,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="/項目名字/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>
定位動畫我們在之前已經實現(xiàn)了。那么這里只要考慮如何實現(xiàn)放大動畫,最后將兩者結合起來就好。從后端拿到的返回值是一個固定長度的數(shù)組,所以這里還是用 div 利用 flex 布局將圖片平鋪展示,利用 CSS transform 進行位置移動和縮放。
接下來就是如何計算出每個 div 的位移。DOM 元素的位移主要關注左上角頂點的位移。針對這個需求可以畫出如下草圖。外層 div 為 container,內層 div 為 inner。
從上圖可以看到,每個 div 的位移即 center.left - inner.left, center.top - inner.top. container 的中心點:
const containerCenterX = containerRect.left + containerRect.width / 2;
const containerCenterY = containerRect.top + containerRect.height / 2;
inner 移動的偏移量:
// 讓 inner 移到 container 的正中間
const offsetX = containerCenterX - itemRect.width / 2 - itemRect.left;
const offsetY = containerCenterY - itemRect.height / 2 - itemRect.top;
最后將方位動畫的 div 疊在 inner 上面即可。
梳理清思路之后,就可以實現(xiàn)代碼了。Demo 已經放在 CodeSandbox 上了。其中最主要的還是位移計算的邏輯。下面是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ù)結構部分:
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,
},
];
偏移量計算部分代碼:
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;
};
這次的需求也可以用于展示動畫。比如產品展示或者局部細節(jié)的展示。根據(jù)不同的需求結合不同的動畫,可以讓我們的頁面變得更加酷炫。
opaz Video AI for Mac是一款專業(yè)的AI視頻無損放大軟件,topaz video ai mac版使用時間信息有效提高視頻質量和細節(jié),從而達到最好的視頻放大、去隔行、降噪和還原效果,另外topaz video enhance ai mac版允許通過片段選擇、處理模型和尺寸比率選項來自定義視頻輸出。Topaz Video AI提供了幾個功能,包括放大、去噪、銳化和穩(wěn)定。它可以將低分辨率視頻升級到更高的分辨率,同時保留細節(jié)并減少偽影。去噪功能有助于減少視頻中的噪聲和顆粒,從而獲得更干凈、更平滑的畫面。銳化工具增強了視頻的清晰度和清晰度,使其看起來更加詳細和清晰。穩(wěn)定功能有助于減少相機抖動和抖動,從而獲得更流暢、更專業(yè)的鏡頭。
https://mac.macxz.com/mac/182833.html?id=MTY4MTYy
Topaz Video Enhance AI for Mac官方介紹
Topaz Video Enhance AI使用最新的深度學習技術,通過使用時間信息自然提高視頻質量和細節(jié)。試試看一下視頻放大,去噪,去隔行和還原方面令人improvements目結舌的改進。
topaz video enhance ai mac版功能特點
升級
通過從多個幀中收集細節(jié)來提高***視頻的分辨率。將SD升級到HD,將HD升級到4k或8k,同時添加清晰自然的視頻細節(jié)。
去噪
在恢復視頻中***細節(jié)的同時消除雜訊和顆粒感。最小化由逐幀降噪方法引起的閃爍和其他時間偽像。
去隔行
使用深度學習將隔行視頻轉換為逐行視頻,同時保留圖像清晰度。與傳統(tǒng)的去隔行掃描相比,顯著減少了視覺偽影。
https://mac.macxz.com/mac/182833.html?id=MTY4MTYy
恢復
自然還原舊視頻,而無需添加視覺效果。恢復***的細節(jié)并從舊的或降級的源中刪除壓縮偽像。
運動會放大升級的缺陷。為了使它起作用,您必須以某種方式智能地跨框架攜帶細節(jié)……而這正是他們所做的。
從多個幀獲得更好的視頻質量
與您一次放大一幀相比,Topaz Video Enhance AI專門使用時間信息來創(chuàng)建更好的視頻增強結果。
更少的運動偽影
其他視頻放大技術通常會因相鄰幀中的不同處理而產生“閃爍”或“閃爍”效果。VEAI經過培訓可顯著減少此類偽影。
恢復視頻詳細信息
VEAI經過培訓,可以將***的細節(jié)注入到您的視頻中,這些細節(jié)是從多個相鄰幀中的附加信息得出的。
獲得更自然的結果
傳統(tǒng)的升頻通常會導致這種情況,盡管VEAI中也確實存在視覺偽影,但從多個幀派生的信息可以緩解這些偽影。
接受過視頻培訓
VEAI僅接受視頻剪輯而非靜態(tài)圖像的培訓。(提高結果值得增加收集數(shù)據(jù)集的工作量!)
非常推薦VEAI-對于老式電視節(jié)目,它會獲得很好的效果,而在數(shù)字家庭視頻和素材上,它的效果也非常好。
使用您現(xiàn)有的工作流程
Video Enhance AI是適用于Mac和Windows的獨立軟件,這意味著它可以使用您現(xiàn)有的硬件直接處理視頻,而不是將工作卸載到遠程服務器。與基于服務器的升級相比,這使其更具成本效益,更快且更好地集成到您的工作流中。
針對您的硬件進行了優(yōu)化
我們直接與不同的硬件制造商合作,以確保軟件在您的計算機上盡快運行。
便捷的工作流程
輕松轉換和合并多個視頻,從SD到HD,HD到4k等。包括導出預設和批處理。
靈活的進出口
支持常見的視頻文件類型和圖像序列作為輸入,并直接導出到mp4,mov或圖像序列。
批量處理
讓視頻增強AI在您的視頻排隊等候的情況下通宵運行,并在早上返回以獲取增強的素材。
在將SD轉換為HD方面做得非常出色,這是我無法用Final Cut and Resolve復制的方式。它帶來了細節(jié),并且給人留下深刻的印象,給我留下了深刻的印象。
*請認真填寫需求信息,我們會在24小時內與您取得聯(lián)系。