Можно попробовать сделать «высокочастотный» таймер используя вот это
gist.github.com/2802407 а еще лучше сделать таймер в воркере на основе setInterval, который будет слать в окно postMessage без лагов таймера.
Можно еще попробовать сделать хак с play() pause(): play(), таймаут 20мс и pause(), чтение кадра.
Однако ни один из способов не застрахован от долгих циклов дольше 1000/FPS. Самый надежный способ — декодировать видео в воркере бинарно :(
Количество проигранных кадров можно узнать только у FF
developer.mozilla.org/en-US/docs/DOM/HTMLVideoElement