在Flash中,我们可以在param和embed标签中使用wmode transparent,但在HTML5的video和source标签中是否有类似的选项呢?我们是否能够正确保存.m4v或.ogv视频文件,以便在浏览器上播放这些视频并具有透明背景?
谢谢。
是的,即使没有Flash,也可以实现这种效果:
然而,只有非常现代的浏览器支持HTML5视频,所以你应该在考虑使用HTML5时考虑这一点,并提供回退(可能是Flash或仅省略透明度)。
Chrome 30以上版本支持视频透明度。
http://updates.html5rocks.com/2013/07/Alpha-transparency-in-Chrome-video
<video>
。更多信息请参见 https://developers.google.com/web/updates/2013/07/Alpha-transparency-in-Chrome-video。 - mikemaccana更新:现在Chrome和Firefox支持带alpha通道的Webm。
对于其他浏览器,有一些变通方法,但它们涉及使用Canvas重新渲染视频,而这种方法有点hack。 seeThru 就是一个例子。它在HTML5桌面浏览器(甚至IE9)上运行得非常好,但在移动端上似乎效果不佳。我无法在Android上的Chrome中使其正常工作。它在Firefox for Android上可以工作,但帧率很差。我认为您可能会在移动设备上遇到麻烦,尽管我很乐意被证明是错误的。
现在,如果您使用两种不同的视频格式(WebM和HEVC),您可以通过简单的<video>
标签创建一个透明度视频,在除Internet Explorer以外的所有主要浏览器中都可以正常工作:
<video>
<source src="video.mov" type="video/quicktime">
<source src="video.webm" type="video/webm">
</video>
注意:WebM版本放在第二个位置很重要,因为Safari目前支持WebM但不支持WebM透明度。
我也曾经为此苦恼。这是我找到的答案。在Adam的回答基础上,以下是更详细的内容,包括如何在WebM容器中编码带有alpha通道的VP9。
首先,这里有一个CodePen游乐场,您可以使用我的视频进行测试。
<video width="600" height="100%" autoplay loop muted playsinline>
<source src="https://rotato.netlify.app/alpha-demo/movie-hevc.mov" type='video/mp4'; codecs="hvc1">
<source src="https://rotato.netlify.app/alpha-demo/movie-webm.webm" type="video/webm">
</video>
ffmpeg -i "your-movie-in-prores.mov" -c:v libvpx-vp9 movie-webm.webm
在此博客文章中查看更多方法。background: transparent
添加到视频样式中,因为像 normalize 这样的东西会向视频元素添加黑色背景。 - Nicolas RWebM格式是Chrome > 29的最佳解决方案,但它不支持Firefox IE和Safari,最好的解决方案是使用Flash(wmode="transparent")。但你必须忘记“iOS”。
Quicktime movs导出为动画在Safari中可以工作,但我希望有一个完整的解决方案(或格式)涵盖所有主要浏览器。