HTML5 video标签的poster图片如何填充整个标签区域

更新:

http://blog.csdn.net/wuqingyou_w/article/details/51671356 参考这篇博客

设置<video>标签object-fit:fill即可解决。

——————原文——————

这几天做项目的时候,测试人员提了几次相同的bug:视频的首帧图没有铺满整个播放器。第一次提的时候我去google了一下,看到STO上有个类似的问题:

https://stackoverflow.com/questions/10826784/make-html5-video-poster-be-same-size-as-video-itself

其中被采纳的回答是将video的poster设置成一个透明图,然后定义其背景图片样式为原来要设置为poster的图片,还要不重复、设置cover属性。

但是我怎么用都没办法做到这个效果,后来想到一种方法,在video上方放置一个绝对定位的div块,将div块的背景设置为poster图片。当视频播放时隐藏该div块。效果还是不错的。


代码:

布局:

<div id="poster_img"></div>
<video id="video_id" controls="controls" src=""></video>

div块样式:

#poster_img{
	width: 100%;
	height: 18rem;
	position: absolute;
	background: transparent no-repeat;
        background-size:cover;
 }
隐藏的js:

$("#poster_img").css("background-image","url("+video_picture+")");

//视频播放时隐藏poster-img的div
$("#video_id").bind("play",function(){
	$("#poster_img").hide();
});

2017.8.24更新:

今天遇到一个兼容性问题,safari浏览器中#poster_img块会遮挡<video>标签的播放按钮,导致视频无法播放。目前能想到的解决办法就是点击div块将div块隐藏并启动视频播放。不过还没有试,因为需求又变化了……另一方面就是我使用的安卓机,测试用的是苹果机。

此外,安卓浏览器为什么播放按钮会高于div块而ios的低于div块我也不太明白,希望有人能解答一下。


总结:

html有很多属性有局限性,之前在隐藏video标签的控制按钮时也是靠css黑科技样式来隐藏。不管怎样,bug解决了。第一次遇到这个bug我是拒绝的,等到测试说了几次我才认真对待,也算运气好临时想到了,以后要是遇到麻烦的问题再逃避,之后没时间再处理,就对项目很不负责任了。

`video` 标签HTML 中用于嵌入视频文件,并允许用户通过播放控件控制视频。`poster` 属性是用来指定视频开始前显示的静态,这个通常是一张预览或者是对视频内容的一个概览。 当你希望 `video` 元素在加载或初始化时先展示一张本地作为预览时,可以将这张路径设置到 `poster` 属性中。需要注意的是,在实际应用中,由于浏览器的安全策略限制,直接从本地文件系统加载可能会遇到跨源访问的问题,因此这需要通过一些额外的方式来解决,比如利用 Web Worker 或者通过 HTTP 服务器提供文件访问权限等手段。 ### 使用本地的步骤: 假设你想使用本地作为视频的预览,首先你需要把上传到一个Web服务器上,获取到一个URL指向该。接下来是在HTML中引用这个URL作为 `video` 元素的 `poster` 属性值。 ```html <video controls src="http://example.com/path/to/video.mp4" poster="http://example.com/path/to/poster.jpg"> <p>您的浏览器不支持HTML5 video元素。</p> </video> ``` 在这个例子中: - `controls` 属性用于开启默认的播放控件。 - `src` 属性指定了视频文件的URL。 - `poster` 属性则指定了视频开始前显示的预览URL。 ### 安全注意事项: 为了遵守同源策略并且避免安全风险,确保所有请求(包括 `video.src` 和 `video.poster` 的设置)都来自相同的来源非常重要。如果文件托管在本地或不同域下,可能需要采取适当的 CORS 配置或其他解决方案来规避潜在的安全限制。 ### 相关问题: 1. **如何解决本地文件系统的跨源问题**?是否可以通过特定的技术或配置来绕过浏览器的同源策略限制? 可能的解决方法包括将资源托管至可以访问的服务器、使用代理服务器、或者在本地开发环境中调整浏览器的安全设置(虽然这种做法并不推荐,因为它可能会带来安全隐患)。 2. **使用Web Worker加载远程资源是否可行?** 如果是动态更新视频列表或是频繁切换视频,则考虑使用Web Workers来异步地加载和处理资源,以此优化用户体验并减轻主线程负担。 3. **如何在不增加网络延迟的情况下提高视频加载速度?** - 缓存机制:利用HTTP缓存减少重复请求,特别是对于反复加载的常见资源。 - CDN服务:使用内容分发网络可以加速全球范围内的资源访问。 - 流式传输技术:对于大文件或长时间的视频,采用流媒体技术如 HLS 或 DASH 提供渐进式下载。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值