愛用していた nasne 本体が壊れてしまったので、Raspberry Pi と地デジチューナーで nasneモドキを自作しました。
以下の記事が大変参考になりました。
上記の記事に従って作業すれば良いと思いますが、現時点(2022年7時月下旬)ではいくつか差分があったので、メモします。
- ホストOSへの「FFmpegのインストール」は不要
- ffmpeg は EPGStation コンテナ内で動作するから
- ffmpeg が h264_omx を使えるように設定する(後述)
- ホストOSへの「カードリーダーのドライバインストール」は不要
- カードリーダーにアクセスするのは、Mirakurunのコンテナだと思う
- 少なくとも、私はこのステップを省略した
- 以下のステップも実施しなかった
- 「B-CASデコード用ライブラリのインストール」
- 「録画コマンドのインストール」
- 「Docker Composeのインストール」は不要
- docker に compose プラフインが入るようになっているから
環境
$ uname -m
armv7l
$ cat /proc/device-tree/model
Raspberry Pi 3 Model B Plus Rev 1.3
$ docker --version
Docker version 20.10.17, build 100c701
docker-compose.yml
変更点は以下の通りです。
- Raspberry Pi OS 32bit で動作する MySQLのイメージに変更
- コンテナから h264_omx を使えるするようにするための変更 以下を追加
* - /opt/vc/lib:/opt/vc/lib:ro
* - /dev/vchiq:/dev/vchiq
$ diff docker-compose-sample.yml docker-compose.yml
27,28c27
< image: mariadb:10.5
< # image: mysql:8.0 # 囲み文字を使用する場合
---
> image: hypriot/rpi-mysql
49a49
> - /opt/vc/lib:/opt/vc/lib:ro
54c54,55
< - ./recorded:/app/recorded
---
> # - ./recorded:/app/recorded
> - /home/samba/minidlna/movie:/app/recorded
64c65,66
< # devices:
---
> devices:
> - /dev/vchiq:/dev/vchiq
debian.Dockerfile
epgstation コンテナでビルドする ffmpeg で、h264_omx が動作するように、Dockerfile を変更します。
$ git diff
diff --git a/epgstation/debian.Dockerfile b/epgstation/debian.Dockerfile
index e602650..4c37fc5 100644
--- a/epgstation/debian.Dockerfile
+++ b/epgstation/debian.Dockerfile
@@ -3,10 +3,13 @@ FROM l3tnun/epgstation:master-debian
ENV DEV="make gcc git g++ automake curl wget autoconf build-essential libass-dev libfreetype6-dev libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texinfo zlib1g-dev"
ENV FFMPEG_VERSION=4.2.4
+# Path to OpenMAX hardware encoding libraries. They are part of Raspberry Pi firmware.
+ENV LD_LIBRARY_PATH=/opt/vc/lib
+
RUN apt-get update && \
apt-get -y install $DEV && \
apt-get -y install yasm libx264-dev libmp3lame-dev libopus-dev libvpx-dev && \
- apt-get -y install libx265-dev libnuma-dev && \
+ apt-get -y install libx265-dev libnuma-dev libomxil-bellagio-dev && \
apt-get -y install libasound2 libass9 libvdpau1 libva-x11-2 libva-drm2 libxcb-shm0 libxcb-xfixes0 libxcb-shape0 libvorbisenc2 libtheora0 libaribb24-dev && \
\
#ffmpeg build
@@ -27,6 +30,8 @@ RUN apt-get update && \
--enable-libvpx \
--enable-libx264 \
--enable-libx265 \
+ --enable-omx \
+ --enable-omx-rpi \
--enable-version3 \
--enable-libaribb24 \
--enable-nonfree \
EPGStation の config.yml
h264_omx でエンコードする設定を追加します。
$ diff config.yml config.yml.template
107,112d106
< - name: h264_omx
< cmd:
< '%FFMPEG% -re -dual_mono_mode main -i pipe:0 -sn -threads 0 -c:a aac -ar 48000 -b:a 192k -ac 2
< -c:v h264_omx -b:v 5000k
< -movflags frag_keyframe+empty_moov+faststart+default_base_moof -y -f mp4
< pipe:1'
155,160d148
< pipe:1'
< - name: h264_omx
< cmd:
< '%FFMPEG% -dual_mono_mode main -i pipe:0 -sn -threads 0 -c:a aac -ar 48000 -b:a 192k -ac 2
< -c:v h264_omx -b:v 5000k
< -movflags frag_keyframe+empty_moov+faststart+default_base_moof -y -f mp4
出来上がり
$ docker compose run --rm -e SETUP=true mirakurun
$ docker compose up -d
ビットレートを 5Mbps に設定しましたが、CPU使用率 50% 以下で動作しており、快適です。