TV録画予約視聴サーバー構築(epgrec UNA)

最終更新日: 2017.09.17

<<トップページ <<新着情報 <<逆引き集 <<リンク集 <<サイト内検索 <<メルマガ <<Scientific Linuxで自宅サーバー構築 <<Fedoraで自宅サーバー構築

■概要

TV録画予約視聴サーバーを構築する。ここでは、epgrec UNAを導入してWebブラウザインタフェースでTV番組表を元にTV番組のリアルタイム視聴および、録画予約ができるようにする。録画した番組はPCまたは、DLNAクライアント経由でTVやiPhoneで視聴できるようにする。⇒スクリーンショット(epgrec UNAのベースであるepgrec本家のページ)

Apache+PHPMariaDB(MySQL)chrony(NTP)が導入済であること

【必要な機器】
TVチューナー(PT3)
カードリーダー
B-CASカード
未使用のB-CASカードがない場合はhttps://www.b-cas.co.jp/support/bcascard/public/
で追加発行可能



■事前準備

  • TVチューナー(PT3)をサーバーに接続してアンテナケーブルを接続する※PT3アンテナ接続先区分・・・S:衛星放送/T:地上放送
  • カードリーダーをサーバーに接続してB-CASカードを挿入する

■カードリーダー設定

[root@centos ~]# yum -y install ccid pcsc-lite pcsc-lite-devel pcsc-lite-libs perl-ExtUtils-MakeMaker ← 必要パッケージインストール

[root@centos ~]# wget http://ludovic.rousseau.free.fr/softwares/pcsc-perl/pcsc-perl-1.4.14.tar.bz2 ← pcsc-perlダウンロード
※最新版のURLはダウンロードページで確認すること

[root@centos ~]# tar jxvf pcsc-perl-1.4.14.tar.bz2 ← pcsc-perl展開

[root@centos ~]# cd pcsc-perl-1.4.14/ ← pcsc-perl展開先ディレクトリへ移動

[root@centos pcsc-perl-1.4.14]# perl Makefile.PL && make && make install ← pcsc-perlインストール

[root@centos pcsc-perl-1.4.14]# cd ← ホームディレクトリへ戻る

[root@centos ~]# rm -rf pcsc-perl-1.4.14* ← pcsc-perl展開元ファイル、展開先ディレクトリ削除

[root@centos ~]# wget http://ludovic.rousseau.free.fr/softwares/pcsc-tools/pcsc-tools-1.5.2.tar.bz2 ← pcsc-toolsダウンロード
※最新版のURLはダウンロードページで確認すること

[root@centos ~]# tar jxvf pcsc-tools-1.5.2.tar.bz2 ← pcsc-tools展開

[root@centos ~]# cd pcsc-tools-1.5.2/ ← pcsc-tools先ディレクトリへ移動

[root@centos pcsc-tools-1.5.2]# ./configure && make && make install ← pcsc-toolsインストール

[root@centos pcsc-tools-1.5.2]# cd ← ホームディレクトリへ戻る

[root@centos ~]# rm -rf pcsc-tools-1.5.2* ← pcsc-tools展開元ファイル、展開先ディレクトリ削除

[root@centos ~]# systemctl start pcscd ← pcscd起動

[root@centos ~]# systemctl enable pcscd ← pcscd自動起動設定

[root@centos ~]# pcsc_scan ← B-CASカードスキャン確認
・
・
・
        Japanese Chijou Digital B-CAS Card (pay TV) ← 左記メッセージ確認

Ctrlキー+Cキー押下 ← スキャン停止

■TVチューナー設定

EPELリポジトリ導入(EPEL)を参照してEPELリポジトリを導入する

[root@centos ~]# yum -y install dkms ← dkmsインストール

[root@centos ~]# git clone https://github.com/m-tsudo/pt3.git ← PT3ドライバダウンロード

[root@centos ~]# cd pt3/ ← PT3ドライバダウンロード先ディレクトリへ移動

[root@centos pt3]# make && make install ← PT3ドライバインストール

[root@centos pt3]# sh ./dkms.install ← DKMS有効化※kernelアップデート時に自動でPT3ドライバを再インストールするようにする

