2020/06/23

動画を高画質で見る方法 ~動画のノイズ Tearingをなくす~ Ubuntu Linux

Ubuntu Linuxで動画を視聴していると、水平に線が入るような または、ズレるような乱れが発生することがあります。この乱れのことをティアリングと呼びます。UbuntuのChrome/Chromiumでは動画の再生中にティアリングが発生して見づらい場合があります。そこで、動画の再生にGPUを使えるようにしてティアリングが発生しないようにする方法を紹介します。
ここでは、Chromiumでのやり方を説明します。

Google Chrome for Linux 、またはLinux版のChromiumでは詳細設定やchrome://flagsを用いることで動画の再生にGPUを使えるように思えます。しかし、実際には動画の再生にGPUは使っていません。
対策として、動画の再生にGPUを使えるように改変されたChromiumをインストールします。


ctrl + alt + tを押して、端末を起動する

ppaを追加する
sudo add-apt-repository ppa:saiarcot895/chromium-beta

リポジトリのリストを更新する
sudo apt update

ブラウザChromiumをインストールする
sudo apt install chromium-browser

<VA-APIドライバーをインストールする>
パソコンのグラフィックカードによってインストールするパッケージが異なります。
コマンドsudo lshw -c videoなどを使って、グラフィックカードの種類を調べましょう。

<VA-APIドライバーをインストールする>(既にインストールされている場合もある)
intelのグラフィックカードで第8世代以上のものは次のドライバーをインストールします。
sudo apt install intel-media-va-driver-non-free

Wikipedia intel 第8世代
Wikipedia intel Braswell Pentium N3710

intelのグラフィックカードで第7世代以前の場合は次のものをインストールします。
sudo apt install i965-va-driver-shaders



<新しくインストールしたchromiumに拡張機能h264ifyをインストールする>
 Block 60fps videoにチェックをいれておくとコマ落ちが少なくなります。

動画の再生にGPUが使われているか確認する方法
・動画を再生してからchrome://media-internalsにアクセスする。
・PlayersのRecent Playersのリストにある項目を選択する
・kVideoDecoderNameがMojoVideoDecoderになっていれば成功している。








参考
参考にしたサイトでは2019年12月20日の時点でchromium devを使うように述べてありましたが、今回はchromium betaをインストールしてみました。特に問題なく動作しています。


2020 7/10追記:
updateでsnap版の最新の安定版chromiumに更新されてしまいました。
そのため、Pinを使って、最新の安定版chromiumに更新されないようにする必要があります。

更新されてしまった場合、sudo apt policyを使ってバージョンを確認し、ダウングレードすると元に戻ります。依存するパッケージも同様にダウングレードします。

ダウングレードの手順 例)
以前のバージョンを確認する。
sudo apt policy chromium-browser
以前のバージョンを指定し、ダウングレードする。
sudo apt install chromium-browser=80.0.3987.163-0ubuntu1

追加したppaは以下のchromium-beta
sudo add-apt-repository ppa:saiarcot895/chromium-beta

pinを1001にするため、ファイルを作成する。(pinは1000以上にするといいらしいです。)
sudo gedit /etc/apt/preferences.d/ppa-saiarcot895-chromium-beta

起動したgeditに以下のテキストを貼り付け、保存する
Package: *
Pin: release o=LP-PPA-saiarcot895-chromium-beta
Pin-Priority: 1001

pinが1001になっているか確認する。
sudo apt policy chromium-browser

<<変更前>>
mh@Inspiron-3185:~$ sudo apt policy chromium-browser
[sudo] mh のパスワード:
chromium-browser:
  インストールされているバージョン: 83.0.4103.44-0ubuntu1~ppa1~20.04.1
  候補:               83.0.4103.97-0ubuntu0.20.04.1
  バージョンテーブル:
     83.0.4103.97-0ubuntu0.20.04.1 500
        500 http://ubuntutym.u-toyama.ac.jp/ubuntu focal-updates/universe amd64 Packages
 *** 83.0.4103.44-0ubuntu1~ppa1~20.04.1 500
        500 http://ppa.launchpad.net/saiarcot895/chromium-beta/ubuntu focal/main amd64 Packages
        100 /var/lib/dpkg/status
     80.0.3987.163-0ubuntu1 500
        500 http://ubuntutym.u-toyama.ac.jp/ubuntu focal/universe amd64 Packages


