问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

HTML5的视频能不能拉伸宽度,实现自适应宽度?5

发布网友 发布时间:2023-10-10 11:49

我来回答

1个回答

热心网友 时间:2024-11-25 10:13

曾几何时,项目中有碰到视频比例拉伸的需求,但是发现这个看似再普通不过的一个需求,找遍全网至今都没有找到解决方法。因为强制给video标签设置width和height的话只会将video的显示区域拉伸,但是里面的视频还是保持原始比例,怎么调都没用:

因为当我横向拉伸时:

当我纵向拉伸时:

2016-09-21 11:15:40 更新:

感谢 @RileyRen 提醒,原来还有object-fit这一属性,把它设置为fill就满足需求了,泪奔~,这篇文章就当看个笑话吧,哎,不过可以看看我家喵星人的*秀。

<style>video {
object-fit:fill;
width:800px;
height:320px;}</style><h1>测试视频比例拉伸:</h1><video src="http://7xnzpx.com1.z0.glb.clouddn.com/miaoxingren_360p.mp4" controls autoplay loop></video>

但是,这一属性兼容性不太好,IE全军覆没,安卓要4.4.3以上才支持:

所以我这个方法还是有一点点价值的,哈哈。

解决方法一

有人会说,既然网页上拉伸不了比例,那么直接把视频用转码工具拉伸比例然后重新转码不就是了?

没错,这就是我说的第一种解决方法,但是这对于少量视频没啥问题,如果有很多个视频,全部转码又重新上传也不太现实。刚开始我也确实是这么做的,但是后来发现还有其它方法。

解决方法二

就是标题说的,借用transform来实现视频比例拉伸。分2种情况,宽高比变大和宽高比变小。

3.1. 完整DEMO演示

先来看个完整的DEMO,视频主角是我家的喵星人,阿喵说:哎呀,要露脸了,好害羞~~~

http://demo.liuxianan.com/2016/01/09-html5-video-resize/

3.2. 宽高比变大

保持宽度不变,调整rotateX即可实现高度变小,也就是宽高比变大了。看下图:

举个例子,假如原始视频分辨率是640*320(16:9),我想把它调成16:7,也就是640*280,那么:

cos θ = 新高度 / 旧高度 = 280 / 360

用js计算角度(单位是deg):

var rotate = (Math.acos(280/360)*180/Math.PI).toFixed(2); // 新高度 / 旧高度

3.3. 宽高比变小

宽高比减小时,以高度为基准,调整rotateY即可实现宽度变小,也就是宽高比变小了。

举个例子,假如原始视频分辨率是640*320(16:9),我想把它调成4:3,也就是480*320,那么:

cos θ = 新宽度 / 旧宽度 = 480 / 640

用js计算角度(单位是deg):

var rotate = (Math.acos(480/640)*180/Math.PI).toFixed(2); // 新宽度 / 旧宽度

总结

综上,有了这2个方法就可以实现任意比例的视频拉伸了,不过变形过程中需要注意位置可能发现的变化。

附上前面演示选择的DEMO:

<!DOCTYPE html><html lang="zh"><head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>旋转比例模拟</title>
<style type="text/css">.content {
position: absolute;
width: 400px;
height: 300px;
-webkit-perspective: 400px;
perspective: 400px;
left: 100px;
top: 100px;}.wrapper {
position: absolute;
width: 320px;
height: 240px;
transform: rotateY(-30deg) rotateX(0deg);
border: solid 2px #000;}.wrapper.rotate{
transform: rotateY(-30deg) rotateX(50deg);}.wrapper:after {
content: '';
display: block;
position: absolute;

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
企业培训学到了什么 培训感悟简短 有关培训的感悟 通过培训学到什么 培训你学到了什么 领导问培训学到什么怎么回复 Linux系统安装FTP服务器 Linux系统的网络文件共享 建筑的七盏明灯的内容简介 面向对象设计七大原则 简单说 交互设计七大定律 夫妻分居三年,算自动离婚吗。194 路面裂缝用的防裂贴和抗裂贴是一样的东西吗1 沥青路面上能铺设防裂贴吗? 求一部关于父爱的短片,短片名字忘记了!3 儿闻目什么成语2 初三50种常见的化学物质名称314 银项链做了个头发弄黑了怎么办,可能是接触到某化学物质了。 请问空气中的水蒸气会飘到物体表面,并附着于物体表面吗?为什么...3 怎么改好听(让你与众不同的小技巧) 天国降临小说txt全集免费下载 我只有一个手机号码可以微信分身吗?分身后是同一个... 童话是什么46 那一个男人总是拿一些话来威胁一个女人2 怎样查找打印机打印过的东西? 各国语言的哥哥怎么说(不用太多、常见的就行。包括广东话、上海...7 做梦总是梦见地震,不知道预示什么32 我的房产证是70年,70年以后怎么办?难道我辛苦买的房子就不...402 自由落体速度与时间的公式(考虑重力变化)6 高中物理解题方法与技巧10 excuse me是什么意思中文翻译410 万达电影的董事长不姓王,十大股东排名没有王健林的份,而公告显示实际控 ... 什么是路面抗裂贴? (重谢)excel如何将A1里的数据和A2里的数据合并到一起...1 为什么注册要扫码 自由落体时间计算40 求几本穿越女变男的文小说2 保暖内衣什么牌子好?210 分居两年能自动离婚吗?483 js实现切换桌面图片判断图片大小选择平铺模式还是拉伸模式 怎么看是富贵命的手相 掌纹深刻且清晰? 集成灶上热菜的键是哪个 我想买一套二手房,房子产权是七十年,但土地使用权是三十年,房...3 急急急~ 跪求...4 为什么c2驾照容易考过253 vivox6plus 手机怎么将SIM上的电话号码移到手机上35 我的新机丢了vivox6plus但是我在云服务设置找回手机,...10 红米noteqq语音关屏是怎么回事 组合框和列表框的区别211 在使用路面防裂贴缝带粘贴道路裂缝时要注意什么? Excel A栏不合并、后面的BCD栏.....都合并到一起...1