[root@centos pt3]# echo 'blacklist earth-pt3' >> /etc/modprobe.d/blacklist.conf

[root@centos pt3]# cd ← ホームディレクトリへ戻る

[root@centos ~]# rm -rf pt3/ ← PT3ドライバダウンロード先ディレクトリ削除

[root@centos ~]# reboot ← システム再起動

[root@centos ~]# ls /dev/ | grep pt3 ← TVチューナー認識確認
pt3video0
pt3video1
pt3video2
pt3video3


■TV録画ソフト導入

(1)libarib25インストール
[root@centos ~]# yum -y install cmake ← 必要パッケージインストール

[root@centos ~]# git clone https://github.com/stz2012/libarib25.git ← libarib25ダウンロード

[root@centos ~]# cd libarib25/ ← libarib25ダウンロード先ディレクトリへ移動

[root@centos libarib25]# cmake . && make && make install ← libarib25インストール

[root@centos libarib25]# cd ← ホームディレクトリへ戻る

[root@centos ~]# rm -rf libarib25/ ← libarib25ダウンロード先ディレクトリ削除

[root@centos ~]# echo /usr/local/lib > /etc/ld.so.conf.d/usr-local-lib.conf ← libarib25ライブラリを共有ライブラリへ追加

[root@centos ~]# ldconfig ← libarib25ライブラリを共有ライブラリへ反映

(2)recpt1インストール
[root@centos ~]# git clone https://github.com/stz2012/recpt1.git ← recpt1ダウンロード

[root@centos ~]# cd recpt1/recpt1/ ← recpt1ダウンロード先ディレクトリへ移動

[root@centos recpt1]# ./autogen.sh && ./configure --enable-b25 && make && make install ← recpt1インストール

[root@centos recpt1]# cd ← ホームディレクトリへ戻る

[root@centos ~]# rm -rf recpt1/ ← recpt1ダウンロード先ディレクトリ削除

■TV録画ソフト確認

[root@centos ~]# recpt1 --b25 --strip 27 10 test.ts ← 27チャンネル(関東圏のNHK総合(注))を10秒間録画してtest.tsという名前で保存
using B25...
enable B25 strip
pid = 27553
C/N = 33.028596dB
Recording...
Recorded 11sec
(注)チャンネルは地域によって異なるので、地上デジタル放送チャンネル一覧表で確認すること
例として、関東で東京スカイツリーから電波を受信している場合、NHK総合のチャンネル番号は27

WinSCPで録画ファイルをダウンロードしてVLC media playerで再生できるか確認

[root@centos ~]# rm -f test.ts ← 録画ファイル削除



■epgrec UNA用DB設定

[root@centos ~]# mysql -u root -p ← MariaDBへrootでログイン
Enter password: ← MariaDBのrootパスワードを応答
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.52-MariaDB MariaDB Server

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create database epgrec; ← epgrec UNA用DB作成
Query OK, 1 row affected (0.09 sec)

MariaDB [(none)]> grant all on epgrec.* to epgrec@localhost identified by 'パスワード'; ← epgrec UNA用ユーザー登録
Query OK, 0 rows affected (0.33 sec)

MariaDB [(none)]> exit ← MariaDBから抜ける
Bye

■epgrec UNAインストール

(1)epgdump UNAインストール
適当な何かの別館よりepgdump UNAをダウンロードしてWinSCPでサーバーへアップロードする
[root@centos ~]# tar zxvf epgdumpUNA160127.tar.gz ← epgdump UNA展開

[root@centos ~]# cd epgdump/ ← epgdump UNA展開先ディレクトリへ移動

[root@centos epgdump]# make && make install ← epgdump UNAインストール

[root@centos epgdump]# cd ← ホームディレクトリへ戻る

[root@centos ~]# rm -rf epgdump* ← epgdump UNA展開元ファイル、展開先ディレクトリ削除

(2)epgrec UNAインストール
適当な何かの別館よりepgrec UNAをダウンロードしてWinSCPでサーバーへアップロードする
※ダウンロードの際にパスワード(全角文字)が必要(パスワードヒントは上記ページ内のプロフィールを参照)
[root@centos ~]# tar zxvf epgrecUNA_151114.tar.gz ← epgrec UNA展開

