这是一个旧线程,所以我不确定以下内容会有多大用处。
Mozilla 开发者笔记指出:
负值 [forplaybackRate] 当前不向后播放媒体。
Chrome 也是如此,但 Mac 上的 Safari 可以。
w3c 的这个页面非常适合观察和理解事件:
http://www.w3.org/2010/05/video/mediaevents.html
我采用了您提到的 jsfiddle,并为快进/快退速度添加了一些额外的控件:
http://jsfiddle.net/uvLgbqoa/
然而,虽然这对我来说适用于 Chrome/Firefox/Safari,但我应该指出它并不能真正解决您的关键问题。
首先,该方法假设负播放速率不起作用(在我写这篇文章时,这在很大程度上是真实的 AFAICS)。相反,它通过计算和设置视频中的当前时间来伪造它:
function rewind(rewindSpeed) {
clearInterval(intervalRewind);
var startSystemTime = new Date().getTime();
var startVideoTime = video.currentTime;
intervalRewind = setInterval(function(){
video.playbackRate = 1.0;
if(video.currentTime == 0){
clearInterval(intervalRewind);
video.pause();
} else {
var elapsed = new Date().getTime()-startSystemTime;
log.textContent='Rewind Elapsed: '+elapsed.toFixed(3);
video.currentTime = Math.max(startVideoTime - elapsed*rewindSpeed/1000.0, 0);
}
}, 30);
}
Chrome 可以无缝地处理这个问题,甚至可以播放音频片段。
其次,我认为您想在页面加载后立即反向播放视频。我无法想象一个用例,但我看到的第一个问题是整个视频需要在播放之前下载,所以你需要等待 - 但在你开始播放之前可能不会下载. 因此,您可以将 设置currentTime
为接近尾声并等待canPlay
事件,然后开始反向播放。即使这样,这似乎也很尴尬。
我认为有这些广泛的选择:
1) 使用原生视频小部件而不是 HTML。我猜测(不检查)本机 API 支持反向播放。
2)生成正确的反转视频并正常播放。例如,在某处的服务器上使用类似fmpeg
反转视频的程序。然后您的应用程序会下载视频并正常播放,这在用户看来就像反向。
假设有一个应用程序在加载时反向播放视频确实有意义,那么我个人会选择#2。