Ubuntu20 ffmpeg + avisynth + delogo + JoinLogoScp で自動CMカットエンコード環境構築

avisynthffmpeg の公式インストール手順
https://github.com/AviSynth/AviSynthPlus/blob/3.5/distrib/docs/english/source/avisynthdoc/contributing/posix.rst


avisynth のインストール

# add-apt-repository ppa:ubuntu-toolchain-r/test
# apt update
# apt install build-essential cmake git ninja-build gcc-9 g++-9 checkinstall

# cd /usr/local/src
# git clone git://github.com/AviSynth/AviSynthPlus.git
# cd AviSynthPlus
# mkdir avisynth-build
# cd avisynth-build
# CC=gcc-9 CXX=gcc-9 LD=gcc-9 cmake ../ -G Ninja
# ninja
# checkinstall \
   --pkgname=avisynth \
   --pkgversion="$(grep -r Version avs_core/avisynth.pc | cut -f2 -d " ")-$(date --rfc-3339=date | sed 's/-//g')-git" \
   --backup=no \
   --deldoc=yes \
   --delspec=yes \
   --deldesc=yes \
   --strip=yes \
   --stripso=yes \
   --addso=yes \
   --fstrans=no \
   --default ninja install


ffmpeg のインストール

# apt install nasm libfdk-aac-dev libx264-dev libx265-dev

# cd /usr/local/src
# git clone git://git.ffmpeg.org/ffmpeg.git
# cd ffmpeg
# ./configure \
  --enable-gpl \
  --enable-version3 \
  --disable-doc \
  --disable-debug \
  --enable-avisynth \
  --enable-libfdk-aac \
  --enable-libx264 \
  --enable-libx265 \
  --enable-nonfree
# make
# make install


・l-smash のインストール

# cd /usr/local/src/
# git clone https://github.com/l-smash/l-smash.git
# cd l-smash
# ./configure --enable-shared
# make
# make install
# ldconfig


