henjan clarettah carlei

0 views
Skip to first unread message

Ben Hollinbeck

unread,
Aug 2, 2024, 10:17:23 AM8/2/24
to lentgriflawro

To start, I found an (admittedly old) post from someone at Netflix stating that their licensing requirements prohibited them from providing ways to control the player externally (everything needed to be wrapped up in a netflix-branded application, and providing ways to interact with the player externally would allow you to embed the netflix player in places it shouldn't go.) You can find that reply here (although it's four years old, I'd imagine not much has changed.)

I tried snooping around on the 'watch instantly' page myself, and there are objects like netflix.SilverLight and netflix.SilverLight.MoviePlayer (which has a getPlugin() method that returns some details about the plugin, and hookable events, but no methods for control,) but they mostly have to do with exposing the size of the player viewport, among other things necessary to place it on the page. I couldn't really find anything in any of the objects that suggested they interacted with the movie player that would seem to allow me access to it.

I also snagged the player binaries, and snooping through them I've found a ScriptInterface object internally with [ScriptableMember]-decorated methods in it called PlayMovie(), StopMovie(), ShowCurtain(), HideCurtain().

Then, I noticed there's another namespace in the player binaries called Netflix.Silverlight.CBPApp.HostedPlayer, which has its own interface - HostedPlayerScriptInterface. This has everything you want in it - data on play position, controls for increasing and decreasing play speed, pausing, playing, setting the play position, querying play state, etc. All of these are decorated as [ScriptableMember]s.

Now I break your heart - it looks like (for whatever reason) this interface is not exposed as a [ScriptableType], which to my understanding is a requirement for being able to access it from javascript. In fact, the only things that seem to be exposed this way are events that the player fires. My guess is that this code is for integrating with other partners, or left over from someone they inherited the original code for the video player from, but it seems intentionally that this [ScriptableType] parameter is left out. There may be a way to request a binary that's built to be 'Hosted', though I'm not sure what that means, and I also suspect it will be transparently obvious to the people watching what you're trying to do and have a stop put to it quickly.

Sorry for the long-winded response that ends in disappointment, but it appears as of right now there's not really a way to do this. I've seen some suggestions that basically amount to sending keystrokes to the browser window that emulate the keyboard controls, but this clearly isn't what you're looking for, so I'm going to go with 'no' as an answer here. :)

So, looks like you need to trick the Netflix player into thinking it's running in hosted player mode. There's some configuration options that can be passed in, but I'm not sure how, specifically, you would do that. It looks like that's all set up on player initialization - maybe some sort of bookmarklet could reload the page and inject a change? Or maybe just reload the player and change the settings.

Bear in mind I haven't done much of this javascript interop stuff so much of this is inferred from the documentation, but it does seem as if there is a javascript control API in there, it's just a matter of tricking the player into working in Hosted mode.

Going to have to stop here, but hopefully this gives you a good start. I've dumped the contents of that hosted player Javascript API file so you can see the methods that will be exposed once you manage to get the player in Hosted mode.

In Silverlight for a method to be exposed to JavaScript directly, it needs attributes [ScriptableType] on its class and [ScriptableMember] on itself. You could try opening up the XAP file for the Netflix player, disassembling the main assembly, and searching for any methods with [ScriptableMember] attached to them. This may not turn up anything useful at all, but it is something you can try nonetheless.

For a while now we've had a computer hooked up to our large screen television and stereo system. A couple months back I upgraded the motherboard, CPU, and memory so that we could start using the Windows 7 release candidate and Windows Media Center on it. The new hardware also meant we could play back high definition video.

Aside from playing back photos in Picasa and various video files, we also stream music using Pandora or play from our library using WinAMP or Media Center. For streaming video, we'd been using Hulu a bit (which is Flash based) and Netflix (which is Silverlight).

Yesterday we tried out Hulu Desktop and attempted to watch the Glee pilot. Hulu desktop crashed on the first run after install (could be a Windows 7 issue) but then ran fine upon restarting it. But the video quality was low and quite jerky. It used a lot of CPU too. This made me wonder if it was really taking advange of the video capabilities of our system.

It was bad enough that we switched to watching the show using the browser-based streaming. Hitting the full-screen high quality version acually played better there and used less CPU. So the desktop application clearly needs some performance tuning.

I compare all of this with Netflix streaming which uses Silverlight and the difference is clear, even in 720p resolution we tend to keep our display set to. Microsoft has done a good job of tuning Silverlight for video. If I recally, they have very good H264 support built-in.

I find your blog entry interesting, because IMO the Silverlight netflix browser plugin is unusable in full-screen mode due to screen tearing issues under both Vista and Mac OS X. This was never a problem with their previous version that I believe was flash-based.

Flash also has built in H.264, so that shouldn't matter too much. I'm curious if this is a Win7 thing, or just a Microsoft thing, because it's the exact opposite situation on OS X. Flash video runs great, Silverlight video makes me want to shoot myself in the face.

Hulu desktop isn't exactly what it should have been, I believe they're love hate relationship stems from Hulu wanting to make it an open platform but being tied down by NBC and other major broadcasters who want more draconian type restrictions.

I tried Hulu Desktop too on my Mac Mini connected to my TV. I did not care for the black UI and small thumb nails, I much prefer using a hand held mouse (gyration) and enjoying Hulu through a browser.

I had numerous issues with the Hulu Desktop. While Flash may look good because of the H.264 support, it is a horrible technology. Flash cannot make use of multiple cores (I hear that is changing in future releases... I hope it's true), and it's CPU utilization is through the roof. The instant I start watching Hulu shows (through the browser or the new Hulu Desktop), the temp goes through the roof and my fans start running like crazy. When watching Netflix movies, CPU utilization and heat are not an issue. I wish people would give Silverlight more of a chance and not hate it simply because it's a Microsoft Product, in 2 releases they are where Flash was in 5 or 6.

Another note, I am currently using XBMC on my computers, and it was nice when Hulu was working with it. It drives me nuts that they want you to use an entirely different program (that doesn't work very well) just to watch their content. I had no problem with them playing their ads when watching in XBMC, that's fine, but since they removed support for XBMC, I just use the NBC-Universal plugin to watch TV programs and they don't have commercials.

I found that removing the check from the box labeled "Enable hardware acceleration" under SETTINGS in Flash inproved performance quite a bit, both in the Hulu desktop app and through the Hulu website.

As many of my readers know I'm a avid listener of podcasts and one of my favorites mentioned GeekTonic on todays show. HTGuys does a daily HDTV Podcast that covers the news, some reviews and pretty much all HD-related coverage.

They reviewed the always popular, bi-annual TV Season Premiere Guide in quite a bit of depth. If you're a TV fan and like HDTV, be sure and check out the January 9th HDTV Podcast (#344). I listen to most of their podcasts and highly recommend them! This is probably the third time the GeekTonic TV Premier Guide has been mentioned on excellent podcasts - the last time was on the highly recommended EngadgetHD podcast.

By the way, I updated the TV Premiere Listings PDF downloads with several updates and improved formatting. There is a by-date listing and a alpha-by-name listing available for download so be sure and check it out.

For a free app, boxee offers quite a bit to its users. Hulu, Netflix and lots of other online streaming along with media playback using the 10-foot interface. Here are a few screen-grabs for your viewing pleasure: Get the complete scoop at the boxee blog at1/08/2009 10:20:00 AMEmail ThisBlogThis!Share to TwitterShare to FacebookShare to PinterestLabels:Boxee,CES,htpc,tech newsSageTV Getting Hulu

Hulu has become one of those most asked for applications for Media Devices since Boxee added Hulu support in 2008. At CES, SageTV was doing demos of their pre-release Hulu playback on the new SageTV HD Theater (works in HTPC extender mode or standalone mode). Dave Zatz is covering CES in Las Vegas and was able to stop by the SageTV CES suite to check Hulu on SageTV out. If you like Hulu and want an easy way to get it to your Television or HTPC, read on.

Those of you paying attention to GeekTonic know that Hulu on the HD200 is already possible through the PlayOn UPnP add-on. The problem is the Playon interface on the HD200 in its current form is just plain painful to use and you have to pay Playon to use it past its trial period.

The SageTV guys were showing the hulu support in their CES suite on the SageTV HD200 (both extender and standalone) as well as in Sagetv itself (without the extender. Obviously this is in pre-beta so it will be a short while before it makes it to the general SageTV community. Being in pre-beta we're not positive whether it will work on the older SageTV HD100 extenders or the really old MediaMVP extenders, but it looks like it will work with the HD200's and with HTPC's with SageTV installed - excellent news for sure. I would guess that it will probably work with the HD100s, but we'll just have to wait to see if that pans out.

90f70e40cf
Reply all
Reply to author
Forward
0 new messages