[root@centos ~]# tar zxvf epgrecUNA151114Fix1.tar.gz ← epgrec UNAパッチ1展開

[root@centos ~]# tar zxvf epgrecUNA151114Fix2.tar.gz ← epgrec UNAパッチ2展開

[root@centos ~]# mv epgrec /var/www/ ← epgrec UNA展開先ディレクトリを移動

[root@centos ~]# chown -R apache:apache /var/www/epgrec/ ← epgrec UNA展開先ディレクトリ所有者をApache実行ユーザーに変更

[root@centos ~]# rm -f epgrecUNA_151114.tar.gz ← epgrec UNA展開元ファイルを削除

[root@centos ~]# rm -f epgrecUNA151114Fix1.tar.gz ← epgrec UNAパッチ1展開元ファイルを削除

[root@centos ~]# rm -f epgrecUNA151114Fix2.tar.gz ← epgrec UNAパッチ2展開元ファイルを削除

■epgrec UNA設定

[root@centos ~]# vi /var/www/epgrec/config.php ← epgrec UNA設定ファイル編集
地上デジタル放送チャンネル一覧表を参照して自分の地域に合わせてチャンネル番号を編集(下記は神奈川県横浜地域の例)
// 首都圏用地上デジタルチャンネルマップ
// 識別子 => チャンネル番号
$GR_CHANNEL_MAP = array(
        'GR27' => '27',         // NHK
        'GR26' => '26',         // 教育
        'GR25' => '25',         // 日テレ
        'GR22' => '22',         // 東京
        'GR21' => '21',         // フジ
        'GR24' => '24',         // テレ朝
        'GR23' => '23',         // テレ東
//      'GR16' => '16',         // MX TV(スカイツリー)
//      'GR20' => '20',         // MX TV(東京タワー)
        'GR18' => '18',         // テレ神
//      'GR30' => '30',         // 千葉
//      'GR32' => '32',         // テレ玉
        'GR28' => '28',         // 大学
);

// 第一チューナー設定(主にPTn)
define( 'TUNER_UNIT1', 2 ); ← チューナー数(TVチューナー数×2)を設定

// リアルタイム視聴
define( 'REALVIEW', TRUE ); ← リアルタイム視聴有効化

define( 'HTTPD_USER', 'apache' );                                     // HTTPD(apache)アカウント ← ユーザーをapacheに変更
define( 'HTTPD_GROUP', 'apache' );                                    // HTTPD(apache)アカウント ← グループをapacheに変更

[root@centos ~]# vi /var/www/epgrec/recomplete.php ← recomplete.php編集
        $ss = stat( '/var/log/syslog' );
        ↓
        $ss = stat( '/var/log/messages' ); ← シスログファイル名を変更

                $sys_logs = file( '/var/log/syslog', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES );
                ↓
                $sys_logs = file( '/var/log/messages', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES ); ← シスログファイル名を変更

[root@centos ~]# vi /var/www/epgrec/Reservation.class.php ← Reservation.class.php編集
                        // AT発行準備
                        $cmdline = $settings->at.' '.date('H:i m/d/Y', $at_start);
                        ↓
                        $cmdline = $settings->at.' -M '.date('H:i m/d/Y', $at_start); ← 録画完了時にroot宛にメールが通知されないようにする

[root@centos ~]# vi /var/www/epgrec/templates/recordedTable.html ← recordedTable.html編集
                        str += '<form><div style="text-align:center;">録画ファイルも削除する<input type="checkbox" id="delete_file" name="delete_file" value="1" checked="checked"></div></form>'; ← 録画削除時にデフォルトで録画ファイルも削除するようにする

[root@centos ~]# rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm ← nux-dextopリポジトリインストール

[root@centos ~]# yum -y install ffmpeg ← ffmpegインストール(録画済一覧上に表示するサムネイル画像作成、動画形式変換用)


■Apache設定

[root@centos ~]# yum -y install php-mysql php-process php-gd ← 必要パッケージをインストール

[root@centos ~]# usermod -s /bin/bash apache ← apacheにシェルを与える(録画予約コマンドを発行できるようにするため)

