查看我自己的答案,让它正常运作!
我使用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媒体播放器,即旧版mac / safari版本中的快速时间)。
在JavaScript中是否有任何方法可以播放此视频以停止,重放,触发“已结束”的事件?
编辑:even when looking at these "docs" - 如何创建一个Player对象?人们如何创建这样的文档?认真的MS ......
更新
var wmp = $('#wmp').get(0);
setTimeout(function() {
console.log(wmp.Controls.currentPosition());
wmp.Stop();
}, 2000);
wmp.stop()
可行,但wmp.Controls
或.controls
始终会抛出错误。我只想知道视频何时结束。
答案 0 :(得分:0)
好的,我发现了一些非常奇怪的东西(谁会猜到,它的MS)。
首先,我总是遇到Player.controls不可用的错误。可能与我有关,我在代码中使用CLASSID="CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95"
而不是CLASSID="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6"
中描述的"docs"
。这是因为使用任何其他classid会导致wmp无法加载/播放视频,因此我必须使用该classid。
var player = document.getElementById("player");
所以,无论我做了什么,我的播放器对象中都没有任何objects listed here,例如player.controls
或player.media
,没有。{/ p>
所以我试着记录整个玩家对象,看看究竟是什么: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 :(得分:-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";
}
});