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>

демо: http://jsfiddle.net/dirtyd77/sZVAq/2/