Raspberry PiでEPGStationの録画データを自動CMカットしてエンコードする
- 2021.03.20
- ソフトウェア
- Raspberry Pi, ソフトウェア
Raspberry PiとPX-W3PE4を利用してDockerを利用しないでMirakurunとEPGStationを構築する
録画できるようになったので、自動でCMカットしてエンコードされるようにしようと思います。
CMカットにjoin_logo_scpを利用
join_logo_scpというツールがCMカットの精度が高いようなので利用します。
個人的には別に消さなくても良いのですが、ロゴの消去もできるようです。
環境について
ここから構築する環境はハードウェアに依存するところが多いようです。
私の環境はRaspberry Pi OS Lite 32bitを導入したRaspberry Pi4なので、それに合わせたコマンドなどになっています。
構築
基本的にこちらのページを参考に進めていきます。
なお、l-smash、ffmpeg、L-SMASH-Worksあたりでインストールが上手く行かなかった場合はこちらのページを参考にしてみてください。
パッケージのインストール
sudo apt-get install -y build-essential cmake ninja-build libmp3lame-dev libopus-dev libvorbis-dev libvpx-dev libx265-dev libx264-dev libavcodec-dev libavformat-dev libswscale-dev libatomic-ops-dev automake libtool autoconf nodejs sudo apt-get install -y meson npm sudo apt-get install -y libxft-dev
インストールしてください。
fdk-aacのインストール
cd git clone https://github.com/mstorsjo/fdk-aac.git cd fdk-aac ./autogen.sh ./configure make -j4 sudo make install sudo /sbin/ldconfig
インストールしてください。
l-smashのインストール
cd git clone https://github.com/l-smash/l-smash.git cd l-smash sudo ./configure --enable-shared sudo make sudo make install sudo ldconfig
インストールしてください。
AviSynthPlusのインストール
cd git clone --depth 1 https://github.com/AviSynth/AviSynthPlus.git cd AviSynthPlus mkdir avisynth-build cd avisynth-build cmake -DCMAKE_CXX_FLAGS=-latomic ../ -G Ninja ninja sudo ninja install
インストールしてください。
ffmpegのインストール
aptでインストールできるやつはAviSynthPlusが使えないらしいのでビルドする必要があるみたいです。
cd git clone --depth 1 https://github.com/FFmpeg/FFmpeg.git cd FFmpeg //32bitOSの場合 ./configure --extra-ldflags="-latomic" --extra-cflags="-I/usr/local/include" --extra-ldflags="-L/usr/local/lib" --arch=armel --target-os=linux --enable-gpl --disable-doc --disable-debug --enable-pic --enable-avisynth --enable-libx264 --enable-libx265 --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-nonfree --enable-mmal --enable-omx-rpi --enable-omx --extra-libs=-ldl //64bitOSの場合 ./configure --extra-ldflags="-latomic" --extra-cflags="-I/usr/local/include" --extra-ldflags="-L/usr/local/lib" --arch=aarch64 --target-os=linux --enable-gpl --disable-doc --disable-debug --enable-pic --enable-avisynth --enable-libx264 --enable-libx265 --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-nonfree --extra-libs=-ldl make -j4 sudo make install
インストールしてください。
L-SMASH-Worksのインストール
cd git clone https://github.com/HolyWu/L-SMASH-Works.git git clone https://github.com/tobitti0/chapter_exe.git -b arm-test sudo cp chapter_exe/src/sse2neon.h L-SMASH-Works/AviSynth/emmintrin.h cd L-SMASH-Works/AviSynth
ダウンロードし、
nano meson.build
で開き、
'../common/lwsimd.c', '../common/lwsimd.h',
この2行を削除し、
if host_machine.cpu_family().startswith('arm') add_project_arguments('-mfpu=neon', language : ['c', 'cpp']) endif
をif host_machine.cpu_family()とif host_machine.system()の処理の間に追加します。
nano video_output.cpp
で開き、
#include "../common/lwsimd.h"
を削除します。
CC=gcc CXX=gcc LD=gcc LDFLAGS="-Wl,-Bsymbolic,-L/opt/vc/lib" meson build cd build ninja -v sudo ninja install
sudo reboot
再起動しておきます。
join_logo_scpのインストール
cd git clone --recursive https://github.com/tobitti0/JoinLogoScpTrialSetLinux.git cd JoinLogoScpTrialSetLinux/modules/logoframe/src make cd && cp JoinLogoScpTrialSetLinux/modules/logoframe/src/logoframe JoinLogoScpTrialSetLinux/modules/join_logo_scp_trial/bin/logoframe cd JoinLogoScpTrialSetLinux/modules/join_logo_scp/src make cd && cp JoinLogoScpTrialSetLinux/modules/join_logo_scp/src/join_logo_scp JoinLogoScpTrialSetLinux/modules/join_logo_scp_trial/bin/join_logo_scp cd chapter_exe/src make cd && cp chapter_exe/src/chapter_exe JoinLogoScpTrialSetLinux/modules/join_logo_scp_trial/bin/chapter_exe cd JoinLogoScpTrialSetLinux/modules/join_logo_scp_trial
ダウンロードして、
ロゴを作成し、
cp -r /mnt/hdd/logo .
作成したロゴをコピーしてきます。
sudo npm install sudo npm link jlse --help
と実行してインストールします。
最後のコマンドでオプションが表示されればOKです。
delogo-AviSynthPlus-Linuxのインストール
せっかくなのでロゴ消しもします。
cd /tmp git clone https://github.com/tobitti0/delogo-AviSynthPlus-Linux.git cd delogo-AviSynthPlus-Linux/src make sudo make install
インストールしてください。
動作チェック
jlse -i 録画ファイルパス -e -t cutcm_logo -o " -c:v h264_omx -vf pullup=jb=54 -preset veryfast -acodec aac -ab 320K -b:v 5M -aspect 16:9 -r 24000/1001 -bsf:a aac_adtstoasc " -r
これでエンコードができればOKです。
EPGStationから自動エンコードさせる
こちらのページに書かれているスクリプトを参考に作成します。
nano ~/EPGStation/config/jlse.js
で新規にスクリプトを作成します。
上のページに書かれているスクリプトをコピーし、
const args = ['-y']; const preset = 'veryfast'; //const codec = 'libx264'; const codec = 'h264_omx'; //const crf = 23; const bitrate = '5000k'; const videoFilter = 'yadif';
ハードウェアエンコード用にプリセットやコーデックを変更し、利用できないcrf値の代わりにビットレートを代入します。
Array.prototype.push.apply(args,[ '-vf', videoFilter, '-preset', preset, '-aspect', '16:9', '-c:v', codec, //'-crf', crf, '-b:v', bitrate, '-f', 'mp4', ]);
利用できないcrf値の代わりにビットレートを利用するように修正します。
nano ~/EPGStation/config/config.yml
で開き、
encode: - name: jlse cmd: '%NODE% %ROOT%/config/jlse.js' suffix: .mp4 rate: 4.0
を記述します。
これで録画後に自動でCMカットやロゴ削除が行われた状態でハードウェアエンコードされるようになりました。非常に便利。
-
前の記事
Amatsukazeを利用してロゴファイルを生成する 2021.03.19
-
次の記事
電池構成を考える 2021.03.21