
Chrome extension to play Netflix in 1080p - ryanlol
https://github.com/truedread/netflix-1080p
======
ddevault
This is exactly why movie and television piracy is still big.

If you pirate, you get high quality, ad-free video files that you can play on
any device, anywhere, any time, forever. You can get any video resoultion and
audio quality you want, and many (toggleable) subtitles which can be extended
with third-party subtitles in post for languages the creators didn't bother to
translate to. Every movie and TV show ever made is available through piracy,
too. All for the low price of $0.

Or you can pay >$100/year to get stupid bullshit like this. It won't work on
most devices, requires proprietary software to play back, can't be used
offline in most cases, has questionable audio and video quality, is locked to
specific regions, and will vanish when Netflix can't renew the contract.

~~~
esistgut
I am a paying customer for Netflix and Primevideo and I just had to pirate the
Altered Carbon tv series because I play it on a ultrawidescreen monitor (21:9,
3440x1440) and the Netflix web player is putting black bars all around the
videos (horizontal and vertical black bars). This is because the video is
supposed to be played on 16:9 with horizontal black bars only. With the
pirated version I can just tell MPV to apply an autocrop script and use much
more space on my monitor.

~~~
dogma1138
I don’t have that issue with my ultra wides are you using a browser or the
Netflix app?

~~~
esistgut
Chrome on Linux.

~~~
dogma1138
I think this has something to do with the chrome viewport not being reported
correctly on Windows I have no problems with either any browser or the UWP
Netflix app.

~~~
FrozenTuna
3440x1440 user here. I needed to use an extension to play Altered Carbon in
ultrawide. I have definitely had problems with netflix on ultrawide.

------
archildress
Am I the only one who didn't realize my Chrome streams weren't already in
1080p?

~~~
rapfaria
I doubt the majority of users even realize that. But since this is streamed
media, does it really matter if it's 720p or 1080p in the end? I see artifacts
in both versions.

All the more reasons to watch Planet Earth on blu-ray.

~~~
ac29
>does it really matter if it's 720p or 1080p in the end

For what its worth, a lot of 3rd party content is actually restricted to 480p
(at least in Linux/Chrome). That, is definitely noticeable.

------
Freak_NL
The fact that gaining access to the 1080p stream is so trivial makes it hard
not to suspect Netflix (or the content studios supplying them with content)
from deliberately providing a poorer experience for users of open platforms —
Netflix refuses to serve anything over 720p to users of Chrome and Firefox (or
derivatives) — in order to goad you into using their proprietary clients.
User/software freedom apparently is a threat to their business model.

It sucks being labelled an untrustworthy customer despite paying for 1080p
content.

~~~
mdasen
In Safari in macOS, Netflix uses about 10% CPU showing 1080p. With Chrome, it
uses 40% playing 720p. With Firefox, it uses about 75% CPU and my fan turns
on. I'm guessing it's higher on 1080p.

I don't think Netflix has any interest in you using a proprietary client. They
don't gain money if you watch one way or another. They gain money if you keep
paying them your monthly fee.

EDIT: Installing this extension took Chrome CPU usage to 75% for me.

Also, I'm not saying that users shouldn't be given the choice to use their CPU
resources to run Netflix. Maybe it would be better if Netflix were just more
transparent about it. "By default, we only display video with 720p in Chrome
due to high processor usage. Click here to change that preference or watch
with Safari whose direct rendering means 1080p video using less processor
resources." That way, users understand the problem and can decide they don't
mind other programs becoming sluggish or the fan running or whatnot. Of
course, companies generally don't like giving users details.

~~~
vladikoff
Firefox version of the same add-on if you want to run more tests:
[https://addons.mozilla.org/en-
US/firefox/addon/force-1080p-n...](https://addons.mozilla.org/en-
US/firefox/addon/force-1080p-netflix/)

~~~
gbil
Indeed it works just fine thx

------
tankenmate
I'm not entirely sure but I think Netflix might have just "fixed" this. After
finishing one stream I got an error screen telling me to reload the page.
After that the next stream switched back to 720p.

------
ad_hominem
One thing I've always found annoying when playing Netflix in Chrome on
Linux/Ubuntu is if you hit ctrl+alt+shift+s to get into the debug menu, the
available bitrates are always lower than what you see available when running
Windows (for the exact same title). I figured that out when some movie I had
started watching on Windows had a noticeable quality degradation when I later
booted into Ubuntu to finish watching.

But at least Netflix lets me watch videos in HD. Amazon Prime always plays in
SD, citing some kind of HDCP violation, even though I'm using the closed-
source Nvidia drivers and using a DisplayPort connection from my monitor to
graphics card. It's obviously discriminating against Linux because if I boot
into Windows I can play Prime videos in HD no problem.