[root@centos ~]# vi /etc/httpd/conf.d/epgrec.conf ← epgrec UNA用Apache設定ファイル作成
Alias /epgrec /var/www/epgrec
# TV録画予約ページへ内部からのみアクセス可能とする
<Location /epgrec>
    <IfModule mod_authz_core.c>
        # Apache 2.4
        Require ip 127.0.0.1
        Require ip 10.0.0.0/8
        Require ip 172.16.0.0/12
        Require ip 192.168.0.0/16
    </IfModule>
    <IfModule !mod_authz_core.c>
        # Apache 2.2
        Order allow,deny
        Allow from 127.0.0.1
        Allow from 10.0.0.0/8
        Allow from 172.16.0.0/12
        Allow from 192.168.0.0/16
    </IfModule>
</Location>

[root@centos ~]# vi /etc/php.ini ← PHP設定ファイル編集
date.timezone = "Asia/Tokyo" ← タイムゾーンを日本に設定

[root@centos ~]# systemctl reload httpd ← Apache設定反映

■epgrec UNA初期設定

http://サーバーIPアドレス/epgrec/へアクセスする

「以上を確認し次の設定に進む」をクリック

MySQL接続ユーザー名・・・epgrec
MySQL接続パスワード・・・DB設定時に登録したepgrecユーザーのパスワード
使用データベース名・・・epgrec
サムネールの使用・・・使用する
使用コマンドのパス設定−sleep・・・/usr/bin/sleep
「設定を保存する」ボタン押下

地デジチューナーの台数・・・2※TVチューナー数×2を指定する
BSチューナーの台数・・・2※TVチューナー数×2を指定する(BSを視聴できる場合)
CS録画の有無・・・行う※CSを視聴できる場合
録画ファイル名の形式・・・%YEAR%.%MONTH%.%DAY%(%DOWJ%)%HOUR%:%MIN%:%SEC%_%TYPE%%CH%_%TITLE%※録画ファイル名を「2017.07.22(土)21:00:00_BSBS9_1_【最新作】[映][SS]バイオハザード:ザ・ファイナル.ts」のようなファイル名にする
「設定を保存する」ボタン押下

「このリンクをクリックするとEPGの初回受信を開始します。」をクリック

EPGの初回受信を行います。x分程度後にepgrecのトップページを開いてください。
と表示されるので、上記のx分程度後にhttp://サーバーIPアドレス/epgrec/へアクセスする

□TV番組表が表示されること

[root@centos ~]# vi /etc/cron.d/epgrec ← TV番組表定期更新設定ファイル作成
29 4 * * * apache /var/www/epgrec/shepherd.php ← 毎日4時29分※にTV番組表を更新
※録画、視聴を行わない時間を指定する

■epgrec UNA確認

http://サーバーIPアドレス/epgrec/へアクセスする

□TV番組表が表示されること
□各TV局下の「視聴」をクリックで現在放送中の番組をリアルタイム視聴できること⇒VLC media playerでasxファイルを再生する
□録画できること(番組選択して「簡易予約」ボタン押下)
□録画済動画を視聴できること⇒VLC media playerでasxファイルを再生する

epgrec UNAの使い方⇒epgrecの使い方(epgrec UNAのベースであるepgrec本家のページ)を参照

■DLNAサーバー導入

録画データをTVやiPhoneでも視聴できるようにするため、DLNAサーバーを導入する。

■動画形式変換

デフォルトの録画形式であるMPEG2-TS形式はファイルサイズが大きいので、録画終了後にファイルサイズの小さいMPEG4形式へ変換後に元のMPEG2-TS形式ファイルを削除してディスク容量を節約できるようにする。
なお、PCの性能により変換には長時間かかるため、視聴後に削除するようなファイルは変換時間が無駄なので、デフォルトのMPEG2-TS形式で録画するようにし、視聴後にも保存しておくようなファイルのみMPEG4形式へ変換するような使い分けをする。

(1)トランスコード設定
[root@centos ~]# cp /var/www/epgrec/settings/trans_config.php.sample /var/www/epgrec/settings/trans_config.php ← トランスコード設定ファイルをサンプルよりコピー

