2011-02-10 9 views
5

Zastanawiam się, jak zatrzymać odtwarzacz MediaElement.js na końcu wideo. Zastanawiałem się, jak zatrzymać odtwarzacz mediaelement.js na końcu filmu. Miałem nadzieję, że zatrzymam ostatnią klatkę i nie przewijam do tyłu, aby pokazać pierwszą klatkę, tak jak teraz.Zatrzymanie zamiast przewijania na końcu pliku wideo w MediaElement.js

Czy można zmienić to zachowanie?

+0

mam złożony [problem na GitHub requ est, że do tego dodano opcję] (https://github.com/johndyer/mediaelement/issues/546). –

Odpowiedz

3

Uważam, że domyślnym zachowaniem elementu <video> jest powrót do początku, więc trzeba go zastąpić, słuchając zakończonego zdarzenia.

var player = $('#myvideo').mediaelementplayer(); 

player.media.addEventListener('ended', function(e) { 
    player.media.setCurrentTime(player.media.duration); 
}, false); 

Mam nadzieję, że pomoże!

+0

Cześć John - wielkie dzięki za odpowiedź. Umieściłem twój kod wewnątrz wewnątrz elementu na moim filmie. Aby upewnić się, że rozumiem, #myvideo to element div zawierający film wideo na stronie. Zmieniłem nazwę, aby odzwierciedlała identyfikator #div, którego użyłem. Nadal jest przewijany do początku. Czy zrobiłem coś złego? - dzięki - Don –

+0

OP próbował odpowiedzieć na tę odpowiedź, zadając nowe pytanie [tutaj] (http://stackoverflow.com/questions/4996510/still-trying-to-stop-video-from-rewinding-in -mediaelement-js). – Pops

1

Kod z John Dyer's answer nie zadziałał dla mnie z jakiegoś powodu. Byłem jednak w stanie uzyskać tę wersję roboczą ...

var videoPlayer = new MediaElementPlayer('#homepage-player', { 
    loop: false, 
    features:[], 
    enablePluginDebug: false, 
    plugins: ['flash','silverlight'], 
    pluginPath: '/js/mediaelement/', 
    flashName: 'flashmediaelement.swf', 
    silverlightName: 'silverlightmediaelement.xap', 

    success: function (mediaElement, domObject) { 
     // add event listener 
     mediaElement.addEventListener('ended', function(e) { 
      mediaElement.pause(); 
      mediaElement.setCurrentTime(mediaElement.duration); 
     }, false); 
    }, 
    error: function() { 
    } 

}); 

videoPlayer.play(); 

Jedyny problem mam - co jest bardzo frustrujące, to jest migotanie pomiędzy ostatnim i pierwszym klatek w Chrome. W przeciwnym razie działa zgodnie z oczekiwaniami w przeglądarce Firefox i IE ...

3

Prawdopodobnie najlepszym rozwiązaniem jest, aby się nie bać i usunąć procedurę obsługi "przewijania do początku na wideo" ze źródła mediaelement.

Jeśli przejdziesz do kodu źródłowego dla media-end i wyszukasz "zakończone", w końcu zobaczysz, że przewijanie po dotarciu do końca filmu jest faktycznie wykonywane celowo przez mediaement.

Jeśli chcesz usunąć tę funkcjonalność, po prostu usuń ten program obsługi dla "zakończonego" zdarzenia ze źródła mediaement. To rozwiązuje wszystkie problemy, w tym migotanie pomiędzy ostatnią i pierwszą klatką, wspomniane w kilku innych odpowiedziach na to pytanie.

+0

Aby to zrobić, edytuj "mediaelement-and-player.min.js" i edytuj media.addEventListener ("zakończono", function() {try {c.media.setCurrentTime (0)} catch (h) {} .... skomentuj c.media.setCurrentTime (0) do /*c.media.setCurrentTime(0)*/ –

8

Napisałem poprawkę dla tego problemu i John połączył się w wersji 2.10.2. Istnieje teraz opcja "autoRewind", którą można ustawić na false, aby uniemożliwić graczowi powrót do początku. Lista zdarzeń nie została dodana i nie ma już potrzeby jej usuwania.

$('video').mediaelementplayer({ 
    autoRewind: false 
}); 
+0

Dobrze, cieszę się, że istnieje teraz uniwersalne rozwiązanie. – amustill

0

Ten problem mam do czynienia podczas odtwarzania plików audio

Problem jest w grze, gdy wstrzymać odtwarzacza plik przestanie ale przed wznowieniem trzeba zmniejszyć aktualny czas odtwarzacza przez dowolny wartość w danym przypadku można zmniejszyć go przez ramie może

po ustawieniu źródło, ładuje plik i wstrzymywanie następnie

myplayer.player.play(); 
    var currentTime = myplayer.player.getCurrentTime(); 
    myplayer.player.setCurrentTime(currentTime-0.1); 
    myplayer.player.setCurrentRail(); 
Powiązane problemy