Plexで地上波デジタル等のテレビ番組をリアルタイムストリーミングで見る方法(Ubuntu + Plex Media Server + TVheadend)

2018年7月8日DTVLinux, DTV, Chinachu, Ubuntu, plex, TVheadend, LiveTVH

Plexという有名なメディアサービスがあって、サーバーにインストールすることでいろいろな場所から動画ファイルを見ることが出来る。

Media Server | Plex allows you to stream video smarter.
Plex media server allows you to aggregate all your personal media and access it anywhere you go. Enjoy your own content on all your devices with Plex.

今回はこのPlexで地上波デジタルなどのテレビ番組を見る方法を紹介する。

PlexMediaServerのインストール

Ubuntuで使う場合には、上記のサイトからPlex Media Serverをdeb形式でダウンロードし、インストールすればOK。以下でスタートできる。

$ sudo service plexmediaserver start

あとは32400ポートがデフォルトのポートになっているので、そこにアクセスしてブラウザベースで設定をする。

TVheadendのインストール

mpeg2のm2tsをPlexに流し込むためには、TVheadendというものをインストールする必要がある。なぜかというと、Plexはmpeg2に対応していないので、TVheadendで一度H.264に変換してあげて、それをPlexに流し込む必要があるためだ。

今回はUbuntuの環境にインストールするので、下記の通りインストールを実行。

$ sudo apt-add-repository ppa:mamarley/tvheadend-git-stable 
$ sudo apt-get update
$ sudo apt-get install tvheadend
$ sudo service tvheadend start

ユーザー名とパスワードを設定する画面が出るので、適当に設定する。
http://localhost:9981で動作するので、ここにアクセスする。

TVheadendを設定する

設定は非常に分かりにくい。

スタートウィザードの設定

最初にスタートウィザードが現れるので、こんな感じで設定。
startwizard

次に出てくるアカウントの設定はパス。その次に、プレイリストの選択画面がでるので、ここにプレイリストのアドレスを突っ込む。

m3u8

次へ進むと「Scan Progress」がはじまるので、100%になるまで待機。
といっても、94%くらいで止まることがあるので、「Found Services」がMirakurunに設定しているチャンネル数とイコールになっていたら、「次へ」を押してしまおう。

次の画面では、「Map All Services」だけ選択して次へ進む。

文字コードを設定する

メニューの中から「Networks」を選ぶと、今登録したものが「IPTV Automatic Network」として登録されている。

そこで「Edit」を開くと、「Advanced Settings」の中に「Character set:」という項目があるので、ここで「UTF-8」を指定する。
同様に、「Content character set:」も「UTF-8」を指定する。

utf-8
(Provider Network nameは人によってたぶん異なる)

そのあとに、SaveをしてApplyをしておこう。

設定が正しくできていることを確認する

DVB Inputsメニューから「Services」を見ると、チャンネルの一覧が出ているはずだ。ここに出てきていれば、正しく設定されている。

EPGを設定する

EPGは、設定しても文字化けしてしまうのだが、とりあえず。

「Channels/EPG」メニューから「Channels」を選び、「Add」を選択しよう。
そこに、下記の画像のような形で設定をし、Apply&Saveをする。

epg
(Disabledではなく、Enabledが正しい…)

その後、「Map Services」から「Map all services」を選択する。そうすると、チャンネルとEPGの紐付けが行われる。

「Electronic Program Guide」で表示されていればうまくいっているのだが、もし表示されていなければ「DVB Inputs」から「Map selected」の下、「Map All Services」をクリックする。なお、この操作を行った場合には、一度全チャンネルを選択し、Charsetをもう一度UTF-8に設定すること。

TVheadendからH.264にエンコードするプロファイルを作成する

確認するといっても、TVheadendからは確認しない。
「Configuration」から、「Stream Profiles」を確認しよう。いくつかのプロファイルが存在しているはずだ。

何か適当なプロファイル(例えば「webtv-h264-aac-mpegts」)をクリックすると、下の方に「Transcoding Option」が存在すると思う。ここで、VideoCodecがH.264になっているものを選択しよう。

場合によってはデフォルトの設定から変更しても良い。今回はResolutionを720に、プリセットをveryfastに変更した。変更した後は、左上の「Save」を押すことを忘れないように。

preset

これで、TVheadendの設定は終わり。

Plex Media ServerにIPTV用のプラグインをインストールする

今回使用するのは、「LiveTVH.bundle」。

taligentx/LiveTVH.bundle
LiveTVH.bundle - Live TV streaming with Plex and Tvheadend

Plexのプラグインディレクトリに、LiveTVH.bundleを配置してあげる。

$ cd /var/lib/plexmediaserver/Library/Application\ Support/Plex\ Media\ Server/Plug-ins
$ git clone https://github.com/taligentx/LiveTVH.bundle.git

これで、LiveTVH.bundleディレクトリが生成された。

Plex Media Serverに正しく登録されていることを確認する

ここで一度、Plex Media Serverを再起動する。

$ sudo service plexmediaserver restart

そうすると、Plexの左側に「チャンネル」という欄が出現するはずだ。

channe

これをクリックすると、「IPTV」というのが表示されるはずである。

livetvh

設定へ入り、次のように設定する。

livetvh-setting

ここで、「Streaming Profile」とあるところには、先ほどTVheadendで作成ないし利用したプロファイルの名称を入れる。
間違ってもデフォルトで入っている「basefile」は使わないように。これを使うと、mpeg2が利用されてしまうためだ。
あくまでもTVheadendでトランスコードをする。

TVheadend + Plex Media Serverの動作確認

LiveTVHの中に入ると、チャンネルが並んでいるはずだ。
適当なチャンネルを選んで「再生」ボタンをクリックしてみよう。そのまま再生されるはずである。

test-sample

これにて設定は完了。お疲れさまでした!