Netflix Instant播放器(Silverlight)有没有Javascript API?最好是一个受支持的、有文档的API,但如果只有一个不受支持、没有文档的API也可以;这是为了一个个人项目。
我想能够播放/暂停并跳转到指定时间。
Netflix Instant播放器(Silverlight)有没有Javascript API?最好是一个受支持的、有文档的API,但如果只有一个不受支持、没有文档的API也可以;这是为了一个个人项目。
我想能够播放/暂停并跳转到指定时间。
http://developer.netflix.com/forum/read/54172
我试图在"立即观看"页面上进行搜寻,发现了一些对象,例如netflix.SilverLight和netflix.SilverLight.MoviePlayer(具有getPlugin()方法,返回有关插件的一些详细信息和可挂接事件,但没有控制方法),但它们大多与暴露播放器视口大小有关,以及其他必要的东西来将其放置在页面上。我真的找不到任何对象中的内容表明它们与电影播放器交互,似乎让我可以访问它。
我还获取了播放器二进制文件,并通过其中发现了一个ScriptInterface对象,其中包含PlayMovie()、StopMovie()、ShowCurtain()和HideCurtain()等带有[ScriptableMember]修饰的方法。
然后,我注意到播放器二进制文件中还有另一个名为Netflix.Silverlight.CBPApp.HostedPlayer的命名空间,它有自己的接口-HostedPlayerScriptInterface。其中包含了你想要的所有内容-播放位置数据,增加和减少播放速度的控件,暂停、播放、设置播放位置,查询播放状态等,所有这些都被装饰为[ScriptableMember]。
现在我要让你失望了——看起来(无论出于什么原因),这个接口没有作为[ScriptableType]公开,而据我所知,这是从javascript访问它的先决条件。事实上,似乎唯一以这种方式公开的是播放器触发的事件。我猜测这段代码是用于与其他合作伙伴集成,或者是遗留下来的自视频播放器原始代码继承的某人,但似乎故意省略了这个[ScriptableType]参数。也许有一种方法可以请求构建为“Hosted”的二进制文件,虽然我不确定这意味着什么,我还怀疑人们会很明显地注意到你正在尝试做什么,并迅速阻止它。抱歉回答这么长并以失望告终,但目前看来真的没有办法。我看到一些建议基本上相当于向模拟键盘控件发送按键,但这显然不是你要找的,所以我会在这里回答“不行”。:)
编辑:
进一步研究表明,这不是我想象中的死路。我挖掘完后会更新这个问题。
编辑2:
看起来你需要欺骗Netflix播放器,让它认为它正在运行托管播放器模式。有一些可以传递的配置选项,但我不确定具体该如何操作。看起来这都是在播放器初始化时设置的 - 也许可以使用一些书签脚本重新加载页面并注入更改?或者只需重新加载播放器并更改设置。
this.PlayerViewModel = (applicationConfiguration.PlayerConfiguration.EnableHostedPlayerControl ? new HostedPlayerViewModel() : new GenesisPlayerViewModel());
这是我想出来的地方。当使用 HostedPlayerViewModel 时,会执行以下代码:
HtmlPage.RegisterScriptableObject("HostedPlayerControlScriptInterface_1", this.b)
silverlightPlayer.content.findName('HostedPlayerControlScriptInterface_1').WhateverMethod()
祝你好运!
var player = document.getElementById('SLPlayer'); player.content.findName('HostedPlayerControlScriptInterface_1'); // null player.content // seems right
我对Silverlight不熟悉,但有什么想法吗? - boombatowernetflix.cadmium.objects.videoPlayer()
返回的对象。这可能会有所改变,但是这可能会有用。由于您提到了未记录的内容...
在Silverlight中,要使方法直接暴露给JavaScript,它需要在其类上具有[ScriptableType]
属性,在自身上具有[ScriptableMember]
属性。您可以尝试打开Netflix播放器的XAP文件,反汇编主程序集,并搜索任何带有[ScriptableMember]
的方法。这可能完全没有用处,但您仍然可以尝试。
Boxee可能曾经可以控制它:http://dir.boxee.tv/apps/helper2/netflix.js(此外,也许还有其他一些分支)。
我也想知道Netflix转向HTML5实现是否会允许插件控制播放。祝好运!
netflix.Silverlight.MoviePlayer.getPlugin().settings.hostedPlayer
来进行双重检查,该设置为false,并且netflix.Silverlight.MoviePlayer.get_hosted_player_control()
无法使用。在Chrome中,我的视频正在使用HTML5,所以您说的也许在那里会起作用! - Derek Dahmer<iframe src="https://www.netflix.com/watch"></iframe>