- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个 Netflix 帐户,我已经深入了解了其在 Google Chrome 浏览器中运行的视频播放器。 Netflix 将其视频播放器称为“Cadmium”,而 javascript 公开了您可能期望的所有功能和事件处理程序,例如播放、停止、暂停、静音等。我正在构建一个小的 Chrome 扩展,使我能够调用这些 Cadmium播放器功能,但对我来说最困难的部分是弄清楚如何创建播放器的实例,以便我可以开始调用。 javascript 很大,很复杂,而且有点晦涩难懂。一旦我可以创建该播放器的实例,我认为调用这些函数将会很容易。
这是一个相关的 js block :
muteOn: function() {
this.savedVolume = this.getVolume(),
this.updateVolumeDisplay(0),
this.scrubber.updatePercent(0),
this.muted = !0,
this.videoPlayer.setMuted(this.muted)
}
在 Chrome 开发工具中,我可以在该 block 内设置断点,当我单击 netflix 视频播放器上的静音按钮时,执行会遇到断点。 Netflix js(不出所料)通过方法重命名被严重混淆了。我尝试在调试器中单步执行代码,结果遇到了一百个兔子洞,但始终无法找到到达堆栈顶部的方式,因此我可以进行相同的调用(在堆栈顶部)以模拟用户单击静音按钮。我还尝试了以编程方式单击 UI 播放器上的静音按钮的方法,这同样可以满足我的需求,但它们有严重的防御机制,让我像陀螺一样旋转。
由于有超过 100K 行的 javascript,我不确定哪些 block 与本文相关,我建议您在 Chrome 中加载 Netflix,打开开发工具,播放电影,然后检查暂停或静音按钮。与这些视频播放器控件进行交互会将您带入 javascript 的迷宫,我正在尝试了解如何利用它以编程方式控制播放器的各个方面(目前仅通过开发工具就可以了)。我需要弄清楚的另一件重要事情是如何查询视频播放器以确定播放视频的当前耗时。
我有什么办法破解这个难题吗? (提前致谢!)
最佳答案
使用 Chrome,我可以使用 HTML 5 视频进行播放。
一旦你掌握了 <video>
标记元素,您可以使用 HTML 5 video API :
<video>
元素var video = document.evaluate('//*[@id="70143639"]/video',document).iterateNext()
70143639
是视频的 ID,如 https://www.netflix.com/watch/70143639
document.evaluate('//*[@id="netflix-player"]/div[4]/section[1]/label', document).iterateNext().innerHTML
video.currentTime
video.addEventListener("timeupdate",
function(e) {
console.debug("Seconds elapsed: ", e.timeStamp/1000/60);
}
);
请注意,我没有得到与 video.currentTime
相同的结果,您可能需要根据差异使用偏移量。也可能是规范中解释的内容:https://www.w3.org/TR/html5/embedded-content-0.html
video.play();
video.pause();
由 rebelliard 提供: netflix.cadmium.UiEvents.events.resize[1].scope.events.dragend[1].handler(null, {value: 600, pointerEventData: {playing: false}});
其中 600
是要搜索的秒数。
请注意,我遇到了“哎呀,出了点问题......”使用这个:
video.currentTime += 60;
即使有暂停和播放电话。这就是this demo page确实如此,您不需要阅读 full spec on seeking .
video.muted = true
赞video.currentTime
, 这是一个可写的属性。
关于javascript - 如何在客户端与 Netflix Cadmium 视频播放器交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41985502/
我是一名优秀的程序员,十分优秀!