我想在网页中嵌入视频。
我不想使用Flash,因为它在许多平台上都无法使用。
我不太愿意使用HTML5,因为它还不是很标准(虽然它已经是标准了,但大多数人的浏览器都不支持它)。
还有其他方法吗?还是我应该坚持使用HTML5,并放置一个巨大的横幅告诉人们升级他们的浏览器?
我想在网页中嵌入视频。
我不想使用Flash,因为它在许多平台上都无法使用。
我不太愿意使用HTML5,因为它还不是很标准(虽然它已经是标准了,但大多数人的浏览器都不支持它)。
还有其他方法吗?还是我应该坚持使用HTML5,并放置一个巨大的横幅告诉人们升级他们的浏览器?
有几种方法可以将HTML5视频与不支持的浏览器回退相结合。已经演示了一些具体的解决方案。
其中一个例子是由Camen Design制作的Video for Everybody,符合HTML5标准,并使用条件注释来支持IE和嵌套对象标签来支持旧版浏览器。这应该符合标准、向后兼容并具备未来性。
HTML 5不是标准,而是一个草案。它有望在未来成为标准,但可能会先发生变化。
如果您想在页面中嵌入视频,那么至少今天,Flash是您可以使用的最受支持的选项。我会提供一个常规可下载版本的链接,作为那些没有Flash(或只想在专用视频播放器中观看视频的人)的人的选择。
告诉人们升级他们的浏览器并不能帮助太多。据我所知,唯一一个稳定版本中支持视频的浏览器是Firefox。Chrome除了在开发版中支持外,其他版本都不支持。我不认为Opera已经发布了带有支持的稳定版本。微软肯定还没有将其添加到Internet Explorer中。至于Safari,我不确定。
如果您真的想避免使用Flash,那么您可以使用HTML 4.01对象。
<object data="myVideo.ogv" type="video/ogg">
<!-- fallback content here -->
</object>
...并希望用户已安装能够处理视频的插件。
我刚刚发现了Cortado。它是一个播放OGG的Java小程序。实际上,我要感谢David Dorward,因为查看HTML5的状态让我发现了它。 Firefox建议使用类似以下的内容:
<video src="my_ogg_video.ogg" controls width="320" height="240">
<object type="application/x-java-applet"
width="320" height="240">
<param name="archive" value="cortado.jar">
<param name="code" value="com.fluendo.player.Cortado.class">
<param name="url" value="my_ogg_video.ogg">
<p>You need to install Java to play this file.</p>
</object>
</video>
Java可以在比Flash更多的平台上使用,在这种情况下,只需作为HTML5的备选方案。
(来源)
我知道有点晚了,但你看过VLC吗?
它可以嵌入网站,在Windows、Mac OS和Linux上运行,是免费的、开源的,支持许多视频/音频格式...
缺点是它没有一个漂亮的GUI界面,如播放/暂停/设置音量等功能,你必须自己创建。
你可以看一下这篇文章:http://www.videolan.org/doc/play-howto/en/ch04.html#id310965
你认为为什么很多大型网站使用Flash播放视频?可能不是因为它不可用... 当然,有其他的方式来嵌入网页视频内容,但如果可用性是一个问题,目前Flash是最好的选择。
我对这个问题进行了研究,因为我对xHtml+RDFa非常感兴趣,并找到了一种在HTML5浏览器中播放视频的方法,而不会阻塞非HTML5浏览器。
我在这里发布了一个jQuery插件:https://github.com/charlycoste/xhtml-video
还有一个演示:http://demo.ccoste.fr/video
实际上,这比使用HTML5标签要弱大得多,但至少...它可以工作!
解决方案依赖于javascript和canvas,但可以通过使用<object>
标签来优雅地降级(这就是我的jQuery插件所做的)。
我所做的事情实际上很简单:
我在内存中创建了一个新的video元素(不是标签),但我没有将其添加到DOM文档中:
var video = document.createElement('video');
我在内存中创建了一个新的canvas元素,但我没有将其添加到DOM文档中:
var canvas = document.createElement('canvas');
我创建了一个新的img元素,并且将它添加到了DOM中。
// var parent = ... ;
// var width = ...;
// var height = ...;
var img = document.createElement('img');
img.setAttribute('width', width);
img.setAttribute('height', height);
parent.appendChild(img);
当视频正在播放(video.play())时,我让它在画布上绘制每一帧(画布不可见,因为没有添加到DOM中 - 这使得DOM保持有效的xhtml 1.0文档)
canvas.getContext("2d").drawImage(video, 0, 0, width, height);
最后,我使用canvas元素的toDataURL()方法获取帧的base64编码图像,并将其放置在img元素的src属性中。
img.setAttribute('src', canvas.toDataURL());
img
DOM元素中。因此,您可以使用浏览器的HTML5功能播放视频,但无需HTML5文档。<object>
行为(通常情况下...浏览器将寻找像VLC等插件...)<object>
标记内提供的替代内容。canvas.toDataURL('image/jpeg', quality)
其中quality
是0到1之间的值。