2013-05-01 87 views
4

好吧所以我試圖利用video.js項目,因爲它看起來很神奇! 反正,即時編寫我的第一個腳本,可以與下面找到的api交互。它基本上只是應該輸出當前播放時間到div current_time,視頻標記的ID是my_stream反正這裏是我所有的javascript ...我的問題是playLength=0和當前時間永遠不會更新視頻播放時,並保持在0(即是從來沒有更多的則0)林不知道做什麼,我錯了......這裏的API規則我也跟着在這裏也可以找到從誰的實施任何與API或者只是看到任何一個video.js api docs使用video.js api持續時間調用返回0而視頻更長

function current_time(){ 
_V_("my_stream").ready(function(){ 

var myPlayer = this; 

// EXAMPLE: 

var playLength = myPlayer.duration(); 

do 
    { 
    var position = myPlayer.currentTime(); 
    var myTextArea = document.getElementById('time_count'); 
    myTextArea.innerHTML = position; 
    } 
    while(position < playLength); 


    }); 

} 

window.onload = current_time 

anyhelp我已經做了一些愚蠢的事情將不勝感激,謝謝!

回答

4

在播放開始之前,您將分配持續時間至playLength。如果在分配時它爲零,則它將保持爲零。檢查API doc中的註釋「注意:視頻必須在可以知道持續時間之前開始加載,對於Flash,在視頻開始播放之前可能不知道。」

看起來你只關心視頻播放時的工作時間。只是使用timeupdate事件會更好。

var myPlayer; 
var myTextArea = document.getElementById('time_count'); 

videojs('my_stream').ready(function(){ 
    myPlayer = this; 
    myPlayer.addEvent('timeupdate', onProgress); 
}); 

function onProgress() { 
    myTextArea.innerHTML = myPlayer.currentTime(); 
} 

的DOM加載後這應該執行(與在window.onload,或jQuery的$(文件)。就緒()),或者去一個腳本標記在體內的視頻和#time_count元素之後。

+0

嘿感謝您的幫助!我試過你提供的代碼,但它仍然不工作...原因似乎是,雖然我的標籤是'

+0

此問題是在視頻元素存在之前執行的代碼。 (儘管video.js更改了ID,但它會跟蹤它,所以這不是真正的問題)。將代碼放在主體底部的腳本標記中,或者使用window.onload或者如果您使用jQuery,$(document).ready()。 – misterben 2013-05-02 11:30:13

+0

好吧,有道理,謝謝! – brendosthoughts 2013-05-02 20:19:50

0

我已經解決了這個問題,通過修改我寫的代碼bymyself排序,因此它現在的作品像這樣

function current_time(){ 
_V_("my_stream").ready(function(){ 
    var myPlayer = this; 
    var playLength = myPlayer.duration(); 
    var position = myPlayer.currentTime(); 
    var myTextArea = document.getElementById('time_count'); 
    myTextArea.innerHTML = position + "/" + playLength; 
    t=setTimeout(function() {current_time()},2000); 
}); 
} 

...雖然看起來愚蠢的時間可持續輪詢時間,我居然不在開發過程中需要這個價值,但是現在一旦播放視頻,兩者都可以正確填充,所以這是一種解決方案。我不打算除了我自己的答案馬上看看是否有人可以解決這個更好的方式,或者如果你可以解釋爲什麼video.js改變id標籤以及如何正確處理它,我會給你一個up如果一切都對我有意義,請投票並接受你的回答。