在越来越多用到HTML5,用HTML做的页面很炫,有些功能也很容易实现了。比如HTML5实现视频音频播放。
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>
定位动画我们在之前已经实现了。那么这里只要考虑如何实现放大动画,最后将两者结合起来就好。从后端拿到的返回值是一个固定长度的数组,所以这里还是用 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 上面即可。
梳理清思路之后,就可以实现代码了。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>
数据结构部分:
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;
};
这次的需求也可以用于展示动画。比如产品展示或者局部细节的展示。根据不同的需求结合不同的动画,可以让我们的页面变得更加酷炫。
opaz Video AI for Mac是一款专业的AI视频无损放大软件,topaz video ai mac版使用时间信息有效提高视频质量和细节,从而达到最好的视频放大、去隔行、降噪和还原效果,另外topaz video enhance ai mac版允许通过片段选择、处理模型和尺寸比率选项来自定义视频输出。Topaz Video AI提供了几个功能,包括放大、去噪、锐化和稳定。它可以将低分辨率视频升级到更高的分辨率,同时保留细节并减少伪影。去噪功能有助于减少视频中的噪声和颗粒,从而获得更干净、更平滑的画面。锐化工具增强了视频的清晰度和清晰度,使其看起来更加详细和清晰。稳定功能有助于减少相机抖动和抖动,从而获得更流畅、更专业的镜头。
https://mac.macxz.com/mac/182833.html?id=MTY4MTYy
Topaz Video Enhance AI for Mac官方介绍
Topaz Video Enhance AI使用最新的深度学习技术,通过使用时间信息自然提高视频质量和细节。试试看一下视频放大,去噪,去隔行和还原方面令人improvements目结舌的改进。
topaz video enhance ai mac版功能特点
升级
通过从多个帧中收集细节来提高***视频的分辨率。将SD升级到HD,将HD升级到4k或8k,同时添加清晰自然的视频细节。
去噪
在恢复视频中***细节的同时消除杂讯和颗粒感。最小化由逐帧降噪方法引起的闪烁和其他时间伪像。
去隔行
使用深度学习将隔行视频转换为逐行视频,同时保留图像清晰度。与传统的去隔行扫描相比,显着减少了视觉伪影。
https://mac.macxz.com/mac/182833.html?id=MTY4MTYy
恢复
自然还原旧视频,而无需添加视觉效果。恢复***的细节并从旧的或降级的源中删除压缩伪像。
运动会放大升级的缺陷。为了使它起作用,您必须以某种方式智能地跨框架携带细节……而这正是他们所做的。
从多个帧获得更好的视频质量
与您一次放大一帧相比,Topaz Video Enhance AI专门使用时间信息来创建更好的视频增强结果。
更少的运动伪影
其他视频放大技术通常会因相邻帧中的不同处理而产生“闪烁”或“闪烁”效果。VEAI经过培训可显着减少此类伪影。
恢复视频详细信息
VEAI经过培训,可以将***的细节注入到您的视频中,这些细节是从多个相邻帧中的附加信息得出的。
获得更自然的结果
传统的升频通常会导致这种情况,尽管VEAI中也确实存在视觉伪影,但从多个帧派生的信息可以缓解这些伪影。
接受过视频培训
VEAI仅接受视频剪辑而非静态图像的培训。(提高结果值得增加收集数据集的工作量!)
非常推荐VEAI-对于老式电视节目,它会获得很好的效果,而在数字家庭视频和素材上,它的效果也非常好。
使用您现有的工作流程
Video Enhance AI是适用于Mac和Windows的独立软件,这意味着它可以使用您现有的硬件直接处理视频,而不是将工作卸载到远程服务器。与基于服务器的升级相比,这使其更具成本效益,更快且更好地集成到您的工作流中。
针对您的硬件进行了优化
我们直接与不同的硬件制造商合作,以确保软件在您的计算机上尽快运行。
便捷的工作流程
轻松转换和合并多个视频,从SD到HD,HD到4k等。包括导出预设和批处理。
灵活的进出口
支持常见的视频文件类型和图像序列作为输入,并直接导出到mp4,mov或图像序列。
批量处理
让视频增强AI在您的视频排队等候的情况下通宵运行,并在早上返回以获取增强的素材。
在将SD转换为HD方面做得非常出色,这是我无法用Final Cut and Resolve复制的方式。它带来了细节,并且给人留下深刻的印象,给我留下了深刻的印象。
*请认真填写需求信息,我们会在24小时内与您取得联系。