Ubuntu 14.04 + Chinachu + Kodi(XBMC)でリアルタイム視聴(ライブTV)

2018年7月8日DTVLinux, DTV, Chinachu, Ubuntu

kodi

最近最もホットな録画ツールといえば、「Chinachu」だろう。UbuntuやCentos等にインストールできる、WebUIベースの非常に使いやすい録画ツールである。他方、Chinachuにもライブ試聴機能はついているのだが、ウェブブラウザで完結しているため、テレビに出力して大画面で……という用途には向かない。

そこで出てくるのが、KODI(旧XBMC)である。KODIは、非常に優れたホームシアターソフトである。Chinachuでの録画ファイルをKODIに参照させれば、録画したデータを非常に美しく(インタレースの解除なども行って)仕上げてくれる。

しかしあわよくば、このKODIだけで、ライブ試聴を行いたい。KODIの「ライブTV」機能を利用してみたい。そんなところで、今日はその方法を解説しよう。

インストールするものは、IPTV Simple Client

私の環境は、Ubuntu 14.04である。これにKodiの最新バージョンを乗せているのだが、ライブTVを有効にするには、第一に「IPTV Simple Client」を導入する必要がある。Ubuntu 14.04の場合、ppaを登録してインストールされるKODIにデフォルトでは入っていないため、aptを使用して次の通りインストールする必要がある。

sudo apt-get install kodi-pvr-iptvsimple

すると、Kodi上からIPTV Simple Clientを確認することが出来るだろう。

ChinachuにAPIを登録する

リアルタイム視聴のためには、Chinachuから

  • チャンネルリスト
  • epg

を取得しなくてはならない。これらを提供してくれるAPIを、既に先人が制作してくれている。その名も「Chinachu-IPTV-API-Addon」である。それぞれのファイル

  • resource-iptv.json
  • script-iptv.vm.js

をChinachuのapi配下に格納しよう。

その後、chinachuを再起動すること。なお、これらをインストールすることにより、

  • チャンネルリスト: /api/iptv/channel.m3u8
  • epg情報 : /api/iptv/epg.xml

に格納されることとなる。一度、自分のChinachuのアドレスにこれらのアドレスをくっつけてアクセスし、正常に機能していることを確認すると良い。

なお、正常に機能した場合、こんな感じ。

#EXTM3U
#EXTINF:-1 tvg-id="GR_1056",フジテレビ
http://[chinachuのアドレス]/api/channel/GR_1056/watch.m2ts?ext=m2ts&c%3Av=copy&c%3Aa=copy
#EXTINF:-1 tvg-id="GR_1048",TBS1
http://[chinachuのアドレス]/api/channel/GR_1048/watch.m2ts?ext=m2ts&c%3Av=copy&c%3Aa=copy
#EXTINF:-1 tvg-id="GR_1072",テレビ東京1
http://[chinachuのアドレス]/api/channel/GR_1072/watch.m2ts?ext=m2ts&c%3Av=copy&c%3Aa=copy
#EXTINF:-1 tvg-id="GR_1064",テレビ朝日
http://[chinachuのアドレス]/api/channel/GR_1064/watch.m2ts?ext=m2ts&c%3Av=copy&c%3Aa=copy
#EXTINF:-1 tvg-id="GR_1040",日テレ1
http://[chinachuのアドレス]/api/channel/GR_1040/watch.m2ts?ext=m2ts&c%3Av=copy&c%3Aa=copy
#EXTINF:-1 tvg-id="GR_1032",NHKEテレ1東京
http://[chinachuのアドレス]/api/channel/GR_1032/watch.m2ts?ext=m2ts&c%3Av=copy&c%3Aa=copy
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tv SYSTEM "xmltv.dtd">
<tv generator-info-name="Chinachu">
  <channel id="GR_1056" tp="21">
    <display-name lang="ja_JP">フジテレビ</display-name>
    <service_id>1056</service_id>
  </channel>
  <programme start="20150525000000 +0900" stop="20150525001000 +0900" channel="GR_1056" event_id="gr1056-ndi">
    <title lang="ja_JP">FNNニュース</title>
    <desc lang="ja_JP">きょう一日を振り返りながら、さらに新しいニュースを全国のFNN系列の記者が総力をあげ取材しお届けする日曜夜の定番ニュース「FNNニュース」 キャスター:境鶴丸</desc>
    <category lang="ja_JP">news</category>
    <category lang="en">news</category>
  </programme>
  <programme start="20150525001000 +0900" stop="20150525010000 +0900" channel="GR_1056" event_id="gr1056-ndj">
    <title lang="ja_JP">すぽると!</title>
    <desc lang="ja_JP">来週から交流戦開幕!19歳の打てる捕手・L森友哉の起用法は?石井一久が本人の心境を直撃取材▼H松坂大輔復帰登板第2戦!平成の怪物・本来の姿は蘇るのか?</desc>
    <category lang="ja_JP">sports</category>
    <category lang="en">sports</category>
  </programme>
  <programme start="20150525010000 +0900" stop="20150525010500 +0900" channel="GR_1056" event_id="gr1056-ndk">
    <title lang="ja_JP">W杯バレーへの金字塔ザ・モニュメントバレー</title>
    <desc lang="ja_JP">8月22日に開幕するワールドカップバレーそこへ至るまでにバレーボール界の歴史にそびえ立ち世界を驚かせた金字塔をSexy Zoneのナレーションで紹介する</desc>
    <category lang="ja_JP">sports</category>
    <category lang="en">sports</category>
  </programme>

