Kodi
Kodi はフリーで、オープンソース (GPL) のマルチメディアプレイヤーであり、もともとは初代の XBox 上で動作していました (次世代ハードの Xbox 360 ではありません)。現在では Linux, macOS, Windows, Android, iOS などのデバイスで動作します。Kodi を使うことでよく使われているフォーマットの動画、音声、画像や、あまり有名でないフォーマットを再生・表示することができます:
- 動画 - DVD-Video, VCD/SVCD, MPEG-1/2/4, DivX, XviD, Matroska。
- 音声 - MP3, AAC。
- 画像 - JPG, GIF, PNG。
以上のフォーマットはどれも CD/DVD から直接再生したり、ハードドライブから再生することが可能です。また、Kodi はローカルネットワーク (LAN) 上のコンピュータからマルチメディアを再生したり、インターネットから直接メディアストリームを再生することもできます。詳細な情報は、Kodi FAQ を見て下さい。
バージョン12から、チューナーとバックエンドサーバー、PVR プラグインを使って TV 放送を再生したり録画することもできるようになりました。TV 放送の表示方法に関する情報は Kodi wiki にあります。
目次
インストール
公式リポジトリから kodi パッケージをインストールしてください。あなたの使い道にあわせて、pacman によって表示される任意の依存パッケージもインストールするようにします。
設定
ブート時や必要なときに自動で起動
kodi パッケージにはスタンドアロンのラッパースクリプト /usr/bin/kodi-standalone
が入っており、完全な DE がなくとも最低限のシステムでアプリケーションを実行できるようになっています。以下で記述しているように、ラッパースクリプトを有効にする方法は複数存在します。
Kodi-standalone-service
AUR の kodi-standalone-serviceAUR パッケージは kodi.service
を提供して、スタンドアロンモードで Kodi を動かすのに必要なユーザーを作成します。Xorg パッケージが 1.16-1 にアップデートされた時に Arch の開発者が削除した、レガシーな systemd サービスと post install スクリプトの代わりになるものです (このコミット を参照)。機能的には、違いはありません。
kodi.service
を起動して、ブート時に起動するように有効化してください。
Xsession と LightDM
/etc/X11/Xwrapper.config
needs_root_rights = yes
LightDM で自動ログインを使用する方法は LightDM#自動ログインを有効にする を見て下さい。Kodi には xsession として kodi.desktop
が含まれています。
/etc/lightdm/lightdm.conf
[LightDM] minimum-vt=1 run-directory=/run/lightdm [Seat:*] session-wrapper=/etc/lightdm/Xsession pam-service=lightdm-autologin autologin-user=kodiuser autologin-user-timeout=0 user-session=kodi
ソケットアクティベーション
ソケットアクティベーションを使うことで、ユーザーがリモートコントロールアプリを起動したり、Kodi の html コントロールポートに接続したときに、Kodi を起動するように設定することができます。systemctl start kodi@user.socket
でアクティベーションを起動してください (user は Kodi を起動するユーザーに置き換えて下さい)。
kodi-standalone-socket-activationAUR[リンク切れ: パッケージが存在しません] パッケージに kodi@.service
と kodi@.socket
が入っており、スタンドアロンモードでポート 8082 を使用して Kodi を起動することができます。セットアップ次第では、kodi@.socket
のポートは変える必要があります。手動で以下の systemd ファイルを使ってください。
/etc/systemd/system/kodi@.service
[Unit] Description=Launch Kodi on main display [Service] Type=oneshot Environment=DISPLAY=:0.0 Nice=-1 ExecStart=/usr/bin/su %i /usr/bin/kodi ExecStartPost=/usr/bin/bash -c "sleep 15 && systemctl start kodi@%i.socket" [Install] WantedBy=multi-user.target
/etc/systemd/system/kodi@.socket
[Unit] Conflicts=kodi@%i.service [Socket] # listen for WOL packets #ListenDatagram=9 # change this to Kodi's http control port ListenStream=8082 [Install] WantedBy=sockets.target
LIRC / irexec のリモコン操作による起動
kodi-standalone-serviceAUR と lirc パッケージを使うことで、リモコンのキーを押したときに Kodi を起動するような設定が可能です。このセットアップは Raspberry Pi などで特に有用で、例えば Pi を Wifi のアクセスポイントならびに PVR クライアントとして使用する場合など、コンピュータ自体は24時間365日動作させつつ Kodi は必要がないときは停止させることができます。Kodi を再度起動するのにキーボードにまで手を伸ばす必要はありません。
LIRC の設定を完了して、kodi-standalone-serviceAUR パッケージをインストールしてください。
以下の内容で /var/lib/kodi/.lircrc
ファイルを作成:
/var/lib/kodi/.lircrc
begin prog = irexec remote = devinput button = KEY_MEDIA config = pgrep kodi-standalone || /usr/bin/kodi-standalone -l /run/lirc/lircd repeat = 0 end
button
には Kodi を起動するのに使いたいリモコンのボタンを指定してください。irw を使うことで remote
や button
に入力するべき値を確認できます (参照: LIRC#リモコンのテスト)。
次に /usr/lib/systemd/system/
の kodi.service
を /etc/systemd/system/
にコピーして次の行を:
ExecStart = /usr/bin/kodi-standalone -l /run/lirc/lircd
以下のように置き換えてください:
ExecStart = /usr/bin/irexec
最後に kodi.service
を起動・有効化してください。
複数のノード間でデータベースを共有する
一つのメディアライブラリ (動画や音楽) を共有するように Kodi を設定するのは簡単です。共有することの利点として、一つの場所にキーメタデータが保存されることで、ネットワーク上の全てのノードでメタデータを共有・更新することができます。例えば、この設定によってユーザーは以下のことが可能になります:
- 個室で映画を視聴するのを止めて、リビングに移動して自動的に映画の続きを見る。
- メディアを既に視聴したかどうかという情報を全てのノードで共有する。
- 管理するべきライブラリはたった一つだけですむので設定が楽になる。
セットアップをするために必要な重要事項:
- ネットワークを介して見れるメディア (Kodi が読み込めるプロトコル、NFS や Samba などを使う)。
- MySQL サーバー。
このガイドでは例として以下の仮定を使います。あなたのセットアップに合わせて置き換えるようにしてください:
- メディアは次のマウントポイント上に存在している状態です:
/mnt/tv-shows
/mnt/movies
/mnt/music
。 - 全てのノードのネットワークアドレスは 192.168.0.* のサブネットに収まっているとします。
- NFS エクスポートと MySQL データベースを動かすマシンの IP アドレスは 192.168.0.105 です。
- Kodi を使用する個々のコンピュータはノードと表記します。
- Kodi を実行する Linux ユーザーは全てのノードで 'kodi' です。
詳しい情報は、公式の Kodi wiki を参照してください。
NFS サーバーのセットアップ
このセクションでは NFS エクスポートを使用する例を挙げます。ただし、上で説明したように、Kodi は様々なプロトコルを読み込むことが可能です。
NFS サーバーは nfs-utils によってインストールすることができ、コンテンツを供給するコンピュータにインストールするだけで十分です。
共有のセットアップ:
# mkdir -p /srv/nfs/{tv-shows,movies,music} # mount --bind /mnt/tv-shows /srv/nfs/tv-shows # mount --bind /mnt/movies /srv/nfs/movies # mount --bind /mnt/music /srv/nfs/music
/etc/fstab
にバインドマウントするエントリを追加:
... /mnt/tv-shows /srv/nfs/tv-shows none bind 0 0 /mnt/movies /srv/nfs/movies none bind 0 0 /mnt/music /srv/nfs/music none bind 0 0
/etc/exports
のコンテンツを共有:
/srv/nfs 192.168.0.0/24(ro,fsid=0,no_subtree_check) /srv/nfs/tv-shows 192.168.0.0/24(ro,no_subtree_check,insecure) /srv/nfs/movies 192.168.0.0/24(ro,no_subtree_check,insecure) /srv/nfs/music 192.168.0.0/24(ro,no_subtree_check,insecure)
/etc/exports
に変更を加えた時は、エクスポートを更新するようにします:
# exportfs -rav
rpcbind.service
と nfs-server.service
を起動して、ブート時に動作するように有効化してください。
任意で、次のコマンドを使って確認をします:
# showmount -e localhost Export list for localhost: /srv/nfs/tv-shows 192.168.0.0/24 /srv/nfs/movies 192.168.0.0/24 /srv/nfs/music 192.168.0.0/24
MySQL サーバーのインストールとセットアップ
ライブラリを動かすコンピュータは24時間ずっと動作している必要があり、通常は、メディアを保存するコンピュータと同じコンピュータを使います。
MySQL サーバーは mariadb でインストールすることができ、全てのノードがアクセスするコンピュータにインストールするだけで十分です。
mysqld.service
を起動して、ブート時に動作するように有効化してください。
初期設定:
# mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql # mysql_secure_installation <<follow the in-script prompts and answer "Y" to all the questions>> $ mysql -u root -p <<enter the mysqld root password assigned in the first step>> MariaDB [(none)]> CREATE USER 'kodi'@'localhost' IDENTIFIED BY 'kodi'; MariaDB [(none)]> GRANT ALL ON *.* TO 'kodi'@'localhost'; MariaDB [(none)]> \q
MySQL サーバーに他の設定をする必要はありません。
MySQL ライブラリと NFS エクスポートを使うように Kodi を設定
この例では NFS の共有を使用するので、共有にアクセスするための Kodi の任意の依存パッケージが必要になります。全ての Kodi ノードに libnfs をインストールするようにしてください。
共通の MySQL データベースを使うように Kodi を設定
Kodi に共通のデータベースを使わせるには、Kodi が動作していないのを確認して、以下のファイルを作成してください:
~/.kodi/userdata/advancedsettings.xml
<advancedsettings> <videodatabase> <type>mysql</type> <host>192.168.0.105</host> <port>3306</port> <user>kodi</user> <pass>kodi</pass> </videodatabase> <musicdatabase> <type>mysql</type> <host>192.168.0.105</host> <port>3306</port> <user>kodi</user> <pass>kodi</pass> </musicdatabase> <videolibrary> <importwatchedstate>true</importwatchedstate> <importresumepoint>true</importresumepoint> </videolibrary> </advancedsettings>
ネットワーク共有の設定
Kodi をロードして以下を辿るようにしてインターフェイスからエクスポートに対応するネットワーク共有を定義してください:
Video>Files>Add Videos>Browse>Network Filesystem(NFS)
数秒後、NFS サーバーに対応する IP アドレスが表示されるはずです。
リストから "/srv/nfs/tv-shows" を選択してから右のメニューで "OK" を選びます。この共有には "TV Shows" のカテゴリが割り当てられ、適切なスクレーパーが設定されて適当なメタデータで MySQL データベースが作成されます。
上記の手順を "movies" や "music" でも繰り返したら、Kodi を終了してください。ここで、MySQL テーブルが作成されます。
ネットワーク上の他のノードに設定をコピー
ネットワーク上の他の Kodi ノードがこのライブラリを使用するように設定するのは楽です。コンピューターに ~/.kodi/userdata/advancedsettings.xml
をコピーして Kodi を再起動するだけで終わります。
リモートコントロールの使用
Kodi はリモコンで操作するメディアセンターとして作られているので、サポートされている IR レシーバ/リモコンと PC さえあれば、LIRC やカーネルでネイティブにサポートされているモジュールを使ってリモコンを利用することができます。Kodi で正しく動作させるには、Kodi のキープレスと lirc のイベントをマップするファイルが必要になります。~/.kodi/userdata/Lircmap.xml
(大文字の 'L' に注意) に XML ファイルを作成してください。
Lircmap.xml のフォーマットは以下の通りです:
<lircmap> <remote device="devicename"> <XBMC_button>LIRC_button</XBMC_button> ... </remote> </lircmap>
- Device Name は LIRC によるリモコンの呼び名です。
lircd.conf
で Name ディレクティブを使って設定され、$ irw
を実行してからリモコンのボタンを押すことで確認できます。IRW は行の最後に、押されたボタンの名前とリモコンの名前を表示します。
- XBMC_button は keymap.xml で定義されるボタンの名前です。
- LIRC_button は
lircd.conf
で定義される名前です。# irrecord
を使ってlircd.conf
を自動生成した場合、ボタンの名前が選択されています。詳しくは LIRC を参照してください。
Lirc と Systemd で MCE リモコンを使う
lirc をインストールして mce 設定のリンクを作成します:
# ln -s /usr/share/lirc/mceusb/lircd.conf.mceusb /etc/lirc/lircd.conf
次に、リモコンが lirc プロトコルを使用しているのを確認してください:
$ cat /sys/class/rc/rc0/protocols
使用されてなかった場合、次を実行:
# echo lirc > /sys/class/rc/rc0/protocols
udev ルールを追加することで lirc をデフォルトに出来ます。ルールが動作しないようならば、単純に RUN のコマンドを実行してください。
/etc/udev/rules.d/99-lirc.rules
KERNEL=="rc*", SUBSYSTEM=="rc", ATTR{protocols}=="*lirc*", RUN+="/bin/sh -c 'echo lirc > $sys$devpath/protocols'"
最後に、lirc サービスを有効化・起動します。lirc 0.9.1 から、適切なサービスは lircd.socket
になっており、lircd.service
ではありません:
# systemctl enable lircd.socket # systemctl start lircd.socket
以上で mce リモコンが完全に動作するはずです。
HDMI-CEC と Pulse Eight USB-CEC
Kodi でリモコンを機能させる簡潔な方法は CEC を使うことです。CEC は HDMI の仕様に含まれているプロトコルです。ほとんどの最新 TV は CEC をサポートしていますが、メーカーによってはこの機能を別の名前で喧伝してることがあります。CEC 対応の TV の他に、TV からの CEC 信号を認識するハードウェアが必要で、さらにそのハードウェアは Kodi で利用できるものでなくてはなりません。そのようなデバイスとして Pulse Eight の USB-CEC アダプタ があります。USB-CEC を接続するのはとても簡単ですが、Arch で使用するには以下を実行する必要があります。
libcec
をインストールしてください。
接続時、USB-CEC の /dev
エントリ (大抵 /dev/ttyACM*
) はデフォルトで uucp
グループによって所有されています。Kodi を動かすユーザーでデバイスを使用するにはグループに属している必要があります。また、ユーザーは lock
グループにも加わっている必要があり、そうでないと Kodi はデバイスに接続できません。両方のグループにユーザーを追加するには、次を実行:
# usermod -aG uucp,lock [username]
複数のユーザーが Kodi を使う場合、上のコマンドを全てのユーザーで繰り返し実行してください。例えば、kodi-standalone
を使用する場合、適切なコマンドは:
# usermod -aG uucp,lock kodi
ログイン中のユーザーのグループを変更した場合、変更を適用するには、一度ユーザーがログアウトしてからログインしなおす必要があることを覚えておいてください。
ヒントとテクニック
視聴ログの保存
kodi-loggerAUR を使うことで kodi で視聴した動画を記録できます。
Kodi の CLI ツール
texturecacheAUR は Kodi の強力な CLI ツールです。ライブラリの管理から何を再生しているのかの確認まで、様々な作業を行うことができます。
Intel HD Graphics で動画にちらつきが発生する
映画を視聴する際にティアリングが発生してしまう場合、次を試してください: https://bbs.archlinux.org/viewtopic.php?id=176651
CD/DVD ドライブの速度のスローダウン
util-linux
パッケージの eject
プログラムを使うことでスローダウンできますが、メディアを変更した時に設定はクリアされてしまいます。
以下の udev ルールで永続的に速度を落とせます:
/etc/udev/rules.d/dvd-speed.rules
KERNEL=="sr0", ACTION=="change", ENV{DISK_MEDIA_CHANGE}=="1", RUN+="/usr/bin/eject -x 2 /dev/sr0"
sr0
は光学ドライブのデバイス名に置き換えてください。2倍速から4倍速に設定したい場合は -x 2
を -x 4
で置き換えてください。
ファイルを作成したら、次のコマンドで udev ルールをリロードします:
# udevadm control --reload
ウェブサーバーにポート 80 を使う
Kodi にはウェブインターフェイスを使って操作をすることができるウェブサービスが付いています。デフォルトでは、このサービスはポート 8080
を使います。80
を使うには root 権限が必要なためです。以下を実行することで数字の低いポート番号を使えるようにできます:
# setcap 'cap_net_bind_service=+ep' /usr/lib/kodi/kodi.bin
kodi.service
を再起動して設定メニューでポートを 80
に設定してください (Services->Webserver->Port)。
ALSA を使う
PulseAudio が正しく動作しない場合、AE_SINK=ALSA
環境変数を使って Kodi を起動することで ALSA を直接使用するようにしてみてください。NUC デバイスにおける設定方法が Kodi wiki の ページ に載っています。
Raspberry Pi
Kodi は Raspberry Pi (RPi), RPi2, RPi3 でスムーズに動作します。注意すべきは以下の点です:
- kodi パッケージの代わりに Arch Linux ARM リポジトリ から kodi-rbp (安定版) または kodi-rbp-git (開発版) パッケージをインストールしてください。
- パッケージにはスタンドアロンモードで動作させるための systemd サービスが入っています。
- デフォルトでは GPU のために予約されているメモリは 64 MB になっています。これでは GPU によって HD 動画の再生を支援するには足りません。
/boot/config.txt
のgpu_mem
タグを編集して 128 MB などとしてください。 - 物理キーボードによる入力を有効にするには udev ルール
SUBSYSTEM=="tty", KERNEL=="tty[0-9]*", GROUP="tty", MODE="0660"
を/etc/udev/rules.d/raspberrypi.rules
に追加して kodi ユーザーをtty
とinput
グループに追加してください。
ウィンドウマネージャで kodi を実行
ウィンドウマネージャで kodi を実行すると終了時に画面が表示されなくなることがあります。そのような場合は他の tty に切り替えてください。また、以下のスクリプトを使って kodi を実行することで解決する場合があります (root ユーザーで実行してください):
kodi.sh
#!/bin/bash kodi-standalone sudo chvt 2 sleep 1 sudo chvt 1
sudoers
ファイルに以下の行を追加して chvt
を実行するときに sudo からパスワードを要求されないようにしてください:
/etc/sudoers
UserNameHere ALL=NOPASSWD: /usr/bin/chvt
右クリックメニューのキー
Raspberry Pi では物理キーボードの "Menu Key" が kodi で機能しないことがあります。"Enter Key" を長押しすることで kodi のサブメニューを開けます。
USB DAC が動作しない
USB DAC/サウンドカードを使っている場合、音声設定から DAC を選択したときに音にノイズが入ったり音が鳴らなくなることがあります。
guisettings.xml
(kodi.service
を使用している場合 /var/lib/kodi/.kodi/userdata/
に存在します) を開いて以下の行を:
<processquality default="true">101</processquality>
以下のように変更してください:
<processquality default="false">100</processquality>
トラブルシューティング
何かエラーが発生した場合はまず ~/.kodi/temp/kodi.log
を確認してみてください。
フルスクリーンモードで Kodi が複数のディスプレイにまたがってしまう
マルチモニター環境では、Kodi はデフォルトで全てのスクリーンにまたがって表示するようになっています。SDL_VIDEO_FULLSCREEN_HEAD
環境変数を表示したいディスプレイの番号に設定することでフルスクリーンモードを制限することができます。例えば、Kodi をディスプレイ0で表示するには、以下の行を Kodi ユーザーの Bashrc に追加します:
SDL_VIDEO_FULLSCREEN_HEAD=0
Intel HD Graphics で動画にティアリングが発生する
動画を視聴している際にちらつきが発生する場合、次のページを見てください: https://bbs.archlinux.org/viewtopic.php?id=176651
picom などの X11 コンポジタを使うことで動画のちらつきがなくならないか試してみてください。intel ドライバーは必ずしもインストールしなくてはならないということはありません。
ソフト字幕が表示されない
字幕を抽出するのには ffmpeg パッケージが使われています。
H.264 の再生でシングルコアしか使われない
あなたの設定でハードウェアアクセラレーションが利用されない場合、アクセラレーションを無効にして明示的にビデオデコードをソフトウェアに設定してください。これは ビデオデコードがソフトウェアに設定されている場合にのみ H.264 デコードがマルチスレッドで処理されるから です。System Settings
から Video
を開いてください。settings level
を Advanced
または Expert
に設定して Acceleration
を開いてください。そこで、Decoding method
を software
に設定できます。
参照
- Kodi Wiki - 特にArch Linuxに関する多くの情報を含む優れたリソース
- http://superrepo.org/ - xbmc プラグインライブラリ