MythTV
MythTV は素晴らしいマルチメディアエクスペリエンスを提供するアプリケーションスイートです。Linux が搭載されたコンピュータに PVR 機能や他のメディアタイプのサポートを提供します。静音 PC と基準に適合した TV を組み合わせることで、ホームシアターシステムの中央管理システムを作成することができます。
目次
構造
MythTV システムはバックエンドとフロントエンドに分割されています。各コンポーネントにはそれぞれ固有の機能が備わっています:
mythbackend
- テレビ番組のスケジュールと録画
- 動画データをフロントエンドにストリーミング
- コマーシャルの中断を知らせる
- 動画を別のフォーマットに変換
mythfrontend
- 綺麗な GUI を表示
- 録画されたコンテンツを再生
- 番組予約をするインターフェイスを表示
フロントエンドとバックエンドはネットワーク上の別々のコンピュータにインストールすることができ、フロントエンドを複数設定することもできます。ネットワークが届くところであればどこにでもメディアを送信する中央システムを作成することが可能です。たとえ性能がかなり低いマシンでもフロントエンドとして利用できる、柔軟性のあるシステムです。
要件
MythTV は非常にスケーラブルなシステムです。標準解像度のテレビとハードウェアアクセラレーションによる MPEG2 エンコード・デコードを使用する場合、低性能な環境でもバックエンドとフロントエンドの両方をこなせます。ファンレス環境でも Hauppauge の PVR カードを使ってバックエンドとフロントエンドの両方が動作できるという報告もあります。
一方で、HD 解像度のテレビで MPEG4 変換を行なってコマーシャルを判別するような場合、大変な馬力が必要になります。HD 環境で MythTV を使っているユーザーは大抵バックエンドにはハイエンドな CPU を使用しています。フロントエンドは XvMC のアクセラレーションを有効にすればミッドレンジのプロセッサでも問題ありません。
どんな環境でもチューナーカードは必須です。Hauppauge の PVR シリーズのカード (150, 250, 350, 500) が Linux で上手く動作し CPU の負担も少ないので MythTV では人気があります。BT878 チップセットが搭載された他のカードも使用できますが、圧縮されたストリームを吐く PVR シリーズとは違って生のフレームを出力するので動画を保存するのに CPU の負担が大きくなります。
バックエンドについては、LAMP 環境を揃えるのが良いでしょう。MythWeb を使ってウェブブラウザから番組を予約することができるようになります。必須ではありませんが、とても便利な機能です。
MythTV のインストール
mythtv パッケージと必要なプラグインをインストールしてください:
- mythplugins-mytharchive - MythTV で DVD を作成したり録画した番組を保存
- mythplugins-mythbrowser - MythTV のミニウェブブラウザ
- mythplugins-mythgallery - MythTV の画像ギャラリープラグイン
- mythplugins-mythgame - MythTV のゲームエミュレータプラグイン
- mythplugins-mythmusic - MythTV の音楽再生プラグイン
- mythplugins-mythnetvision - MythTV の MythNetvision プラグイン
- mythplugins-mythnews - MythTV のニュースチェックプラグイン
- mythplugins-mythweather - MythTV の天気チェックプラグイン
- mythplugins-mythweb - MythTV スケジューラのウェブインターフェイス
- mythplugins-mythzoneminder - MythTV の zoneminder から CCTV の映像を表示
バックエンドのセットアップ
バックエンドを設定する前に、ビデオキャプチャカードや STB からの firewire 入力が機能することを確認してください。この記事ではそれらの設定については扱いません。アメリカに居住している場合、Schedules Direct のアカウントを取得してください (テレビ番組表を安価で提供しています)。アメリカ以外に住んでいるユーザーはスクリーンスクレイパ (xmltv) を使う必要があります。
データベースの設定
mariadb をインストールして mysqld.service
を起動してください。
LAN 内の他のマシンから masterbackend サーバーに接続する場合、/etc/mysql/my.cnf
の "skip-networking" 行をコメントアウトしてください。
mysql のパスワードを設定:
# mysql_secure_installation
データベースを作成:
$ mysql -u root -p </usr/share/mythtv/mc.sql
mc.sql
ファイルが存在しない場合は、こちら から取得できます。
データベースを更新:
# mysql_upgrade -u root -p
以下を実行してタイムゾーンテーブルを追加:
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p<yourpassword> mysql
リモートマシンからフロントエンドに接続できるようにしてください:
# mysql -u root -p mysql> GRANT ALL ON mythconverg.* TO 'user'@'host.net' IDENTIFIED BY 'password'; Query OK, 0 rows affected (0.00 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec)
- user はフロントエンドを実行するユーザー名に置き換えてください (デフォルト: mythtv)。
- host.net はリモートマシンのホストネームと IP アドレスに置き換えてください。%.local や 192.168.1.% などの値も使えます。
- password は適当なパスワードに置き換えてください (デフォルト: mythtv)。
例:
# mysql -u root -p mysql> GRANT ALL ON mythconverg.* TO 'mythtv'@'192.168.0.%' IDENTIFIED BY 'mythtv'; Query OK, 0 rows affected (0.00 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec)
マスターバックエンドの設定
ウィンドウマネージャをロードしてください (lxde が軽量なのでおすすめですが、何でもかまいません)。
mythtv-setup プログラムを起動:
$ mythtv-setup
バックエンドをヘッドレスサーバーとして動作させる場合、以下のように X11 フォワーディングで mythtv-setup を起動できます:
$ ssh -X user@backend '. /etc/profile.d/perlbin.sh && LANG=C mythtv-setup'
- General menu
マスターバックエンドの場合、IP アドレスを最初と4番目のフィールドに記入してください。コンピュータをマスターとして識別してネットワーク IP アドレスを与えます。次のページでは、ライブ TV バッファや録画を保存するパスを入力します。LVM や RAID を使うことで巨大なストレージを簡単に扱うことができますが、この記事では扱いません。ライブ TV バッファを適当なサイズに設定して後の設定には触れないでください。次のページでは、ロケールの設定を行います。北アメリカではほとんどの地域で NTSC が使われています。ケーブルテレビを使うのか電波放送を使用するのかも設定してください。次の2つのページの設定はそのままでかまいません。無理に弄る必要はありません。次のページでは、録画とジョブの設定を同時に扱える高速なバックエンドが使える場合、CPU の使用量を "High" に設定して、最大同時ジョブを 2 に設定して、コマーシャルフラグのオプションにチェックを入れることを推奨します。次のページのオプションは適当に設定してください。自動コマーシャルフラグを使うことを強く推奨します。次のページは無視して設定は完了です。
- Capture card menu
カードのタイプをドロップダウンリストから選択してください。Hauppauge PVR ユーザーは MPEG-2 エンコーダのカードオプションを選びます。mythtv-setup の適当なパスを指定してください (通常は /dev/v4l/video0
)。
- Video sources menu
TV 番組表のソースを取得します。Schedules Direct を使用する場合、新しいビデオソースを作成して、名前を付けて、North America (Schedules Direct) オプションを選択して、ログイン情報を入力してください。入力した情報が正しいことを確かめるために、先に進んで番組表を取得します。
- Input connections menu
名前通りのメニューです。キャプチャカードの入力を選択して myth から接続するビデオソースを指定してください。大抵の場合、チューナーを選択すれば他の入力はそのままで問題ありません。Satellite を使っている場合、ビデオ入力を選択して、次のページで、外部のチャンネル変更プログラムによる STB のチャンネルを変更するコマンドを指定してください。この記事ではチャンネル変更プログラムのことは扱いません。
- Channel editor menu
このメニューは無視して問題ありません。
- プログラムを終了 (Esc)
- mythfilldatabase を実行:
$ mythfilldatabase
上記のコマンドで、2週間分の TV 欄が入った mysql データベースが作成されます。
mythbackend デーモンの有効化
mythbackend.service
systemd ユニットを有効化してください。
フロントエンドのセットアップ
バックエンドと比べると、フロントエンドを動作させるのは簡単です。フロントエンドのマシンはバックエンドのマシン上にあるデータベースにアクセスする権限を必要とします。バックエンドのマシンで、MySQL の記事に従ってリモートからのアクセス権限を与えてください。フロントエンドのマシンでも、pacman を使って上記の mythtv パッケージをインストールしてください。その後、通常ユーザーで X 環境に入って mythfrontend を起動します。メニューがポップアップするので、バックエンドの IP アドレスとローカルコンピュータの名前、IP アドレスを記入してください。
立ち上げるのは簡単ですが、フロントエンドにはラグジュアリーカー並みのオプションが存在します。インターレースディスプレイを使っていない場合、テレビ出力のインターレースを解除する必要があります。TV 再生メニューを開いてカーネルによるインターレース解除か bob2x によるインターレース解除を選択してください。両方を試してみてどちらか良い方を使うことを推奨します。また、一般的な設定のページで、[Alsa setup] の設定を行うと良いでしょう。ただし、環境によって設定すべき値は大きく変わるのでここでは説明しません。
Tips and tricks
GDM を使って Mythfrontend に自動ログイン
/etc/gdm/custom.conf
の [daemon] の下に以下を追加:
AutomaticLoginEnable=true AutomaticLogin=mythtv (assuming your frontend user is mythtv)
GDM#自動ログインを参照。
トラブルシューティング
XvMCW
libXvMCW.so.1 共有ライブラリのエラーが表示される場合、libxvmc をインストールしてください。
PVR150
PVR150 の /dev/video0
が開けない場合、ivtv-utils パッケージに含まれているファームウェアをインストールしてください。
Opening DVB frontend device failed
カーネルはフロントエンドデバイス (TurboSight TBS 62x1 など) を認識するのに時間を食うので systemd が mythbackend.service
を起動したときに用意ができてない場合があります。そうなると、システムログに以下のエラーが記録されます:
# DVBChan[1](/dev/dvb/adapter0/frontend0): Opening DVB frontend device failed. # eno:No such file or directory (2) # DVBChan[1](/dev/dvb/adapter0/frontend0): Failed to open DVB frontend device due to fatal error or too many attempts. # ChannelBase: CreateChannel() Error: Failed to open device /dev/dvb/adapter0/frontend0 # Problem with capture cardsCard 1failed init
デバイスが利用可能になった後に mythbackend.service
を起動させることで解決します:
/etc/udev/rules.d/99-mythbackend.rules
ファイルを作成してください:
# # Create systemd device units for capture devices # SUBSYSTEM=="video4linux", TAG+="systemd" SUBSYSTEM=="dvb", TAG+="systemd" SUBSYSTEM=="firewire", TAG+="systemd"
/etc/systemd/system/mythbackend.service.d/override.conf
ファイルを作成して systemd のデフォルト設定を上書きしてください:
# [Unit] # After=dev-dvb-adapter0-frontend0.device # Wants=dev-dvb-adapter0-frontend0.device
詳しくは MythTV wiki の Systemd mythbackend Configuration のページを見てください。
参照
- http://www.mythtv.org
- http://mythtv.info
- http://wilsonet.com/mythtv/fcmyth.php
- http://www.linhes.org [A user friendly MythTV and Linux install that uses Arch Linux]