Raspberry Pi地デジ関連記事
※22.12.25追記:Raspbrry Pi 4をお持ちの場合、令和5年(2023年)版最新記事が御座います。
以下、令和2年(2020年)以前の記事になります。
- 2020年最終版
- 32ビット検証
- Ubuntu 20.04.1添付のffpmegは使ってはダメよ検証
- DLNA配信
前回の64ビット環境へのMirakurunインストールに続きまして。
EPGStationをインストールして、録画できるようにしてみました。
本当はUSBストレージからOSを起動したいところですが、2020年9月現在Raspberry Pi 4は正式サポートされていないため、次回の課題にして、今回はmicroSDカードから起動しています。
USB接続のHDDから起動できるようになりました。半年で壊れたmicroSDとは異なり、長期的な運用が期待できそうです。また64ビット環境ということで、32ビット環境よりも大幅な性能向上が期待できます。
構築手順を記録しておこうと思います。
※20.9.12追記:今の所、64ビット環境ではffmpegのハードウェアエンコード機能は使えませんので、予めご了承下さい。どうしてもハードウェアエンコードを使いたい場合、32ビット版をお勧めします。負荷の低さや長期的な動作の安定度を求める場合は、64ビット版がお勧めです。
※21.1.8追記:64ビット環境でも、ffmpegをビルドすればハードウェアエンコードが可能のようです。
目次
USBストレージの取り付け
使用するストレージ
録画用に、USB 3.0端子に1TBのHDDを取り付けてみました。
コンセントを2つ消費しますが、外付け3.5インチHDDを取り付ける方法が手軽です。
swap領域とext4領域を作成
※20.9.19追記:HDDから起動する場合、こちらのswap・ext4領域の作成は不要です。
microSDカードの書き込み回数をなるべく減らすために、USBストレージ側にswapを作成しておきました。
fdiskまたはcfdiskコマンドでパーティション作成後、/etc/fstabファイルにエントリを追加してswap領域の有効化、ext4領域を/optにマウントしました。
sudo fdisk /dev/sda
# /dev/sda1に8GBのswapを作成
# n→→→8G→y
# t→19
# /dev/sda2に残りの容量を確保
# n→→→→
# p
# w
# ファイルシステム作成
sudo mkswap /dev/sda1
sudo mkfs.ext4 /dev/sda2
# swap追加
sudo swapon /dev/sda1
echo /dev/sda1 swap swap defaults 0 0 | sudo tee -a /etc/fstab
# ext4領域マウント
sudo mount /dev/sda2 /opt
echo /dev/sda2 /opt ext4 defaults 0 2 | sudo tee -a /etc/fstab
/etc/fstabを変更しましたので、Raspberry Piを再起動すると、/dev/sda1がswap領域に、/dev/sda2が/optに自動でマウントされるようになりました。
Mariadbのインストール
USBストレージは/optにマウントしましたので、そこにEPGStationをインストールしたいと思いますが。その前に、mariadbをインストールしておきます。
sudo apt install -y mariadb-server
sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf
# 75行目付近のexpire_logs_daysを1に変更
sudo mysql_secure_installation
# rootパスワードを入力→エンターのみ
# rootパスワードを変更
# anonymousユーザ削除
# リモートログイン無効化
# テストデータベース削除
# 特権テーブル再読み込み
EPGStation用のデータベース作成
EPGStation用のデータベースはutf8で作成するそうです。IDENTIFIED BY以降のパスワード部分は、必要に応じて変更して下さい。
※23.7.30更新:現在はutf8mb4で作成する必要があるそうです。
sudo mysql -u root -p
--CREATE DATABASE epgstation CHARACTER SET utf8;
CREATE DATABASE epgstation CHARACTER SET utf8mb4;
GRANT ALL ON epgstation.* TO epgstation@localhost IDENTIFIED BY 'epgstation';
GRANT ALL ON epgstation.* TO epgstation@127.0.0.1 IDENTIFIED BY 'epgstation';
exit
ffmpeg,pythonのインストール
他にgccが必要ですが、前回インストールしたbuild-essentialに含まれています。ffmpegとpython 2.7をインストールします。
sudo apt install -y ffmpeg python python2.7
一通りインストールされていることを確認しました。
node --version
curl -o - http://localhost:40772/api/version
gcc --version
ffmpeg -version
EPGStationインストール
外付けストレージをマウントした/optにインストールしてみました。
cd /opt
sudo chwon -R ubuntu:ubuntu .
git clone https://github.com/l3tnun/EPGStation.git
cd EPGStation
npm install --no-save
npm run build
設定ファイル編集
jsonファイルを3つ作成後、config.jsonを編集します。
cp config/config.sample.json config/config.json
cp config/operatorLogConfig.sample.json config/operatorLogConfig.json
cp config/serviceLogConfig.sample.json config/serviceLogConfig.json
vi config/config.json
変更前:
"dbType": "sqlite3",
"ffmpeg": "/usr/local/bin/ffmpeg",
"ffprobe": "/usr/local/bin/ffprobe",
変更後:
"dbType": "mysql",
"mysql": {
"host": "localhost",
"port": 3306,
"user": "epgstation",
"password": "epgstation",
"database": "epgstation",
"connectTimeout": 20000,
"connectionLimit": 10
},
"ffmpeg": "/usr/bin/ffmpeg",
"ffprobe": "/usr/bin/ffprobe",
ハードウェアエンコーダの有効化は保留
aarch64版Ubuntu 20.04でハードウェアエンコーダが使用可能かどうかまだ調べていなのですが(ぉぃ→調べて追記に書きました
32ビット環境のときは、config.jsonを変更してh264_omxオプションを付けておきましたが・・・あれ?ffmpegが終了してしまいます。今の所、この設定変更は保留しておいたほうが良いでしょう。
※20.9.12追記:Raspberry Pi用の64ビット版Ubuntu 20.04では、付属のffmpegでハードウェアエンコードしようとすると、うまく動作しないようです。詳細はこのあたりのようです。
64ビット環境ではOpenMaxがサポートされていないため、h264_omxオプションを付けても「Conversion failed!」で異常終了してしまいます。では64ビット版のOpenMaxをインストールすれば良いか?と言いますと、カーネルサポートの問題があるようです。上記のIssueでは、代わりに「h264_v4l2m2m」を使う流れになっています。
このあたりは追々調べを進めて、別記事にしようと思います。今のところは、こう考えたほうが良さそうです。
ハードウェアエンコーダを使いたいなら、32ビット環境を使う。64ビット環境の場合、ソフトウェアエンコーダを使う。
詳細はこちらの記事になります。
※21.1.8追記:ffmpegをビルドすれば、ハードウェアエンコードが可能のようです。詳細は記事の最後に記載致します。
EPGStation起動
最初は手動で起動して、mariadbにEPGStationのデータベースが正しく作られることを確認します。
npm start
上図のようにデータベースが作成されたらCTRL+Cで停止後、sudo付きで改めて起動しました。
sudo pm2 start dist/server/index.js --name "epgstation"
sudo pm2 save
動作確認
WebブラウザでEPGStationへアクセスしてみましょう。
http://<Raspberry PiのIPアドレス>:8888/
このような感じで番組表が表示されて、EPGStationが正しくMirakurunと連携して動作していることを確認できました。
動きが怪しい場合はUSB端子を変えてみる
地デジのチューナーですが、USB 3.0端子ではなく、2.0端子に取り付けたほうが安定している感じがします。
もし動きが不安定な場合は、そのような感じでUSBのどの端子を使うかを調整してみて下さい。
以上、Raspberry Pi 4 Model Bで、aarch64(64ビット版)のUbuntu 20.04.1環境でMirakurunとEPGStationを動かしてみました。
64ビット版ということで、32ビット版と比較してハードウェアの性能を十分に活かせる環境になりました。
とりあえず土台を固めた感じで、ffmegのハードウェアエンコード機能の有効化等、まだまだ調整の余地があるかと思います。
このあたりは追々試してみようと思います。
※21.1.7追記:
ffmpegをビルドすることで、64ビットハードウェアエンコードが可能になりました。
Raspberry Pi地デジ関連記事
- 2020年最終版
- 32ビット検証
- Ubuntu 20.04.1添付のffpmegは使ってはダメよ検証
- DLNA配信