我想在网页中嵌入视频。
我不想使用闪存,因为它不适用于大量平台。
我不愿意使用 HTML5,因为它还不是太标准(它是标准的,但大多数人没有支持它的浏览器)
还有其他方法吗?还是我应该坚持使用 HTML5 和一个巨大的横幅告诉人们升级他们的浏览器?
我想在网页中嵌入视频。
我不想使用闪存,因为它不适用于大量平台。
我不愿意使用 HTML5,因为它还不是太标准(它是标准的,但大多数人没有支持它的浏览器)
还有其他方法吗?还是我应该坚持使用 HTML5 和一个巨大的横幅告诉人们升级他们的浏览器?
有几种方法可以将 HTML5 视频与不支持的浏览器的后备结合起来。已经展示了一些具体的解决方案。
一个例子是Camen Design 的Video for Everyone,它符合 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
我解决了这个问题,因为我对 xHtml+RDFa 非常感兴趣,并且我找到了一种在 HTML5 浏览器上播放 xHtml 1.0 严格文档中的视频而不会阻止非 HTML5 浏览器的方法。
我在这里发布了一个 jQuery 插件:https ://github.com/charlycoste/xhtml-video
这里有一个演示:http: //demo.ccoste.fr/video
实际上,这比使用 HTML5 标记要弱得多,但至少……它有效!
该解决方案依赖于 javascript 和 canvas,但可以通过使用<object>
标签来优雅地降级(这就是我的 jQuery 插件所做的)。
我做的其实很简单:
我在内存中创建了一个新的视频元素(不是标签),但我没有将它添加到 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()
(
canvas.getContext("2d").drawImage(video, 0, 0, width, height);
最后我使用元素的toDataURL()
方法,canvas
获取帧的base64编码图像,并将其放到元素的src
属性中img
。
img.setAttribute('src', canvas.toDataURL());
通过这样做,您可以让 javascript 对象从 DOM 中播放视频并将每一帧推送到img
DOM 元素中。因此,您可以使用浏览器的 HTML5 功能播放视频,而无需 HTML5 文档。
如果浏览器没有 HTML5 功能,或者如果它不能处理使用的编解码器,它将退回到本机<object>
行为(一般......浏览器会寻找像 VLC 之类的插件......)
如果无法播放视频(没有插件),<object>
将使用标签内提供的替代内容。
性能方面:因为它会导致非常高的消耗过程,播放可能会闪烁......为了避免这种情况,您可以通过这种方式使用 jpeg 压缩来降低渲染质量:canvas.toDataURL('image/jpeg', quality)
其中quality
是 0 和 1 之间的值。
为什么你认为很多大型网站都使用 Flash 播放视频?可能不是因为它不可用……当然,在网页中嵌入视频内容还有其他选择,但如果可用性是一个问题,Flash 是目前最好的方法。