<<変更後>>
mh@Inspiron-3185:~$ sudo apt policy chromium-browser
chromium-browser:
  インストールされているバージョン: 83.0.4103.44-0ubuntu1~ppa1~20.04.1
  候補:               83.0.4103.44-0ubuntu1~ppa1~20.04.1
  バージョンテーブル:
     83.0.4103.97-0ubuntu0.20.04.1 500
        500 http://ubuntutym.u-toyama.ac.jp/ubuntu focal-updates/universe amd64 Packages
 *** 83.0.4103.44-0ubuntu1~ppa1~20.04.1 600
         1001 http://ppa.launchpad.net/saiarcot895/chromium-beta/ubuntu focal/main amd64 Packages
        100 /var/lib/dpkg/status
     80.0.3987.163-0ubuntu1 500
        500 http://ubuntutym.u-toyama.ac.jp/ubuntu focal/universe amd64 Packages

Pinが1001になっていれば成功となる。

これで、sudo apt updateをしても、universeにあるバージョン、 83.0.4103.97-0ubuntu0.20.04.1はアップデートの候補には上がらなくなります。

パッケージの固定化はCUIでやると大変なので、GUIでやる方が簡単だと思います。
GUIでPinを使ったパッケージの固定化にはSynapticを使うと楽にできるようです。

参考

2020.8/9 追記:
現在、VAAPIが利用できなくなりました。
最近のアップデートによりバグが発生しているようです。
Ubuntu 20.04 LTSでは、devでもbetaでもVAAPIが利用できない状態です。
代替として、FireFoxやmpvを使う方法が考えられます。

2020.9/14
VAAPIが使えるようになりました。
バージョンは85.0.4183.59-0ubuntu1~ppa1~20.04.1です。
動画の視聴にGPUが使えています。

2020.10/9
現在、VAAPIが利用できなくなりました。
vainfoで確認するとエラーがでます。
libva error: /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so init failed

グラフィックカード (GPU)はintel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controllerです。次のコマンドで調べることができます。
sudo lshw -c video
 
00:02.0 VGA compatible controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller (rev 35) (prog-if 00 [VGA controller])
        DeviceName:  Onboard IGD
        Subsystem: Dell Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller
        Flags: bus master, fast devsel, latency 0, IRQ 128
        Memory at 90000000 (64-bit, non-prefetchable) [size=16M]
        Memory at 80000000 (64-bit, prefetchable) [size=256M]
        I/O ports at f000 [size=64]
        Expansion ROM at 000c0000 [virtual] [disabled] [size=128K]
        Capabilities: [d0] Power Management version 2
        Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit-
        Capabilities: [b0] Vendor Specific Information: Len=07 <?>
        Kernel driver in use: i915
        Kernel modules: i915


OSはUbuntu 20.04.1 LTS 日本語Remix、オリジナル両方試しましたが結果は同じでダメでした。パソコンはDell inspiron 3162です。一方でAMD系のDell inspiron 3185の方はVAAPIが機能しています。

環境:
Dell inspiron 3185
Ubuntu 20.04 LTS Original
----
GPUがAMDでもVA-API (Video Accelerateion API )のドライバー i965-va-driverで動作しているようです。
youtubeの動画を全画面で再生してみましたが、
1080p60はコマ落ちが激しく快適に再生できませんでした。
しかし、1080ならコマ落ちすることなく視聴できます。
tearingはありません。

Dell inspiron 3162
Ubuntu 20.04 LTS 日本語Remix
----
youtubeの動画を全画面にして1080p60で再生しましたが、
コマ落ちなく、快適に動画を視聴できます。
60fpsは動きが滑らかで30fpsとは印象がまったく違いました。
ティアリングはありません。