WEB视频自适应(上)

有时需要在web页面中载入视频,我们会用到HTML5视频播放器代码,如下显示:

<video width="320" height="240" controls="controls">
  <source src="https://www.w3school.com.cn/i/movie.ogg" type="video/ogg">
  <source src="https://www.w3school.com.cn/i/movie.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>

但是不能自适应,有的视频全屏播放上下还有黑边框,用户体验很不好。

要解决视频自适应和无黑边的问题,我们先了解下分辨率。
一、分辨率
分辨率决定了位图图像细节的精细程度,通常情况下,图像的分辨率越高,所包含的像素就越多,图像就越清晰,画质就越好。
1、视频分辨率:
我们在观看手机视频时可以选择标清(480P)/高清(720p)/全高清(1080p)

所谓标清,英文为"Standard Definition",是物理分辨率在1280P*720P以下的一种视频格式。

所谓全高清(FULL HD),是指物理分辨率高达1920×1080显示(包括1080i和1080P)。
i (Interlace Scaninterlace)是指隔行扫描;
P (ProgressiveScan)代表逐行扫描;
这两者在画面的精细度上有着很大的差别,相同分辨率情况下逐行扫描的画质要高于隔行扫描。1080P的画质要胜过1080i。像720p就是指1280×720(宽x高)逐行扫描,1080i就是1920×1080隔行扫描,1080p是指1920×1080逐行扫描。

可见,买电视1080p 配置高于1080i

2、设备屏幕分辨率
(1)宽高比16:9
根据人体工程学的研究,发现人的两只眼睛的视野范围是一个长宽比例为16:9的长方形,因此,现在厂商对手机电脑电视屏幕的设计宽高比多半是16:9的尺寸,而且这个比例的分辨率有好几种。

16:9的分辨率有以下几种:
1、3840×2160(超高清4k),这个是2k摄影机和高清电视分辨率的4倍,属于超高清分辨率。
2、2560×1440(2k),在数字电影制作中,它是进入2k的门槛,分辨率的标准来自传统的超级35毫米电影。
3、1920×1080(1080p全高清/蓝光HD),数字电视与计算机技术的完美融合,是一种在逐行扫描下达到1920×1080的分辨率的显示格式。
4、1600×900,适用范围比较小,只有15.6寸笔记本和20寸的液晶显示器。 5、1280×720(720p高清)

(2)宽高比4:3
4:3 是最常见屏幕比例,从电视时代流传下来的古老标准。在近代宽屏幕兴起前,绝大部分的屏幕分辨率都是照着这个比例的。

4:3的分辨率如下:
320×240、640×480、800×600、1024×768、1152×864、1280×960、1280×1024、1400×1050、1600×1200、1920×1440等都是4:3分辨率的。

3、如何区分视频是16:9和4:3

将视频分辨率的宽度除以高度,运算结果接近1.7的是16:9(超过1.77都归类为16:9),运算结果接近1.3的4:3。

例如您要上传的视频分辨率是 640×480,用640/480=1.33,那么这个就是一个4:3的视频。

根据视频播放时的形状也可以目测出视频是16:9还是4:3,当播放的视频是扁长形状时可以判定该视频为16:9,当视频形状是近似于正方形时,可判定该视频是4:3。
但也有部分视频分辨率并不规则,我们可以将运算结果小于1.3的归类为4:3,大于1.5的归类为16:9。

比例换算示例:
宽640 按照16比9比例计算,高(h)就是360
640:h=16:9
16h=640×9
h=360

现在大多设备屏幕分辨率都是16:9,因此视频制作输出比例16:9为最佳,全屏播放,视频就会铺满整屏,上下就不会有黑边。


二、视频自适应
解决了视频显示时的黑边问题,下来我们就看看如何让视频在web端自适应。
1、标准的HTML5 视频

<video width="320" height="240" controls="controls">
  <source src="https://www.w3school.com.cn/i/movie.ogg" type="video/ogg">
  <source src="https://www.w3school.com.cn/i/movie.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>

设置video标签属性宽度为100%,高度为auto,如下:

video {
    
    
    /*width:100%*/
    max-width: 100%;
    height: auto;
}

如果 width 属性设置为 100%,视频播放器会根据屏幕大小自动调整比例,且可以比原始尺寸大
max-width 属性设置为 100%, 视频播放器会根据屏幕自动调整比例,但不会超过其原始大小

2、内嵌外部平台视频
要在网页中载入其他视频平台的视频,各平台都提供了通用的代码,如下:
优酷视频

<iframe height=498 width=510 src='https://player.youku.com/embed/XNDgzNDM2NTM1Ng==' frameborder=0 'allowfullscreen'></iframe>

腾讯视频

<iframe frameborder="0" src="https://v.qq.com/txp/iframe/player.html?vid=j0034vhhoxr" allowFullScreen="true"></iframe>

爱奇艺

<iframe src="http://open.iqiyi.com/developer/player_js/coopPlayerIndex.html?vid=7ca4a5bf0642444bad57a7e7b94343a0&tvId=1303218690585000&accessToken=2.ef9c39d6c7f1d5b44768e38e5243157d&appKey=8c634248790d4343bcae1f66129c1010&appId=1368&height=100%&width=100%" frameborder="0" allowfullscreen="true" width="100%" height="100%"></iframe>

这些通用代码在页面中的显示很不理想,需要给包含iframe的div容器中添加一个类名video-container,如下:

.video-container {
    
    
  position: relative;
  padding-bottom: 56.25%;   //宽高比例16:9, 宽高比是4:3,值为75%
  padding-top: 0;
  height: 0; 
  overflow: hidden; 
}
.video-container iframe {
    
    
  position: absolute; 
  top:0;
  left:0;
  width: 100%;
  height: 100%;
}
<div class="video-container">
   <iframe height=498 width=510 src='https://player.youku.com/embed/XNDgzNDM2NTM1Ng==' frameborder=0 'allowfullscreen'></iframe>
</div>

3、bootstrap中对视频自适应的控制:

.embed-responsive {
    
    
	position: relative;
	display: block;
	height: 0;
	padding: 0;
	overflow: hidden;
}
.embed-responsive .embed-responsive-item,
.embed-responsive iframe,
.embed-responsive embed,
.embed-responsive object,
.embed-responsive video {
    
    
	position: absolute;
	top: 0;
	bottom: 0;
	left: 0;
	width: 100%;
	height: 100%;
	border: 0;
}
.embed-responsive-16by9 {
    
    
	padding-bottom: 56.25%;
}
.embed-responsive-4by3 {
    
    
	padding-bottom: 75%; 
}

这里的56.25%;就是16:9宽高百分比。

<div class="embed-responsive embed-responsive-16by9">
	<video width="640" height="360" controls>
		<source src="https://www.runoob.com/try/demo_source/mov_bbb.mp4" type="video/mp4">
		<source src="https://www.runoob.com/try/demo_source/mov_bbb.ogg" type="video/ogg">
		Your browser does not support HTML5 video.
	</video>
</div>

显然,div里除了video还可以载入iframe,embed,object,均可自适应显示。
单页面使用,可依照上面代码;如项目前端基于bootstrap,已引入bootstrap.css,页面div直接调用就行。

<!-- Bootstrap -->
<link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.css" rel="stylesheet">

猜你喜欢

转载自blog.csdn.net/itbrand/article/details/108849519
今日推荐