script-iptv.vm.jsを修正する

現状のscript-iptv.vm.jsの生成するchannel.m3u8は、BASIC認証をかけていると、ストリーミング用のURLにアクセスすることが出来ない。従って、ストリーミング用のURLに、BASIC認証のID/PASSWORDを埋め込む必要がある。この改修を、script-iptv.vm.jsに施そう。

もともとは次のようになっているが、この「request.headers.host」の部分が、ホスト名を代入している。

            data.schedule.forEach(function(ch) {
                response.write('#EXTINF:-1 tvg-id="' + ch.id + '",' + ch.name + '\n');
                response.write(protocol + '://' + request.headers.host + '/api/channel/' + ch.id + '/watch.m2ts?ext=m2ts&c%3Av=copy&c%3Aa=copy\n');
            });

従って、この部分を次のように改変してあげれば良い。

                        data.schedule.forEach(function(ch) {
                                response.write('#EXTINF:-1 tvg-id="' + ch.id + '",' + ch.name + '\n');
                                response.write(protocol + '://[ユーザー名]:[パスワード]@[Chinachuのアドレス]/api/channel/' + ch.id + '/watch.m2ts?ext=m2ts&c%3Av=copy&c%3Aa=copy\n');
                        });

これで、channel.m3u8が吐き出すチャンネルリストをどのプログラムがアクセスしても、きちんと動画が再生出来る手はずがととのった。

IPTV Simple Clientの設定

最後に行うのは、IPTV Simple Clientの設定である。

まず、IPTV Simple Clientがインストールされていることを確認する。「設定」の「アドオン」から、検索することが出来るだろう。このような形で表示されているはずだ。

pvr-1

これをクリックして、設定画面へ進もう。設定する場所は、大きく2つだ。

ひとつは、「一般」のなかにある、「M3UプレイリストのURL」。ここには、channel.m3u8のアドレスをhttp~から入力する。もちろん、ロケーションが「リモートパス(インターネットアドレス)」になっていることを忘れないように。おそらく、http://[ユーザー名]:[パスワード]@[chinachuのアドレス]/api/iptv/channel.m3u8ではないかと思う。

pvr-2

次に入力するのは、EPGの場所。これは、epg.xmlの場所を指定してあげれば良い。同じく、ロケーションは「リモートパス」。基本的には、http://[ユーザー名]:[パスワード]@[chinachuのアドレス]/api/iptv/epg.xmlではないかと思う。

pvr-3

これでIPTV Simple clientの設定は終了だ。設定が終わった後は、プラグインを有効化しておこう。あとは、KODIの設定画面から、ライブ TVを有効にしてあげる必要がある。

設定画面から「一般」に入り、「ライブTV」を選択、ここにある「LCD有効」にチェックを入れる。

settings

もしここで、「PVRプラグインが存在しない」などのエラーが出た場合は、IPTV Simple Clientが有効化されていないため。IPTV Simple Clientの設定画面に戻り、「有効化」ボタンを押して、有効にしよう。その後、もう一度上記設定の「LCD有効」を押してあげると、チャンネルスキャンが始まり、メニューに「ライブTV」が現れる。それでもだめな場合は一度Kodiを終了し、もう一度起動してみよう。これでうまくいくことも多い。

動作の速度は、通常のTVよりは遅いが、それでも1秒程度でサクサクチャンネル切り替えをしてくれる。またYaste等のリモコンアプリを使うと、今何の番組をやっているのかを手元で見る事が出来、かつ視聴も出来るので、非常に便利だ。これさえれば、正直テレビに内蔵されているチューナーを使うことはほぼないだろう……。