的Youtube视频API
我已经使用在JavaScript的Youtube视频API
YouTube视频的API和播放暂停和停止事件我已经使用
现在,我得到其所占比重合计观看时间, 但我的主要问题总电流时间是这样的:
观看视频几秒钟快进,然后再观看几秒钟,看看它是什么时间记录....如果我观看视频5秒,然后快进到第10分钟,然后观看另外5秒,我实际观看视频的时间是10秒,而不是10分钟。
这里是我的代码:
function onytplayerStateChange(event)
{
//alert("Status=>"+event.data);
if(event. data == 1) {
if(Math.floor(event.target.A.currentTime) == 0) {
previous_track_time = current_track_time = 0;
total_track_time = event.target.A.duration;
} else {
previous_track_time = current_track_time;
current_track_time = event.target.A.currentTime;
}
}
if(event.data == 2)
{
current_track_time = event.target.A.currentTime;
total_track_time =(event.target.A.duration-(current_track_time-previous_track_time));
previous_track_time = current_track_time;
}
}
你能解决这个问题吗?
如果您只希望用户在视频中观看的时间,则需要使用计数器。 我也简化你的代码。
功能onPlayerStateChange:
function onPlayerStateChange(event) {
if (event.data == YT.PlayerState.PLAYING) {
//player play
timer = setInterval(
function() {
seconds++;
console.log("you watch: "+ seconds +" seconds of the video");
}, 1000
);
} else {
//player pause
clearInterval(timer);
}
}
输出:我看到只有8秒的视频,则首4秒,4秒在2:03
有一个live example(已更新)
的完整代码:
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
// 3. This function creates an <iframe> (and YouTube player)
// after the API code downloads.
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('player', {
height: '390',
width: '640',
videoId: 'l-gQLqv9f4o',
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
// 4. The API will call this function when the video player is ready.
var seconds = 0;
var timer;
function onPlayerReady(event) {
event.target.playVideo();
}
function onPlayerStateChange(event) {
if (event.data == YT.PlayerState.PLAYING) {
//player play
timer = setInterval(
function() {
seconds++;
console.log("you watch: "+ seconds +" seconds of the video");
}, 1000
);
} else {
//player pause
clearInterval(timer);
}
}
function stopVideo() {
player.stopVideo();
}
你好,我只需要总视频观看时间。就像如果视频的总时间是50秒并且用户从0秒到10秒开始观看,则在用户将视频从10秒快速前进到20秒之后,继续结束视频,因此总观看时间是40,因为用户已经从10秒跳到20秒。现在我希望现在你明白我需要什么。 – user3232409 2014-10-02 10:10:37
@ user3232409我更新了我的答案(代码,现场示例...)一个很好的问题! :)至少, – mpgn 2014-10-02 14:56:42
@ user3232409,您可以接受未来观众的答案。 – mpgn 2014-10-05 09:14:24
因为您观看视频的10秒。没有代码,很难帮你 – mpgn 2014-10-02 08:16:01
函数onytplayerStateChange(event){ //alert ("Status=>"+event.data); 如果(事件数据== 1) { 如果(Math.floor(event.target.A.currentTime)== 0){ previous_track_time = current_track_time = 0; total_track_time = event.target.A.duration; } else { previous_track_time = current_track_time; current_track_time = event.target.A.currentTime; } } 如果(event.data == 2){ current_track_time = event.target.A.currentTime; total_track_time =(event.target.A.duration-(current_track_time-previous_track_time)); previous_track_time = current_track_time; } – user3232409 2014-10-02 08:20:41
@martialdidit我已经添加了验证码,请检查一下,请帮助我 – user3232409 2014-10-02 08:21:41