有馬総一郎のブログ

(彼氏の事情)

2026年05月02日 06:32:30 JST - 8 minute read - Linux

Pop!_OS上のFirefoxでNetflixが432pに落ちる原因と、Linuxで1080p再生する方法

Pop!_OS 24.04にアップグレード後、Netflixで視聴すると画質が悪い。最初は720pなのだけど、見ていると432pまで画質が落ちる。 Netflix 1080p UAといった拡張機能をインストールしても効果がない。

Netflix
Linux版Firefox 432p

Linux版Firefoxでは720pまでしか再生できない

色々、Geminiに相談すると、Linux環境ではハードウェアレベルのDRM(Widevine L1)が許可されず、ソフトウェアレベルの弱いDRM(Widevine L3)しか適用されない。 Netflix対応ブラウザとシステム要件 | Netflixヘルプセンターを見ると、Firefoxは720pが最大となっている。

Netflix
画面別のデータ使用量も高に固定しても無駄
Throughput: 101375 kbps
Playing bitrate (a/v): 128 / 102 (768x432)
KeySystem: com.widevine.alpha.SW_SECURE_DECODE
KeyStatus: ... 540,720, usable,usable
Total Dropped Frames: 223
DFR: {"432":[...],"540":[...],"720":[...]}

しかし、それでも432pまで下がるのはなぜだろう。24.04アップグレード前には720pで視聴できていた。MOZ_ENABLE_WAYLAND=1 firefoxで起動して、about:supportでトラブルシューティング情報画面1を開いて、XWaylandのオーバーヘッドがないWaylandネイティブで動作していることを確認した。

Firefox
ウィンドウプロトコルはwayland

となると、Firefoxの描画エンジン(WebRender)と、COSMICのWaylandコンポジタ(cosmic-comp)間でのVsync(垂直同期)やフレームの受け渡しタイミングに微小なズレが生じている可能性が高い。それを「コマ落ち(Dropped Frames)」としてNetflixのプレイヤーが検知して、画質を下げてしまう。

なので、about:configで内部設定2を開き、widget.wayland.vsync.enabledの設定値をfalseにした。

Vsyncの制御をコンポジタ側に完全に任せるように変更することで、コマ落ちが発生せず、720pのまま再生できるようになった。この状態で、UAをOperaと偽装すれば1080pで視聴できるかと思ったが、それは無理だった。

Netflix
Linux版Firefox 720p

再生画質は、ローカル側だけでなく、Netflixサーバー側のホワイトリストによって、この端末なら、このブラウザなら「1080pの映像データを送ってヨシ!」と制御されている。

Linux版のDRMモジュールはChrome、Edge、Firefox、OperaどれもGoogleが提供しているWidevine CDMで同じ。しかし、CDM(Content Decryption Module)自体にブラウザを識別する暗号化された情報(VMP: Verified Media Path)が含まれているために、UAの偽装を見抜かれてしまう。

Linux版Operaなら1080pで再生できる

Linux環境で最高画質1080pで見るためには Operaで見るしかない。Operaをブラウザとしてインストールするのに、若干の抵抗があったので、 Flatpak版をインストールした。そして、サンドボックス化(隔離)した状態で、Netflix視聴専用ツールとして使うことにした。

再生すると07701-1003とエラーコードが表示され、chrome://settings/content/protectedContentで「サイトが保護されたコンテンツを再生できる」ようにしてくれと、エラー画面が表示された。

Widevineのバージョン番号は、Widevine Content Decryption Module - バージョン: 4.10.2934.0とGoogleのWidevineモジュールは同梱されている。

となると、H.264プロプライエタリ・コーデック(libffmpeg.so3)を以下の手順で、Flatpak版Operaから認識できる形で同梱させる。

$ mkdir -p ~/.var/app/com.opera.Opera/config/opera/lib_extra
$ wget https://github.com/nwjs-ffmpeg-prebuilt/nwjs-ffmpeg-prebuilt/releases/download/0.111.0/0.111.0-linux-x64.zip
2026-05-02 06:04:43 (5.86 MB/s) - ‘0.111.0-linux-x64.zip’ へ保存完了 [1482816/1482816]

$ unzip 0.111.0-linux-x64.zip
Archive:  0.111.0-linux-x64.zip
  inflating: libffmpeg.so
$ cp libffmpeg.so ~/.var/app/com.opera.Opera/config/opera/lib_extra/
$ chmod +x ~/.var/app/com.opera.Opera/config/opera/lib_extra/libffmpeg.so

これで、ソフトウェアDRM(Widevine L3)しか機能しないLinux環境にあっても、本来ハードウェアDRM(Widevine L1)環境で提供される1080pの画質でNetflixを視聴することができた。

Netflix
Linux版Opera 1080p

