Raspberry Pi 4で64ビットEPGStation録画環境を作ってみました

Raspberry Pi地デジ関連記事

※22.12.25追記:Raspbrry Pi 4をお持ちの場合、令和5年(2023年)版最新記事が御座います。

Raspberry Pi OS 64ビット版のEPGStation環境構築手順 令和5年(2023年)1月版
先日、USBストレージから、64ビット版Raspberry Pi OSを起動できるようにしました。 こちらの環境に、4番組同時...

以下、令和2年(2020年)以前の記事になります。


前回の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地デジ関連記事

スポンサーリンク

フォローする

スポンサーリンク