jQuery, почему перемотка playbackRate не работает?
Я получил быстрый вперед playbackRate работать нормально. Теперь я пытаюсь перемотать часть с отрицательным числом, но это не работает. В w3school говорят использовать отрицательное число, чтобы перемотать его. http://www.w3schools.com/tags/av_prop_playbackrate.asp Кто-нибудь может сказать мне, что я сделал не так?
здесь мой javascript работал с кодом для быстрой перемотки вперед,
$("#speed").click(function() { // button function for 3x fast speed forward
video.playbackRate = 3.0;
});
тогда тут не успех перемотки кода,
$("#negative").click(function() { // button function for rewind
video.playbackRate = -3.0;
});
3 ответов
не похоже, что есть полная поддержка браузера для опции скорости воспроизведения, что касается перемотки назад. Вы можете подделать его, используя setinterval
и вычитая currentTime
видео.
var video = document.getElementById('video');
var intervalRewind;
$(video).on('play',function(){
video.playbackRate = 1.0;
clearInterval(intervalRewind);
});
$(video).on('pause',function(){
video.playbackRate = 1.0;
clearInterval(intervalRewind);
});
$("#speed").click(function() { // button function for 3x fast speed forward
video.playbackRate = 3.0;
});
$("#negative").click(function() { // button function for rewind
intervalRewind = setInterval(function(){
video.playbackRate = 1.0;
if(video.currentTime == 0){
clearInterval(intervalRewind);
video.pause();
}
else{
video.currentTime += -.1;
}
},30);
});
Я также добавил несколько дополнительных слушателей для кнопки воспроизведения и паузы, чтобы очистить интервал. Возможно, вы захотите изучить возможность переключения на быстрые кнопки foward и rewind.
убедитесь, что вы тестируете в поддерживаемом браузере. Я только нашел, что он работает на IE10 (хотя это довольно небрежно)
попытка установить отрицательное значение в IE9 заставляет видео приостановить (устанавливает в 0)
он должен работать в chrome в соответствии с w3schools, но мне не повезло там
-
должен работать и на Safari, хотя я не тестировал
Это еще один пример w3school.com предоставление ложной информации. Они забыли указать, что:
когда элемент имеет текущий контроллер мультимедиа, playbackRate атрибут игнорируется и playbackRate текущего контроллера мультимедиа используется вместо этого.
источник: http://www.w3.org/TR/html5/embedded-content-0.html#playing-the-media-resource
после некоторых тестирование с помощью демо, оказывается, когда медиа-контроллер присутствует,playbackRate
должно быть больше или равны 0. Если video.playbackRate < 0
, Он просто не будет играть.
Это означает, что вы не можете "перематывать" с помощью playbackRate
когда медиа-контроллер присутствует. Тем не менее, вы можете перемотать видео, сделав что-то вроде :
var _el = document.getElementById("video");
_el.currentTime -= 5;
демо: http://jsfiddle.net/dirtyd77/sZVAq/3/
или
<button onclick='video.currentTime-=5'>Rewind</button>