Netflix Instant Player(silverlight)的Javascript API?

标签 javascript silverlight netflix

Netflix Instant Player(silverlight)是否有Javascript API?最好有一个受支持的,有文件证明的文件,但不受支持的,没有文件的文件也可以;这是一个个人项目。

我希望能够播放/暂停并寻找给定的时间。

最佳答案

我很乐于研究这个问题,我想我找到了你的答案。

首先,我在Netflix的某人身上发现了一个(很老)的帖子,说他们的许可要求禁止他们提供从外部控制播放器的方法(所有内容都必须包装在netflix品牌的应用程序中,并提供与之交互的方法)。播放器的外部将允许您将netflix播放器嵌入到不应使用的位置。)您可以在此处找到该答复(尽管已经有4年了,但我想并没有太大的改变。)

http://developer.netflix.com/forum/read/54172

我本人尝试在“立即观看”页面上窥探一下,并且存在诸如netflix.SilverLight和netflix.SilverLight.MoviePlayer之类的对象(该对象具有getPlugin()方法,该方法返回有关插件和可 Hook 事件的一些详细信息,但没有方法) (用于控制)),但是它们主要与暴露播放器视口(viewport)的大小有关,还包括将其放置在页面上的其他必要条件。在任何暗示它们与电影播放器​​交互的对象中,我都找不到任何东西,这似乎允许我访问它。

我还抓取了播放器的二进制文件,并通过它们进行窥探,在内部发现了一个ScriptInterface对象,该对象带有[ScriptableMember]装饰的方法,称为PlayMovie(),StopMovie(),ShowCurtain(),HideCurtain()。

然后,我注意到播放器二进制文件中还有一个名为Netflix.Silverlight.CBPApp.HostedPlayer的 namespace ,它具有自己的接口(interface)-HostedPlayerScriptInterface。它具有您想要的所有内容-播放位置数据,用于增加和降低播放速度,暂停,播放,设置播放位置,查询播放状态等的控件。所有这些都装饰为[ScriptableMember]。

现在,我伤了您的心-看起来(出于某种原因)此接口(interface)并未公开为[ScriptableType],据我所知,这是能够从javascript访问它的要求。实际上,似乎只有这种方式暴露的是玩家触发的事件。我的猜测是,此代码是用于与其他合作伙伴集成,或者是从他们继承了视频播放器原始代码的人遗留下来的,但是似乎故意忽略了此[ScriptableType]参数。也许有一种方法可以请求构建为“托管”的二进制文件,尽管我不确定这意味着什么,而且我还怀疑,对于观看您要执行的操作并拥有一个文件的人来说,它显然是显而易见的。快停下来。

很抱歉,长期以来的回应以失望告终,但截至目前看来,实际上还没有办法做到这一点。我已经看到了一些建议,这些建议基本上相当于将击键发送到模拟键盘控件的浏览器窗口,但这显然不是您想要的,因此在这里我将以“否”作为答案。 :)

编辑:

进一步的研究表明,这并不是我认为的死胡同。完成挖掘后,我将对其进行更新。

编辑2:

因此,看起来您需要欺骗Netflix播放器以使其以托管播放器模式运行。可以传递一些配置选项,但是我不确定具体如何执行此操作。看来这一切都是在播放器初始化上完成的-也许某种书签可以重新加载页面并注入(inject)更改?或者也许只是重新加载播放器并更改设置。

this.PlayerViewModel = (applicationConfiguration.PlayerConfiguration.EnableHostedPlayerControl ? new HostedPlayerViewModel() : new GenesisPlayerViewModel());

是我弄清楚的地方。使用HostedPlayerViewModel时,将运行以下代码:
HtmlPage.RegisterScriptableObject("HostedPlayerControlScriptInterface_1", this.b)

如果我阅读正确,则可以通过获取包含netflix silverlight播放器的DOM对象并调用来访问此注册的对象
silverlightPlayer.content.findName('HostedPlayerControlScriptInterface_1').WhateverMethod()

请记住,我并没有做太多有关javascript互操作的事情,所以很多事情是从文档中推断出来的,但是似乎其中似乎有一个javascript控件API,这只是在欺骗播放器使其工作而已。托管模式。

不得不在这里停止,但是希望这可以给您一个良好的开端。我已经转储了该托管播放器Javascript API文件的内容,因此您可以查看一旦设法使播放器进入托管模式后将公开的方法。

http://pastebin.com/UeN3NFMg

祝你好运!

关于Netflix Instant Player(silverlight)的Javascript API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6086205/

相关文章:

javascript - facebook如何用javascript全屏?

javascript - 在文件夹中搜索文件名的部分内容

javascript - 我正在尝试从 Json 数组获取下一个对象而不使用成员名称

silverlight - 如何将事件聚合添加到现有 Silverlight 应用程序?

wpf - 是否可以只突出显示图像的某些部分(不透明度)?

android - 如何在 Android 和 iOS(例如 Netflix 和 Iflix)中缓冲和播放视频

spring - 如何在没有spring-boot的情况下使用eureka+feign?

javascript - Heroku 无法运行 Node ES6 代码

silverlight - 更改 MediaElement 中的源 (SILVERLIGHT)

recommendation-engine - 为什么 Netflix Prize 如此具有挑战性?