Мне было весело копаться в этом, и я думаю, что нашел ваш ответ.
Для начала я нашел (по общему признанию) старый пост от кого-то из Netflix, в котором говорится, что его лицензионные требования запрещают ему предоставлять способы внешнего управления плеером (все, что нужно, чтобы обернуть его в приложении под брендом Netflix, и способы внешнее взаимодействие с игроком позволило бы вам встроить проигрыватель netflix в места, где он не должен идти. Этот ответ можно найти здесь (хотя ему четыре года, я думаю, что мало что изменилось.)
http://developer.netflix.com/forum/read/54172
Я попытался сам покопаться на странице «мгновенного просмотра», и есть такие объекты, как netflix.SilverLight и netflix.SilverLight.MoviePlayer (у которого есть метод getPlugin (), который возвращает некоторые сведения о плагине и подключаемых событиях, но нет методов для контроля,) но они в основном имеют отношение к раскрытию размера окна просмотра игрока, помимо прочего, необходимого для размещения его на странице. Я не мог найти ничего в объектах, которые предположили, что они взаимодействовали с проигрывателем фильмов, которые, казалось бы, позволили мне получить к нему доступ.
Я также поймал двоичные файлы игроков и, просматривая их, обнаружил внутри себя объект ScriptInterface с методами, декорированными [ScriptableMember], которые называются PlayMovie (), StopMovie (), ShowCurtain (), HideCurtain ().
Затем я заметил, что в двоичных файлах плеера есть еще одно пространство имен, называемое Netflix.Silverlight.CBPApp.HostedPlayer, которое имеет собственный интерфейс - HostedPlayerScriptInterface. В нем есть все , что вы хотите - данные о позиции воспроизведения, элементы управления для увеличения и уменьшения скорости воспроизведения, пауза, воспроизведение, настройка позиции воспроизведения, запрос состояния воспроизведения и т. Д. Все они оформлены как [ScriptableMember ] s.
Теперь я разбиваю ваше сердце - похоже (по какой-то причине) этот интерфейс не представлен как [ScriptableType], который, насколько я понимаю, является требованием для возможности доступа к нему из javascript. Фактически, единственными вещами, которые, кажется, выставлены таким образом, являются события, которые запускает игрок. Я предполагаю, что этот код предназначен для интеграции с другими партнерами или от кого-то, от кого они унаследовали исходный код для видеоплеера, но кажется, что этот параметр [ScriptableType] намеренно пропущен. Может быть способ запросить двоичный файл, который создан как «размещенный», хотя я не уверен, что это значит, и я также подозреваю, что он будет очевиден для людей, наблюдающих за тем, что вы пытаетесь сделать, и у вас есть прекратить ставить его быстро.
Извините за многословный ответ, который заканчивается разочарованием, но на данный момент, похоже, на самом деле не существует способа сделать это. Я видел некоторые предложения, которые в основном сводятся к отправке нажатий клавиш в окно браузера, которые имитируют элементы управления клавиатуры, но это явно не то, что вы ищете, поэтому я собираюсь перейти с «нет» в качестве ответа здесь , :)
Edit:
Дальнейшие исследования показывают, что это не тупик, как я думал. Я обновлю это, как только закончу копать.
Редактировать 2:
Похоже, вам нужно обмануть игрока Netflix, заставив его думать, что он работает в режиме размещенного игрока. Есть некоторые параметры конфигурации, которые можно передать, но я не уверен, как именно вы это сделаете. Похоже, что все настроено на инициализацию плеера - может быть, какой-то букмарклет мог бы перезагрузить страницу и внести изменения? Или просто перезагрузите плеер и измените настройки.
this.PlayerViewModel = (applicationConfiguration.PlayerConfiguration.EnableHostedPlayerControl ? new HostedPlayerViewModel() : new GenesisPlayerViewModel());
Вот где я это понял. Когда используется HostedPlayerViewModel, этот код запускается:
HtmlPage.RegisterScriptableObject("HostedPlayerControlScriptInterface_1", this.b)
, который, если я правильно читаю, позволит вам получить доступ к этому зарегистрированному объекту, получив объект DOM, содержащий проигрыватель netflix silverlight и вызвав
silverlightPlayer.content.findName('HostedPlayerControlScriptInterface_1').WhateverMethod()
Имейте в виду, что я не сделал большую часть этого взаимодействия с javascript, так как многое из этого вытекает из документации, но кажется, что там есть API-интерфейс управления javascript, это всего лишь обман игрока в работу в режиме хостинга.
Нам придется остановиться здесь, но, надеюсь, это даст вам хорошее начало. Я поместил содержимое этого файла API Javascript размещенного проигрывателя, чтобы вы могли увидеть методы, которые будут доступны после того, как вам удастся перевести проигрыватель в размещенный режим.
http://pastebin.com/UeN3NFMg
Удачи!