我正在使用YouTube iframe API来获取视频的当前时间。问题是getCurrentTime((给出了一个十进制数字,而不是你在iframe播放器上看到的时间。
<html>
<body>
<div id="player"></div>
<script>
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('player', {
height: '390',
width: '640',
videoId: 'PkZNo7MFNFg',
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
function onPlayerReady(event) {
event.target.playVideo();
}
function onPlayerStateChange(event) {
console.log(player.getCurrentTime());
}
</script>
</body>
</html>
有没有办法获得视频播放器上显示的时间?
您可以使用此脚本将十进制时间转换为正常时间:
function minTommss(minutes){
var sign = minutes < 0 ? "-" : "";
var min = Math.floor(Math.abs(minutes));
var sec = Math.floor((Math.abs(minutes) * 60) % 60);
return sign + (min < 10 ? "0" : "") + min + ":" + (sec < 10 ? "0" : "") + sec;
}
或者使用moment.js:
function formatMinutes(mins){
return moment().startOf('day').add(mins, 'minutes').format('m:ss');
}
根据APIgetCurrentTime()
返回自视频开始播放以来所用的时间(以秒为单位(。
我想明白了。这是给其他可能有一天需要做这件事的人的。记住时间是以秒为单位的。
function convertTime(time){
let hours = time/3600;
let minutes = (hours - Math.floor(hours)) * 60;
let seconds = time % 60;
hours = Math.floor(hours);
minutes = Math.floor(minutes);
seconds = Math.floor(seconds);
if ((minutes + "").length == 1){
minutes = "0" + minutes;
}
if ((seconds + "").length == 1){
seconds = "0" + seconds;
}
return hours + ":" + minutes + ":" + seconds;
}