2013-11-27 6 views
10

Ich habe ein Video in der Mitte meiner HTML. Wie Sie zunächst sehen kann habe ich keine QuelleProblem Einstellung currentTime in HTML5 Video

<video id="videoPrincipal" src="" width="640" height="360" controls preload></video> 

Wenn ich auf eine Schaltfläche klicken ich eine Funktion auslösen, der macht:

myVid = document.getElementById('videoPrincipal'); 
myVid.src = 'video.mp4'; 
myVid.play(); 
myVid.currentTime ='5'; 

Das Video richtig beginnt zu spielen, aber ich kann nicht die aktuelle Uhrzeit einstellen (und ich machte das gleiche wie wir in http://www.w3schools.com/tags/av_prop_currenttime.asp sehen können)

Es gibt mir den gleichen Fehler, wenn ich die currentTime vor dem Aufruf der Wiedergabe-Funktion einstellen.

Der Fehler, der mich in der Konsole zeigt, ist folgender: "Uncaught InvalidStateError: Es wurde versucht, ein Objekt zu verwenden, das nicht oder nicht mehr verwendbar ist." (in der currentTime-Zeile), aber wenn ich dieses Problem suche, kann ich nicht mit Video, nur mit Leinwand verbinden.

Vielen Dank im Voraus

Antwort

20

Sie muss nicht warten, bis es zu spielen beginnt, aber es muss bereit sein zu spielen. Es gibt das canplay Ereignis, das zu tun, so etwas wie dies funktionieren soll:

myVid.play(); 
myVid.addEventListener('canplay', function() { 
    this.currentTime = 5; 
}); 
+0

Danke, löste es mein Problem !! – Yises

+0

Das hat mich verrückt gemacht. Das ist es behoben. Vielen Dank. – JamesNZ

+0

Das ist großartig, und canplay wird von allen Browsern unterstützt, die das Video-Tag unterstützen. – nycynik

-1

Sie müssen warten, bis es zu spielen bereit ist,
dh sie play nicht erwarten, dass eine Sperrfunktion
Ändern Sie Ihren Code wie folgt aussehen:

myVid.play(); 
myVid.media.addEventListener('playing', function(){ 
    myVid.setCurrentTime(5); 
}); 
0
video = document.getElementById('video'); 
begin_play = 50; 
play_video_first = true; //if you want to run only first time  
video.addEventListener("play", capture, false); 

function capture(event) 
{ 
    if (event.type == "play"){ 
     if(play_video_first){ 
      play_video_first = false; 
      video.currentTime = begin_play; 
      } 
    } 
} 
0

Wie oben erwähnt, Sie versuchen, current zu setzen, wenn das Video nicht durchsuchbar ist. So, als Alternative Use-Case (Zeit auf 0 zurückgesetzt, wenn ein Benutzer auf eine Schaltfläche klickt, zum Beispiel), Sie so etwas wie tun:

function resetVideo() { 
 
    myVid.pause(); 
 
    
 
    if (video.seekable.length > 0) { 
 
    myVid.currentTime = 0; 
 
    } 
 
}

Alternativ können Sie auch versuchen, nur zurücksetzen, wenn das Video zuvor abgespielt wurde.

function resetVideo() { 
 
    myVid.pause(); 
 
    
 
    if (video.currentTime !== 0) { 
 
    myVid.currentTime = 0; 
 
    } 
 
}