------
dicroce
I'm curious if anyone has created a headless browser Netflix ripper?

------
verifex
Since the README.md doesn't explain how to actually install an unpacked Chrome
extension, for the layman, I'll explain it here because it's quick and easy.

1\. Download all the files for the extension into a directory.

2\. Open chrome > Extensions window

3\. Click "developer" checkbox

4\. Click "Load unpacked extension" and select the directory where you
downloaded the extension files.

5\. Tada, extension should show up in the extension page.

~~~
floo
There's also
[https://chrome.google.com/webstore/detail/cankofcoohmbhfpcem...](https://chrome.google.com/webstore/detail/cankofcoohmbhfpcemhmaaeennfbnmgp)

------
sammko128
This is pretty cool. Much simpler than what I did to get 1080p working some
time ago. I pulled out the widevine so directly from a CrOS image, replaced
the one I had installed and spoofed my User-Agent.

~~~
adtac
This sounds really interesting (and more future-proof; Netflix can just choose
to change the JS file with the extension technique). Can you please go into
more detail on how you pulled out widevine from a CrOS image?

~~~
sammko128
Sure. I figured out the relevant library was libwidevinecdm.so, normally
located in /usr/lib/chromium/libwidevinecdm.so on Arch Linux with the
chromium-widevine AUR package installed. I created a CrOS installation image
for an x86_64 chromebook (not sure which one, I looked up a list of x86_64
ones a picked at random) using the official chrome extension (at the time,
this was only possible to do from a Windows machine, not sure what the
situation is rn). I mounted the rootfs of the installation image and located
the libwidevinecdm.so file. I believe it was somewhere in /opt/google or
something like that. This is probably the location on Google Chrome installs
under GNU/Linux as well. Then I just replaced my libwidevinecdm.so with the
new one. Spoofed my user agent to something containing CrOS and it magically
worked. I was quite surprised then :D.

Anyway, if you don't feel like doing that (you should do it), trust me (which
you should not) and are ok with a (probably) relatively old version of the
binary (I don't know whether it still even works, I haven't used netflix in
quite some time now), you can get it here:
[https://transfer.sh/pYsRz/libwidevinecdm.so](https://transfer.sh/pYsRz/libwidevinecdm.so)
SHA256: d84e87d89d8e95ccfcd3dd86157dfd608a022e1e8bee397c3d4541a162bab5c2

------
loeg
I thought Netflix streamed in 4k now. Does it really restrict some devices to
720p? And, why?

~~~
Sharlin
> I thought Netflix streamed in 4k now.

If you have the most expensive subscription AND have hardware that has enough
DRM builtin (eg. on a PC you need a Kaby Lake processor AND the native client
or Edge (or Safari apparently)).

If you have the "HD" subscription, then it can be HD or full HD also depending
on DRM details.

------
wdr1
Out of curiosity, is there a good reason for Netflix to do this? I.e., why
would they be interested in providing 1080p to Safari but not Chrome, even if
Chrome can do 1080p?

~~~
bzbarsky
The most likely reason is that they have contractual agreements about how easy
it is to be able to get at the data by unauthorized parties (read "the person
watching the video") for various resolutions.

For example, their contracts could say that for 1080p the playback mechanism
has to guarantee security all the way to screen (e.g no playback over digital
video cables that don't support the requisite encryption primitives).
Generally this requires support from the OS and hardware, and the relevant
playback application using the relevant OS functionality.

This is why you get 1080p in IE and Safari, but Safari only on OS X 10.0.3 or
later. You get 4K in Edge. You get 1080p on ChromeOS (where things are locked
down in ways that prevent the viewer from exfiltrating data), but not in
Chrome.

Similarly, last I checked, you could get higher resolution videos from the
iTunes store on iOS or Apple TV than you could on desktop MacOS, because the
latter is not as locked-down. That was a few years ago, though.

------
dingo_bat
I basically pay for Netflix and still download Marvel show episodes from our
famous sailor-themed website. Why? Because Netflix won't let me watch the show
offline and I want to watch uninterrupted during my long commute.

------
braindongle
JS novice here. Is this an idiomatic way to conditionally perform an operation
in JS? It saves typing, but if(){} is much more explicit.

    
    
      a && this.oo.push(x.V.TH);

~~~
adtac
That's minification. The actual source code almost certainly does `if (a) {
... }`, but the minifier will shorten that into `a&&...`, thereby saving
multiple bytes. Accumulate this over different if-clauses, and you're looking
at serious savings.

~~~
braindongle
Ah, I see. Thanks. Interesting. The minifier must be smart enough to know that
you're not doing anything with the return value, since the two aren't
equivalent in that respect.

    
    
      false && console.log('foo');  //false
      if(false){ console.log('foo') }; //undefined

