Androidタブレットで「Netflix」などを視聴する際、一部の機種ではHD画質での再生ができず、強制的にSD画質となってしまう場合があります。この原因は、著作権保護技術である「Widevine」への対応が不十分であるためです。
例として、「Netflix」でHD画質以上の再生を行いたい場合、Widevineのレベルが最大の「L1」である必要があります。先日紹介した「YOGA Pad Pro」は、Widevine L1であったため、問題なくHD画質で再生が可能でした。
しかし、Widevine L1の機種であっても、カスタムROMやGSIを導入した場合などに、Widevine L3(最低レベル)となってしまい、SD画質での再生となってしまう場合があります。私の「YOGA Pad Pro」も、Android 12LのGSIを導入すると、同様の状態になってしまいました。
流石に13インチの大画面でSD画質は見てられないので、いろいろ試行錯誤していたところ、Magiskモジュールを活用することで解決できましたの、手順を紹介します。
【追記】一部のカスタムROMで標準機能として搭載
「CrDroid」など、一部の高機能なカスタムROMには、「Netflix 偽装」という機能が搭載されていることがあります。この機能を有効化することで、今回の記事の方法と同等の効果を得られます。
有効化するだけで簡単なので、この設定項目がある場合はこちらを使用することをおすすめします。
ただし、機種やカスタムROMの種類によっては、これだけでは不十分であったり、効果がない場合もあります。その際は、この記事の方法をお試しください。
スポンサーリンク
仕組み
今回の記事で行っている内容を簡潔にまとめると以下のとおりです。
- root化等を隠してSafetyNetをパスする
- 機種を偽装してプライムビデオの制限を突破
なお、「YOGA Pad Pro」は、Android 12Lを導入した状態でも「Widevine L1」(DRM Infoで確認)となっていたため、もともとWidevine L3の端末で今回の手順を踏んだとしても、HD画質での再生が行えるかは不明です。
注意
機種名を偽装するため、メーカー独自のアプリが動作しなくなったり、GooglePlayからインストールできるアプリが変わってしまう場合があります。カスタムROMやGSIであればほぼ問題ないかと思いますが、標準OSで設定を行う場合は注意してください。
また、Magiskモジュールを使用して機種偽造を行うため、ブートループに陥り起動しなくなる場合がよくあります。必要なデータのバックアップはもちろん、「USBデバッグ」の有効化を行った状態で作業しましょう。USBデバッグを有効にしていれば、万が一ブートループになっても、以下のADBコマンドを入力することですべてのMagiskモジュールを削除できます。
adb shell magisk –remove-modules
必要条件
- 最新版の「Magisk」導入済み
必要なアプリ
- Material Terminal(GooglePlay)
後で導入するモジュール「MagiskHide Props Config」の設定に使用します。他のターミナルアプリでも可。
スポンサーリンク
Magiskモジュールの導入
今回の記事では2つのMagiskモジュールが必要です。最新版のMagisk Managerでは、モジュールのダウンロード機能が省かれているので、手動でzipファイルをダウンロードして導入します。
導入するモジュール
- Universal SafetyNet Fix(GitHub)
Magisk単体では、SafetyNet APIが通らないことがありますが、このモジュールを入れれば大体解決します。また、Magiskの最新バージョンで削除された「Magisk Hide」の補完としても機能します。
- MagiskHide Props Config(GitHub)
機種偽装などができるモジュールです。
Zygistの有効化
導入したモジュールのうち、「Universal SafetyNet Fix」はMagiskの機能の一つである「Zygist」という機能を使用します。ただ、この機能はデフォルトでは無効化されていますので、Magiskの設定から有効化します。
有効化は非常に簡単。Magisk Managerの設定を開き、「Zygist」にチェックを入れて再起動すればOK。
スポンサーリンク
機種偽装の設定
設定を起動する
「MagiskHide Props Config」を使用して機種偽装を行います。このモジュールの設定はターミナルを使用したCUIで操作します。
「Material Terminal」を開き、以下のコマンドを実行し、root権限を許可します。
su
次に以下のコマンドを入力し、設定を開始します。
props
これで対話式の設定画面が表示されます。
「props: inaccessible or not found」と表示されてコマンドが実行できない場合、ターミナルアプリを変更すれば改善する場合があります。Material Terminalの他、「Android Terminal Emulator」「Termux」などがありますので一つずつ試してみてください。
ちなみに、USBデバッグを有効化後、PC上の「adb shell」でも同様に実行が可能なので、すべて試してみて変化がない場合はこちらを試してみると良いでしょう
端末情報の読み込み
以下のような画面になりますので、まず端末情報を読み込みます。
「1」と入力して実行すると、右の画面になりますので、「f」を入力して再度実行。
次に、機種の選択を行います。プライムビデオのHD画質再生が可能な機種を選ぶ必要がありますので、私は無難に「Google Pixel 6」を選択します。できるだけ自分の端末のOSバージョンに合わせて機種を選択しましょう。当然、使用している端末でもOK。
最初はメーカーを選択しますので、Googleに割り当てられた番号「7」を入力して実行します。
次に機種一覧が出てきますので、任意の機種を選択します。機種名の右にそれぞれ対応しているOSバージョンが記載されているので機種選択の参考にしましょう。
今回は「Android 12L」で行っているので、「Pixel 6」を選択。「28」を入力して実行。最後に確認が表示されるので、「y」を入力して実行。
完了後に再起動するか尋ねられますが、まだ設定があるので「n」を入力して実行します。
端末偽装の有効化
先程読み込んだ端末情報を設定します。設定のトップに戻り、「Device simulation」を有効化します。「3」→「s」→「y」と順番に実行します。
次に、偽装する項目を選択します。すべて選択してしまうとブートループになってしまったので、最低限にしておきましょう。私は以下としました。カンマで区切って複数選択できます。
1,2,3,4,5,9,10
項目を選択したら実行します。あとは「1」→「y」を実行して再起動します。
プライムビデオなどを再インストール
これで機種偽装などの設定は完了しましたが、このままだと反映されない場合があるので、以下を行います。
- 「GooglePlay」「GooglePlay開発者サービス」のデータ削除
- 「プライムビデオ」「Netflix」などを削除→再インストール
スポンサーリンク
HD画質での再生が可能に
プライムビデオ・NetflixともにHD画質が再生できるようになっています。
実際に再生してもみてもHD画質で表示されました。スクショなので真っ暗になっていますが、ちゃんときれいに再生できました。
その他
端末情報を表示するアプリ(下の画像は「DRM Info」)で確認すると、端末情報が「Pixel 6」に変更されているのが確認できます。
また、YOGA Pad Proの場合は、引き続きWidevine L1となっており、SafetyNet APIも通りました。GooglePlay認証も通ったままで、検索結果に「Netflix」も表示されました。
この状態であれば、Root化検出が搭載されたアプリも動作するはずです。少なくとも「三菱UFJ銀行」アプリが起動することは確認しました。
変化がない場合の対処法
以下を確認してみてください。
- 偽装した機種がプライムビデオのHD再生をサポートしているか
- 偽装した機種がのWidevineは「L1」か
- 使用している端末・偽装した機種のOSバージョンは揃っているか
- SafetyNetは通るか(SafetyNet Testなどで確認可能)
- 機種偽装が正常に動作しているか(DRM Infoなどで機種名が変わっているか確認)
コメント
コメント一覧 (8件)
初めまして。
以下の環境でこちらの記事を参考にしながら少し手順を足すことでAmazon Prime Video + NetflixのHD再生が行えるようになりました。
参考までに足した手順を記載しておきます。
・環境
Lenovo Legion Y700
crDroid9.8
Android13
・SafetyNet TestでCTS Profile MatchがSuccessにならない現象の対応
以下のmagisk moduleを導入することで解決。
https://github.com/Displax/safetynet-fix/releases
・SafetyNet Test で全ての項目がSuccessになっており、DRM InfoでWidevine L1になっているにも関わらずNetflixでWidevine L3と認識される。
1.Netflixをアンインストール
2.システムのアプリ設定->Google Play 開発者サービスを無効化
3.システムのアプリ設定->Google Play 開発者サービス->容量を管理->データを全て消去
4.Netflixを再インストール
5.Netflix起動時にGoogle Play 開発者サービスが無効だとエラーが発生するので、この時点で再度有効化する。
6.Netflix内のアプリ設定->再生仕様を確認してWidevine L1となっていることを確認
Legion Y700を購入してからこちらのサイトを参考にカスタムROMなどの導入を行い、便利に使えるようになっています。
ありがとうございます。
質問失礼します。
Material Terminalでpropsを入力すると/system/bin/sh: props: inaccessible or not found
となり先にすすみません。
Magiskは、Zygistの有効化かくモジュールインストール済み
ターミナルアプリを変更してみると改善することが多いです。記事内にも追記しましたので、以下からご確認ください。
https://smartasw.com/archives/14716#index_id8
また、PCに接続後、adb shellから同様の設定が可能なので、どれも失敗してしまう場合は試してみると良いかもしれません。
Android Terminal Emulator」「Termux」共にダメでした。
PS C:\Users\lovei\OneDrive\デスクトップ\platform-tools> adb shell
qucii_qa6210_64:/ $ su
Permission denied
13|qucii_qa6210_64:/ $
となり#になりません。
suはroot権限を付与するためのコマンドなので、root必須アプリを使用した場合と同じようにスマホ側で「許可」をタップする必要があります。エラー内容的にほぼ確実にこれが原因なので、Magiskから許可に変更してから再度実行してみてください。
機種偽装には成功しましたがもとがL3の機種はL1には変更されませんでした。
他に変更するところがあるのでしょうか?6.7.8.a.d.p.tで。
質問失礼します。
こちらに記載されている端末偽装の方法を用いてプライムビデオの4KUHDタイトルの有効は可能でしょうか?
(xperia xz premium はプライムビデオアプリで4KUHD再生がSONY公式で対応しているので)
YOGA Pad Proの解像度を強制的に4Kに変更した上で、Xperia XZ Premiumに変更してテストしてみました。結果は、ストリーミング/ダウンロードともに1080pとなったので難しいかもしれません。