[root@centos ~]# vi /var/www/epgrec/settings/trans_config.php ← トランスコード設定ファイル編集
$TRANS_MODE = array(
        5 => array(
                'name'    => 'H264-HD',                         // モードの表示名
・
・
・
                'tm_rate' => 0.0, ← 変換監視時間を無制限にする※タイムアウトで変換処理が中断されないようにする
        ),
        6 => array(
                'name'    => 'H264-SD',
・
・
・
                'tm_rate' => 0.0, ← 変換監視時間を無制限にする※タイムアウトで変換処理が中断されないようにする
        ),

(2)トランスコード確認
番組選択して「予約カスタマイズ」ボタン押下
「録画モード」・・・"H264-HD(解像度:元のまま)"または"H264-SD(解像度:640x360)"を選択
「元ファイル削除」・・・チェック
「予約する」ボタン押下

□録画終了後に自動的にMPEG4形式へ変換が行われ、変換完了後に元のMPEG2-TS形式ファイルが削除されること※変換中でも変換元のMPEG2-TS形式ファイルの視聴は可能

(3)録画済ファイルのトランスコード
MPEG2-TS形式で録画したファイルを後からMPEG4形式へ変換する場合。
[root@centos ~]# cd /var/www/epgrec/video/ ← 録画ファイル格納先ディレクトリへ移動

[root@centos ~]# (cmd='ffmpeg -y -i 変換元MPEG2-TS形式ファイル名.ts -f mp4 -vcodec libx264 -bufsize 20000k -maxrate 25000k -acodec copy -bsf:a aac_adtstoasc -threads auto 変換先MPEG4形式ファイル名.mp4' ; nohup $cmd > /tmp/ffmpeg.log 2>&1 && (echo $cmd | mail -s "Transcode finish" root) &) ← H264-HDに変換する場合

[root@centos ~]# (cmd='ffmpeg -y -i 変換元MPEG2-TS形式ファイル名.ts -f mp4 -vcodec libx264 -s 640x360 -bufsize 20000k -maxrate 25000k -acodec copy -bsf:a aac_adtstoasc -threads auto 変換先MPEG4形式ファイル名.mp4' ; nohup $cmd > /tmp/ffmpeg.log 2>&1 && (echo $cmd | mail -s "Transcode finish" root) &) ← H264-SDに変換する場合
バックグラウンドでMPEG2-TS形式⇒MPEG4形式へ変換が行われ、完了後root宛にメール通知される

■2重音声対応

2か国語放送等を録画した動画を再生した際に、主音声(例:日本語)と副音声(例:英語)が同時に聞こえる場合、主音声または副音声のみ聞こえるように変換する。

[root@centos ~]# cd /var/www/epgrec/video/ ← 録画ファイル格納先ディレクトリへ移動

[root@centos ~]# (cmd='ffmpeg -y -dual_mono_mode main -i 変換元MPEG2-TS形式ファイル名.ts -f mp4 -vcodec libx264 -bufsize 20000k -maxrate 25000k -threads auto 変換先MPEG4形式ファイル名.mp4' ; nohup $cmd > /tmp/ffmpeg.log 2>&1 && (echo $cmd | mail -s "Transcode finish" root) &) ← 主音声のみに変換する場合

[root@centos ~]# (cmd='ffmpeg -y -dual_mono_mode sub -i 変換元MPEG2-TS形式ファイル名.ts -f mp4 -vcodec libx264 -bufsize 20000k -maxrate 25000k -threads auto 変換先MPEG4形式ファイル名.mp4' ; nohup $cmd > /tmp/ffmpeg.log 2>&1 && (echo $cmd | mail -s "Transcode finish" root) &) ← 副音声のみに変換する場合
バックグラウンドでMPEG2-TS形式⇒MPEG4形式へ変換および音声変換が行われ、完了後root宛にメール通知される






▲このページのトップへ戻る

LPIロゴ Copyright© 2005-2017 fallenangels, All rights reserved.
ご自由にリンクしてください(連絡は不要です)
本ページへのご意見・ご要望、誤字・脱字・リンク切れ等のご連絡はこちらからお願いします