UHD (4K)再生するのはハードルが高い

これで終えても良いのだけど、Netflixは、家族で利用しているのでプレミアムプランに加入してた。なので、本当に4K再生できるのか試してみることにした。結果としては、再現性が不安定だった。以下、冗長になるが、流れを残しておく。

Netflix
Netflixプレミアムプラン

モニターは DELL S2721QSという4KモニターでHDCP(著作権保護)の規格にも対応している。そして、OSは HP Elite Dragonfly Chromebook Enterpriseというハイエンドモデル。

DELL S2721QS
DELL S2721QS
12th Gen Intel(R) Core(TM) i7-1265U(スレッド数 12、4.800 GHz)
23.85 GB / 32.00 GB 使用可能

スペック的には申し分ない4。しかし、最初C7361-1253、再度試すもC7353-5101というエラーコードが表示されて再生が止まってしまう。これは、外部モニターとUSBハブ経由で接続したため。

Netflix
Netflix エラーコードC7361-1253

これは直接HDMI端子で接続することでエラーは解消。しかし、何か画質がPlaying bitrate (a/v): 128 / 191 (1280x720)と1080pですらない…

KeySystem: com.widevine.alpha.HW_SECURE_ALL
KeyStatus: ... 1080, usable,usable

DRMはHW(ハードウェア保護)、Widevine L1相当になっている。

ディスプレイとテキストのサイズ、つまりChromeOSの拡大処理をフルHD以下のサイズとしているためで、スケールを最小(一番左)にすることでPlaying bitrate (a/v): 128 / 1276 (1920x1080)と1080pで再生することには成功。しかし、4Kではない。

KeyStatus: ... 540,1080, usable,usable

Netflixサーバー側から最大1080pまでという制限をかけられていることが分かる。制限をかけられている可能性としては、以下の二つの可能性がある。

  • PCとモニターを繋いでいるケーブルがHDCP 2.2の暗号通信に対応していない
  • Netflixサーバー側でHP Elite Dragonfly Chromebook Enterpriseが、4K画質で再生できるホワイトリストから外れている

後者のほうは、こちらではどうしようもないが、前者については3年前に買った無名メーカーSilklandのUSB-C DisplayPortケーブルがあったので、それで接続してみた。

すると…無事、成功。

Playing bitrate (a/v): 128 / 4467 (3840x2160)
Playing/Buffering vmaf: 99/99
KeySystem: com.widevine.alpha.HW_SECURE_ALL
KeyStatus: ... 540,1080,2160, usable,usable,usable 
Netflix
Lenovo Chromebook Plus Gen 10 。上の数値はElite Dragonflyの方

ケーブルを変える5ディスプレイとテキストのサイズ といったChromeOSの拡大処理に関わらず、4K画質で再生されるようになった。最初、アイコンが HD のままだったので出来ていないのかと早合点したが、実際の画質は4Kとなる。

と…まとめようとしたら、何度かテストすると、最初に成功した Lenovo Chromebook Plus Gen 10でも、HP Elite Dragonfly Chromebookでも1080pに戻ってしまった…ただ、4K再生できた2台の端末同時に駄目になったから、Netflixサーバー側からアカウントとして外されたのかも知れない。

プランを見直すきっかけとなった

ともあれ一度でも4K表示できたが、モニター、ケーブル、そしてOS、場合によってはブラウザにまで制限がかけられているNetflixの仕様を知り、正直かなり失望してしまった。見たい作品があるときだけ、スタンダードプランでも見るのが良いと思った。

個人的には U-Nextに日本の地上波の配信サービスが統合されれば、Netflixにも負けないのになぁ、と思うのだけど、そうなったらなったで、Netflixのように使い勝手を著しく制限するのだろうか…


  1. UAに(X11; Linux x86_64; ...)と記載されているけど、これは固定の文字列なので、ウィンドウプロトコルを判別できない。 ↩︎

  2. gfx.webrender.alltrueにして、WebRenderを強制的にフル有効化することも提案されたが、これは不要だった。 ↩︎

  3. nwjs-ffmpeg-prebuilt/nwjs-ffmpeg-prebuilt: FFmpeg prebuilt binaries for NW.js / Chromium ↩︎

  4. Google ChromebookまたはChromeboxでNetflixを視聴する方法 | Netflixヘルプセンター ↩︎

  5. アイコンからUHD (4K)にしようとするには、拡張ディスプレイも止めて、メインディスプレイを4Kモニターのみとして、 ディスプレイとテキストのサイズ による拡大処理を4K相当とする必要があると、Geminiは答えてきたが、最新のChromebook PlusであるLenovo Gen 10でも、Elite Dragonflyでもアイコンの表示までは変えられなかった。 ↩︎