Kodi
Kodi はフリーで、オープンソース (GPL) のマルチメディアプレイヤーであり、もともとは初代の XBox 上で動作していました (次世代ハードの Xbox 360 ではありません)。現在では Linux, Mac OS X, 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
LightDM で自動ログインを使用する方法は LightDM#自動ログインを有効にする を見て下さい。Kodi には xsession として kodi.desktop
が含まれています。
/etc/lightdm/lightdm.conf
[LightDM] minimum-vt=1 run-directory=/run/lightdm [SeatDefaults] session-wrapper=/etc/lightdm/Xsession pam-service=lightdm-autologin autologin-user=kodi autologin-user-timeout=0 user-session=kodi
ソケットアクティベーション
ソケットアクティベーションを使うことで、ユーザーがリモートコントロールアプリを起動したり、Kodi の html コントロールポートに接続したときに、Kodi を起動するように設定することができます。systemctl start kodi@user.socket
でアクティベーションを起動してください (user は Kodi を起動するユーザーに置き換えて下さい)。セットアップ次第では、kodi@.socket のポートは変える必要があります。
/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
複数のノード間でデータベースを共有する
一つのメディアライブラリ (動画や音楽) を共有するように Kodi を設定するのは簡単です。共有することの利点として、一つの場所にキーメタデータが保存されることで、ネットワーク上の全てのノードでメタデータを共有・更新することができます。例えば、この設定によってユーザーは以下のことが可能になります:
- 個室で映画を視聴するのを止めて、リビングに移動して自動的に映画の続きを見る。
- メディアを既に視聴したかどうかという情報を全てのノードで共有する。
- 管理するべきライブラリはたった一つだけですむので設定が楽になる。
セットアップをするために必要な重要事項:
- ネットワークを介して見れるメディア (Kodi が読み込めるプロトコル、NFS や Samba などを使う)。
- MySQL サーバー。
このガイドでは例として以下の仮定を使います。あなたのセットアップに合わせて置き換えるようにしてください:
- メディアは次のマウントポイント上に存在している状態です:
/mnt/tv-shows
/mnt/movies
/mnt/music
。 - 全てのノードのネットワークアドレスは 192.168.0.* のサブネットに収まっているとします。
- NFSv4 エクスポートを使用することとします。
- NFS エクスポートと MySQL データベースを動かすマシンの IP アドレスは 192.168.0.105 です。
- Kodi を使用する個々のコンピュータはノードと表記します。
- Kodi を実行する Linux ユーザーは全てのノードで 'kodi' です。
詳しい情報は、公式の Kodi wiki を参照してください。
NFS サーバーのセットアップ
このセクションでは NFS エクスポート (NFSv4) を使用する例を挙げます。ただし、上で説明したように、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_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' IDENTIFIED BY 'kodi'; MariaDB [(none)]> GRANT ALL ON *.* TO 'kodi'; 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 を参照してください。
- この記事のカバー範囲からは外れるので、詳しい情報やヘルプは Kodi Wiki の Lircmap.xml ページを見てください。
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
ログイン中のユーザーのグループを変更した場合、変更を適用するには、一度ユーザーがログアウトしてからログインしなおす必要があることを覚えておいてください。
Tips and Tricks
Wunderground Weather Add-on を修正する
現在 wunderground はウェザーデータを取得するのに API キーが必要となっています。kodi ユーザーなら API キーは無料で取得できます。キーを取得して、アドオンを設定するには、以下の手順に従ってください:
- wunderground の自動システムで登録して API キーを取得。
- kodi の wunderground.py スクリプト用にキーを整形 (キーを反転して base64 でエンコードする必要があります、下を参照)。
- 整形したキーを
~/.kodi/addons/weather.wunderground/resources/lib/wunderground.py
の WAIK 変数に入力。
API キーを反転して base64 エンコードするには、以下のツーライナーを実行してください ("key" 変数をあなたの API キーに置き換えます):
$ key=9cc49125b91eb85a $ echo $key|rev|base64 YTU4YmUxOWI1MjE5NGNjOQo=
上記のサンプルキーの場合、~/.kodi/addons/weather.wunderground/resources/lib/wunderground.py
の最初の行は以下のようになります:
# -*- coding: utf-8 -*- import urllib2, gzip, base64 from StringIO import StringIO WAIK = 'YTU4YmUxOWI1MjE5NGNjOQo='
フルスクリーンモードで 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
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 を直接使用するようにしてみてください。
ソフト字幕が表示されない
字幕を抽出するのには ffmpeg パッケージが使われています。
H.264 の再生でシングルコアしか使われない
あなたの設定でハードウェアアクセラレーションが利用されない場合、アクセラレーションを無効にして明示的にビデオデコードをソフトウェアに設定してください。これは ビデオデコードがソフトウェアに設定されている場合にのみ H.264 デコードがマルチスレッドで処理されるから です。System Settings
から Video
を開いてください。settings level
を Advanced
または Expert
に設定して Acceleration
を開いてください。そこで、Decoding method
を software
に設定できます。
Raspberry Pi
Kodi は Raspberry Pi と Raspberry Pi 2 でスムーズに動作します。注意すべきは以下の点です:
- kodi パッケージの代わりに Arch Linux ARM リポジトリ から kodi-rbp パッケージをインストールしてください。
- パッケージにはスタンドアロンモードで動作させるための systemd サービスが入っています。
- デフォルトでは GPU のために予約されているメモリは 64 MB になっています。これでは GPU によって HD 動画の再生を支援するには足りません。
/boot/config.txt
のgpu_mem
タグを編集して 128 MB などとしてください。 - ハードウェアアクセラレーションを使うには omxplayer-git, xorg-xrefresh, xorg-xset をインストールしてください。
- udev ルール
SUBSYSTEM=="tty", KERNEL=="tty0", GROUP="tty", MODE="0666"
を/etc/udev/rules.d/raspberrypi.rules
に追加することで物理キーボードによる入力が有効になります。
参照
- Kodi Wiki - Excellent resource with much information about Arch Linux specifically