2013-10-10 25 views
0

看到我自己的答案,讓它工作!是否有任何方法/ API與<object>播放視頻進行交互?

我正在使用video.js在網站上播放視頻,這也將不得不脫機工作,因此無法使用閃光燈。由於video.js使用Flash後備,我寫了自己的。

在IE8例如和對象被創建:

<OBJECT codeBase="http://www.microsoft.com/Windows/MediaPlayer/" classid=CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95 width=660 height=418 type=application/x-oleobject> 
<embed src="Videos/Aktionen_Coffee-Stop/Teaser_Coffee-Stop.wmv" type="application/x-mplayer2" enabled="1" showstatusbar="1" ShowControls="1" ShowStatusBar="0" ShowDisplay="0" autostart="true" width="660" height="418" scale="tofit"></embed></OBJECT> 

這工作完全正常和對象呈現一個視頻播放器(Windows媒體播放器,即RESP的QuickTime在舊的Mac OS/Safari瀏覽器的版本)。

JavaScript有什麼方法可以讓這個視頻播放停止,重播,激發一個「結束」的事件嗎?

編輯:even when looking at these "docs" - 如何freakin創建一個Player對象?人們如何創建這樣的文檔?認真MS ...

更新

var wmp = $('#wmp').get(0); 

setTimeout(function() { 

    console.log(wmp.Controls.currentPosition()); 
    wmp.Stop(); 
}, 2000); 

wmp.stop()的工作,但wmp.Controls.controls總是拋出一個錯誤。我只想知道視頻何時結束。

回答

0

好吧,我發現了一些非常奇怪的東西(誰會猜到,它的MS)。

首先,我總是收到Player.controls不可用的錯誤。也許這跟我在"docs"中描述的CLASSID="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6"中的CLASSID="CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95"在我的代碼中有關。這是因爲使用任何其他classid都會導致wmp無法加載/播放視頻,所以我不得不使用該classid。

var player = document.getElementById("player"); 

所以,無論我做什麼,任何objects listed here的都不在我的球員對象可用,像player.controlsplayer.media,他們沒有。

所以我試圖只記錄整個玩家對象,看看實際上有什麼:console.log(player)。 IE8,真棒,它優雅地印在日誌中:[object]。真是一個驚喜,真的。調試不起作用(它怎麼可能......)。所以,我做了一個for (a in player)日誌:) IE崩潰。真棒。

奇怪的是,在打開一個新標籤之後,控制檯出現了所有的日誌。我發現了,這是奇怪的,但真棒,因爲工作,現在的一部分:所有的屬性,方法和東西直接放入播放器var,所以它不是player.controls.currentPosition而是player.currentPosition。 Booya。

這是我的工作代碼:

var obj = '<object id="wmp" CLASSID="CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95" TYPE="application/x-oleobject" width="' + parseInt(parsed.width) + '" height="' + (parseInt(parsed.height) + 0) + '" codebase="http://www.microsoft.com/Windows/MediaPlayer/">'; 
.. 
obj += '</object>'; 

$('#wrapper').html(obj); 

var wmp = document.getElementById("wmp"); 

wmp.attachEvent('playStateChange', function(a) { 
    if (a == 8 || a === 0 || a === '0' || parseInt(a) === 0 || a == 'MediaEnded') { 
     // check if playback has really finished 
     var cpos = wmp.currentPosition, 
      dur = wmp.duration; 

     if (dur - cpos >= dur - 0.1) { 
      console.log('the video has ended'); 
     } 
    } 
}); 

This page here suggests使用狀態,8日當視頻完成播放這實際上從來都是8,永遠。這是相當隨機0,2或3.大多數爲0.

希望這可以幫助任何人!

-1

WMV播放器在視頻結束後重新開始播放的JavaScript API ..

document.getElementById("Player").attachEvent("PlayStateChange",function(newState) { 
     if(newState == "1") // stopped, restart playback paused at 3 seconds 
     { 
      document.getElementById("Player").controls.play(); 
      document.getElementById("Player").controls.pause(); 
      document.getElementById("Player").controls.currentPosition = "3"; 
     } 
    }); 
+0

如果你會讀,它不工作:) – Alex

+0

這的確行得通......我自己測試了一下。我必須在這裏工作有多難? – TheProdigy

相關問題