・l-smash-works のインストール(avisynth で l-smash を使用するためのプラグイン

# apt install python3-pip
# pip3 install meson

# cd /usr/local/src/
# git clone https://github.com/HolyWu/L-SMASH-Works.git
# cd L-SMASH-Works/AviSynth
# git checkout 72d3eac802eebcfc9080009c1a8d47a747e3a306
# CC=gcc-9 CXX=gcc-9 LD=gcc-9 LDFLAGS="-Wl,-Bsymbolic" meson build
# cd build
# ninja -v
# ninja install
# ldconfig


・JoinLogoScpTrialSet for Linux and Avisynth+3.5.x のインストール
https://github.com/tobitti0/JoinLogoScpTrialSetLinux

# cd /usr/local/src/
# mkdir JoinLogoScpTrialSetLinux
# cd JoinLogoScpTrialSetLinux
# git clone --recursive https://github.com/tobitti0/JoinLogoScpTrialSetLinux.git
# cd JoinLogoScpTrialSetLinux/modules/chapter_exe/src/
# make
# cp -a chapter_exe /usr/local/bin/.
# cd ../../logoframe/src/
# make
# cp -a logoframe /usr/local/bin/.
# cd ../../join_logo_scp/src/
# make
# cp -a join_logo_scp /usr/local/bin/.


・join_logo_scp の動作確認

# cd ~
# vi join_temp.avs
TSFilePath="GR27_test.ts"
LWLibavVideoSource(TSFilePath, repeat=true, dominance=1)
AudioDub(last,LWLibavAudioSource(TSFilePath, av_sync=true))

# chapter_exe -v join_temp.avs -oa temp_inscp.txt
# logoframe join_temp.avs -logo GR27.lgd -oa temp_inlogo.txt
# join_logo_scp -inlogo temp_inlogo.txt -inscp temp_inscp.txt -incmd JL_標準.txt -o temp_join_logo_scp.txt

# cat temp_join_logo_scp.txt
※Trim情報が記載されていること


・透過性ロゴ フィルタ for AviSynth+ 3.5.x & Linux のインストール
https://github.com/tobitti0/delogo-AviSynthPlus-Linux

# cd /usr/local/src/
# git clone https://github.com/tobitti0/delogo-AviSynthPlus-Linux.git
# cd delogo-AviSynthPlus-Linux/src
# make CC=gcc-9 CXX=gcc-9 LD=gcc-9
# make install
# ldconfig


・delogo の動作確認

# cd ~
# vi delogo_temp.avs
TSFilePath="GR27_test.ts"
LWLibavVideoSource(TSFilePath, repeat=true, dominance=1)
AudioDub(last,LWLibavAudioSource(TSFilePath, av_sync=true))
EraseLOGO(logofile="GR27.lgd", interlaced=true)

# ffmpeg -f avisynth -i delogo_temp.avs --vcodec libx264 -acodec libfdk_aac GR27_test.mp4

Gitの使い方

本番環境Git

$ cd ~/
$ mkdir local_git
$ cd local_git
$ git init
$ touch test.txt
$ git add test.txt
$ git commit -m 'first commit'

更新管理用Gitの作成

$ cd ~/
$ mkdir remote_git
$ cd remote_git
$ git clone --bare ~/local_git/ .

本番環境Git

$ cd ~/local_git
$ touch test2.txt
$ git add test2.txt
$ git commit -m 'first commit'
$ git remote add origin ~/remote_git/
$ git push origin master

テスト環境Git

$ cd ~/
$ mkdir test_git
$ cd test_git
$ git clone ssh://git@192.168.0.24/~/remote_git/ test_git/

コマンド早見表
https://qiita.com/kohga/items/dccf135b0af395f69144

CentOS8 インストールしたらやること

・hostnameの変更

# hostnamectl set-hostname <HOSTNAME>

SELinux無効化 と firewalld無効化
http://kt-hiro.hatenablog.com/entry/20120730/1343653945

・NTP(chrony)設定
http://kt-hiro.hatenablog.com/entry/2019/11/28/200135

・UUIDの調べ方
http://kt-hiro.hatenablog.com/entry/20110531/1306770300

NFS設定
http://kt-hiro.hatenablog.com/entry/20141212/1418378655

・afp設定
http://kt-hiro.hatenablog.com/entry/2019/11/28/200609

・smb設定
http://kt-hiro.hatenablog.com/entry/20141211/1418313057

KVM環境構築
http://kt-hiro.hatenablog.com/entry/2019/11/28/195728

KVM PCIパススルー設定
http://kt-hiro.hatenablog.com/entry/20150616/1434434879

KVM virt-install仮想マシンをインストールする一例
http://kt-hiro.hatenablog.com/entry/20170624/1498321204

CentOS8 netatalkのインストール

コンパイルに必要なパッケージをインストール

# yum install gcc make
# yum install libgcrypt-devel libdb-devel

コンパイル

# cd /usr/local/src/
# wget http://sourceforge.net/projects/netatalk/files/netatalk/3.1.12/netatalk-3.1.12.tar.gz
# tar zvxf netatalk-3.1.12.tar.gz
# cd netatalk-3.1.12
# ./configure --with-init-style=redhat-systemd 
※systemdに組み込む
# make
# make install

設定ファイル

# vi /usr/local/etc/afp.conf
[Global]
  vol preset = default_for_all_volumes
  log file = /var/log/netatalk.log

[default_for_all_volumes]
    file perm = 0600
    directory perm = 0700

[TimeMachine]
  path=/mnt/storage-1/TimeMachine
  time machine=yes

起動設定

# systemctl enable netatalk.service
# systemctl start netatalk.service

CentOS8 NTP(Chrony)のインストール

・インストールと自動起動設定

# yum -y install chrony

# vi /etc/chrony.conf
server ntp.nict.jp iburst
server ntp1.jst.mfeed.ad.jp iburst
server ntp2.jst.mfeed.ad.jp iburst

# systemctl start chronyd
# systemctl enable chronyd

・同期状態の確認

# chronyc sources

CentOS8 KVM環境構築

KVMのインストール

# yum install qemu-kvm libvirt virt-install 

OVMFの設定(UEFIモードでVMを動かす場合は実施)

# vi /etc/libvirt/qemu.conf 
nvram = [
  "/usr/share/OVMF/OVMF_CODE.secboot.fd:/usr/share/OVMF/OVMF_VARS.fd"
]

# systemctl restart libvirtd

ブリッジの作成

# nmcli device
# nmcli connection show

# nmcli connection add type bridge ifname br0
# nmcli device
# nmcli connection show

ブリッジのアドレス設定

# nmcli connection modify bridge-br0 ipv4.addresses 192.168.0.100/24 ipv4.method manual
# nmcli connection modify bridge-br0 ipv4.gateway 192.168.0.1
# nmcli connection modify bridge-br0 ipv4.dns 192.168.0.1

ブリッジに物理インターフェースを登録

# nmcli connection add type bridge-slave ifname enp0s25 master br0
# nmcli device
# nmcli connection show

物理インターフェースの既存設定を削除して、再起動

# nmcli connection del enp0s25 ; reboot

201911時点でCentOS8でbrctlは非推奨となっているので、ブリッジへのインターフェース登録状態を見たい場合は下記コマンドで確認する

# nmcli c show bridge-slave-enp0s25 | grep master

recpt1の更新

BSチャンネルの再編等でrecpt1の更新が必要な場合がある。
下記から最新版をダウンロード可能。
http://hg.honeyplanet.jp/

インストール

$ wget http://hg.honeyplanet.jp/tip.zip
$ unzip tip.zip
$ cd pt1-17b4f7b5dccb/recpt1
$ ./autogen.sh
$ ./configure --enable-b25
$ make
$ sudo make install

録画テスト

# recpt1 --b25 --strip 22 10 /var/test.ts --device /dev/pt3video2
デバイス:/dev/pt3video1(video0/1:衛星放送、video2/3:地上デジタル)
チャネル:22ch
録画時間:10秒
保存先 :/var/test.ts