捕获VLC Webplugin的MediaPlayerPlaying事件

时间:2012-07-27 03:29:40

标签: javascript events vlc libvlc

我在Chrome上使用VLC Webplugin

<div id="div-vlc" style="display: none;">
    <embed id="vlc" name="vlc" width="640" height="480" pluginspage="http://www.videolan.org" type="application/x-vlc-plugin" />
    <object style="width:0px;height:0px;" classid="clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921" codebase="http://download.videolan.org/pub/videolan/vlc/last/win32/axvlc.cab">    </object>
</div>

尝试捕捉事件以控制游戏:

document.vlc.addEventListener('MediaPlayerPlaying', function() {alert();} )

document.vlc.attachEvent('MediaPlayerPlaying', function() {alert();} ) //crash

像这样的文档说:http://wiki.videolan.org/Documentation:WebPlugin

但事件永远不会被解雇。

有什么问题?

3 个答案:

答案 0 :(得分:1)

只是想建议一下,当dinamically加载时,ASP.NET会对VLC做一些奇怪的事情。

当aspx.cs或ascx.cs中的特定宽度和高度设置为像素时,ASP.NET会在ActiveX中返回错误的宽度和高度属性。样本:

aspx.cs或ascx.cs文件:

myLiteral.Text = @"<object type='application/x-vlc-plugin'  
width='150px' height='100px'  
pluginspage='http://www.videolan.org' version='VideoLAN.VLCPlugin.2' events='True' classid='clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921'>Check activex settings</object>";
客户端是IE8或更高版本时返回

html:

<object type='application/x-vlc-plugin'  
width=0px height=0px style='HEIGHT:0px;WIDTH:0px;TOP:0px;LEFT:0px'  pluginspage='http://www.videolan.org' version='VideoLAN.VLCPlugin.2' events='True' classid='clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921'>Check activex settings</object>

在IE8和IE9中,它仅在第一个VLC ActiveX中发生。在IE10中,它发生在所有VLC ActiveX中。

我的解决方法是在我的VLC加载javascript中使用JQuery:

$(plugin).width(playerWidth);
$(plugin).height(playerHeight);
$(plugin).attr('style', '');

希望它有所帮助:-)

答案 1 :(得分:1)

BTW,https://wiki.videolan.org/Documentation:WebPlugin/中的信息在以后的版本中已过时。

代码库网址“http://download.videolan.org/pub/videolan/vlc/last/win32/axvlc.cab”不再存在......

以下对我来说很好:

<object type='application/x-vlc-plugin' pluginspage='http://www.videolan.org' version='VideoLAN.VLCPlugin.2' id='vlc1' width='100px' height='150px' events='True' classid='clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921'>
    <param name='MRL' value='' />
    <param name='toolbar' value='false' />
    <param name='autoplay' value='false' />
    <param name='loop' value='false' />
    <param name='allowfullscreen' value='true' />
ActiveX not loaded. Check IE settings</object>

使用Javascript:

var plugin = document.getElementById('vlc1');
$(plugin).width(playerWidth);
$(plugin).height(playerHeight);
$(plugin).attr('style', '');
// Add items to plugin.playlist

答案 2 :(得分:0)

一些注意事项:

  • 首先,如果您将其设为“display:none”,它将无效。
  • 其次,嵌入时必须有一个src / target。
  • 最后但并非最不重要的是,对象的大小必须至少为1x1px。

这将提醒回调:

var vlc=document.getElementById('vlc');
vlc.addEventListener("MediaPlayerPlaying", function(event) {alert(event);}, false);
vlc.playlist.play();    

请注意,这适用于Firefox&amp;铬。由于IE使用ActiveX,因此使用另一种表示法。有关完整文档,请访问https://wiki.videolan.org/Documentation:WebPlugin/