How to get frame-accurate currentTime display in the UI Control bar
This article will show you how to display a frame-accurate currentTime on your THEOplayer instance UI control bar. For more information regarding the currentTime itself, please refer to the reference API.
SDKs
Web SDK | Android SDK | iOS SDK | tvOS SDK | Android TV SDK | Chromecast SDK |
---|---|---|---|---|---|
Yes | Yes | Yes | No | Yes | N/A |
Changing the currentTime UI display
At this moment there is no official THEOplayer feature to display a frame-accurate currentTime in the UI Controlbar. The following snippets rewrite the innerHTMLText of the currentTime element.
Web SDK
function secondsToHms(d) {
d = Number(d);
console.log(player.currentTime);
var ms = d % 1;
var h = Math.floor(d / 3600);
var m = Math.floor((d % 3600) / 60);
var s = Math.floor((d % 3600) % 60);
var hDisplay = h < 10 ? "0" + h : h;
var mDisplay = m < 10 ? "0" + m : m;
var sDisplay = s < 10 ? "0" + s : s;
var msDisplay = ms.toFixed(3);
//var msDisplay = d.toPrecision() -player.currentTime.toFixed();
return (
hDisplay +
":" +
mDisplay +
":" +
sDisplay +
"." +
String(msDisplay).split(".")[1]
);
}
setInterval(function () {
document.querySelector(".vjs-current-time-display").innerText = secondsToHms(
player.currentTime
);
}, 1);
player.addEventListener("durationchange", function (e) {
document.querySelector(".vjs-duration").innerText = secondsToHms(
Math.floor(e.duration)
);
});
Android & iOS SDK
This can be done through JavaScript injection: How to add CSS or JavaScript files to an Android/iOS project
Remarks
With the same logic, slightly modified, you could also decide to show the frame number for that second instead of the milliseconds.