HTML5 video - currentTime not setting properly on iPhone -


i have basic html 5 video set load 1 of 4 videos. problem i'm having when load next video continues playing previous time position. efforts set currenttime property seem either short lived or ignored entirely.

i have added listeners collection of events , have in each one;

myplayer.addeventlistener("loadeddata", function() {         console.log(" loadeddata: before = " + myplayer.currenttime);         myplayer.currenttime = 0.1;         console.log(" loadeddata: after = " + myplayer.currenttime);     }, false); 

sometimes see time change 1 event not persist correctly;

durationchange: before = 19.773332595825195 durationchange: after = 0.10000000149011612  loadedmetadata: before = 0.10000000149011612 loadedmetadata: after = 19.773332595825195  loadeddata: before = 19.773332595825195 loadeddata: after = 0.10000000149011612  canplay: before = 0.10000000149011612 canplay: after = 19.773332595825195 

and never seems set @ all;

durationchange: before = 50.66666793823242 durationchange: after = 50.66666793823242  loadedmetadata: before = 50.66666793823242 loadedmetadata: after = 50.66666793823242  loadeddata: before = 50.66666793823242 loadeddata: after = 50.66666793823242  canplay: before = 50.66666793823242 canplay: after = 50.66666793823242 

this seems similar issue here html5 video - not setting current time there didn't seem resolution. has encountered issue on iphone before?

from findings issue seems on iphone (ipad works fine) currenttime property not set correctly until "canplaythrough" event, changing currenttime @ point cause noticeable hiccup. solution intentionally pause video after calling load...

myvideo.load(); myvideo.pause();         

...and call play in event when time has reset.

the second problem when duration of new movie shorter currenttime position. in case not currenttime fail set "canplaythrough" never called, , qt sits @ end of video doing nothing.

i discovered solution both problems force secondary load if currenttime not reset in event before "canplaythrough". bit round timer callback seems trick;

var myvideo = document.getelementbyid("video1");   myvideo.addeventlistener("canplay", function() {     console.log(" canplay: before = " + myvideo.currenttime);     myvideo.currenttime = 0.1;     console.log(" canplay: after = " + myvideo.currenttime);      if( myvideo.currenttime < 1 ) {         myvideo.play();     }     else {         myvideo.load();         myvideo.pause();         settimeout(checkstarted, 500);     } }, false);  function checkstarted() {      console.log(" checkstarted called");     myvideo.play(); } 

Comments

Popular posts from this blog

c# - Send Image in Json : 400 Bad request -

jquery - Fancybox - apply a function to several elements -

An easy way to program an Android keyboard layout app -