2011-05-12 9 views
59

Próbuję odtworzyć wideo HTML5 (kodowane VP8). To, czego chcę, to grać na określonej pozycji. Powiedzmy, że w czasie 50 sekund naprzód.Rozpocznij wideo HTML5 w określonej pozycji podczas ładowania?

Próbowałem, ale wydaje się, że jest jakiś problem. Czy możesz zasugerować, że coś jest nie tak?

Oto kod:

<video id="vid1" width="640" height="360"> 
     <source src="file.webm" type="video/webm" /> 
     Your browser does not support the video tag. 
    </video> 
    <script> 
     document.getElementById('vid1').currentTime = 50; 
    </script> 

Próbowałem, ale to nie działa. Po załadowaniu wideo rozpoczyna się odtwarzanie od początku. Jednak jeśli zadzwonię do tego podczas odtwarzania, tak jak po pewnym czasie, odtwarzanie wideo działa dobrze. Czy jest coś, czego mi brakuje?

+2

jakich przeglądarek? Czy próbowałeś opóźnić połączenie o kilka milisekund? Być może trwa to trochę dłużej, aby w pełni załadować element wideo – Andre

Odpowiedz

89

Musisz poczekać, aż przeglądarka będzie znała czas trwania wideo, zanim będzie można wyszukać w określonym czasie. Tak, myślę, że chcesz czekać na „loadedmetadata” zdarzenie tak:

document.getElementById('vid1').addEventListener('loadedmetadata', function() { 
    this.currentTime = 50; 
}, false); 
+0

dziękuję bardzo, działało dobrze w chromie. – Johnydep

+0

Funkcja NICE. Wszystko w jednym ... –

+2

To nie działa w Safari. Próbowałem również zdarzenia loadeddata. Jakieś pomysły? –

36

można połączyć bezpośrednio z Media Fragments URI, wystarczy zmienić nazwę pliku do file.webm # t = 50

Here's an example

To jest całkiem fajne, możesz robić różne rzeczy. Ale nie znam aktualnego stanu obsługi przeglądarki.

+0

Obsługa przeglądarki jest dobra. Myślę, że wszystkie przeglądarki obsługujące HTML5 obsługują przynajmniej podstawowe czasowe fragmenty multimediów. –

+1

nieobsługiwany w IE, duży problem. –

+0

@ichaelhanon, byłoby raczej łatwo napisać polyfill dla IE, aby to osiągnąć. Wykryj przeglądarkę, jeśli nie jest ona obsługiwana, podziel adres URL, znajdź parametr zapytania, użyj JavaScript, aby zmienić czas wideo ... Mogę to zrobić, jeśli dostanę szansę – gdgr

2

Na Safari Mac dla źródła HLS, potrzebowałem użyć zdarzenia loadeddata zamiast zdarzenia metadanych.

+0

Myślę, że loadmetadata ma być właściwym wydarzeniem, ale ja też uzyskiwałem seekable.length 0 (tylko w Safari na OSX), chyba że słuchałem dataloaded. Dzięki – Statuswoe

+1

Dlaczego zostało to odrzucone? Prawdopodobnie nie jest to bezpośrednio związane z przykładem dostarczonym przez PO, ale jest w rzeczywistości trafne i istotne dla ogólnego tematu pytania. – JayPea

25

dostosować czas rozpoczęcia i zakończenia wideo w przypadku używania tagu wideo w html5;

http://www.yoursite.com/yourfolder/yourfile.mp4#t=5,15

gdzie lewo od przecinka jest czas rozpoczęcia w sekundach, w prawo od przecinka jest czas zakończenia w sekundach. upuść przecinek i godzinę zakończenia, aby uzyskać tylko czas rozpoczęcia.

+0

Druga cyfra wydaje się nie kończyć, ile wideo zostało załadowane na początek ... pierwsza cyfra zaszła. jakieś pomysły? – Martian2049

3

Użycie fragmentu #t=10,20 zadziałało dla mnie.

+1

Nieobsługiwane w IE !!!!!! –

+0

Druga cyfra wydaje się nie kończyć, ile wideo zostało załadowane na początek ... pierwsza cyfra zaszła. jakieś pomysły? – Martian2049

25

BEZ użyciu JavaScript

Wystarczy dodać #t=[(start_time), (end_time)] na końcu adresu URL mediów. Jedyną porażką (jeśli chcesz to zobaczyć w ten sposób), musisz wiedzieć, jak długo film ma wskazywać czas zakończenia. Przykład:

<video> 
    <source src="splash.mp4#t=10,20" type="video/mp4"> 
</video> 

Uwagi: Nie jest obsługiwany w IE

+1

Nie obsługiwane w IE !!!!!! –

+1

Potwierdzone nie działa w IE == Wydaje Explorer –

+0

druga cyfra wydaje się nie kończyć, ile wideo został załadowany na początek ... pierwsza cyfra pracował tho. jakieś pomysły? – Martian2049

Powiązane problemy