ubuntu
カテゴリ
TV録画後エンコード&join_logo_scp 1
2026/06/17 08時tv
前回は、CM検出ツール「join_logo_scp」を、Dockerへインストールして試行錯誤したが、今回はホストにインストールして簡潔化し精度を高める事とし、更に複数のツールを組合せてCMカット精度を高め、Amatsukaze と、同様の仕上がりとなった
コンポーネント用途
AviSynth+動画フレームワーク(logoframe/chapter_exeが使用)
L-SMASH WorksAviSynth+プラグイン:TSファイルを読み込む
chapter_exe無音・シーンチェンジ検出 → .scpファイル生成
logoframeロゴON/OFF検出 → .logo.txtファイル生成
join_logo_scpCM位置推定 → Trim形式ファイル生成
QSVEncC 8.16 エンコーダー
項目内容
ロゴファイルAmatsukazeの .lgd ファイル(SID番号形式)
ロゴ配置先/mnt/data/docker/jls/logo/
JLスクリプト配置先/mnt/data/docker/jls/JL/
録画完了(EPGStation Docker)
  └→ encode.sh(コンテナ内から呼び出し)
       ├─ ファイルリネーム(TV局名除去・記号削除)
       └─ encode_queueにジョブファイル登録

encode-watcher.service(systemd / ホスト上)
  └→ inotifywaitでencode_queueを監視
       └→ encode_host.sh(ホスト上で実行)
            ├─ jls_process.sh(CM検出 約8分)
            │    ├─ ffmpeg -nostdin(音声WAV抽出)
            │    ├─ chapter_exe(無音検出 → .scp)
            │    ├─ logoframe(ロゴON/OFF → .logo.txt)
            │    ├─ join_logo_scp(CM位置推定 → Trim)
            │    ├─ .ffmeta生成(チャプター)
            │    └─ .chapter.txt生成(OGM形式)
            └─ encode_jls.sh(QSVEncCエンコード 約13分)
                 ├─ 成功 → /mnt/data/TV/ にMP4保存
                 │        TSを /mnt/data/PT2/succeeded/ に移動
                 └─ 失敗 → TSを /mnt/data/PT2/ に残す
                           (Amatsukazeが朝5時に処理)

基本ビルドツールのインストール
sudo apt install -y build-essential cmake git nasm yasm

AviSynth+ / L-SMASH Works用インストール
sudo apt install -y \
  libavcodec-dev \
  libavformat-dev \
  libavutil-dev \
  libswresample-dev \
  libswscale-dev

# 運用ツールのインストール
sudo apt install -y python3 python3-pip inotify-tools

AviSynth+ 3.7.5 のビルド
git clone --depth 1 https://github.com/AviSynth/AviSynthPlus.git
cd AviSynthPlus && mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc) && sudo make install && sudo ldconfig

l-smash のビルド
git clone https://github.com/l-smash/l-smash.git
cd l-smash && ./configure --enable-shared
make -j$(nproc) && sudo make install && sudo ldconfig

L-SMASH Works のビルド 依存パッケージのインストール
git clone https://github.com/tobitti0/L-SMASH-Works.git
cd L-SMASH-Works/AviSynth
# decode.c の AV_PIX_FMT_D3D12 を含む case文をコメントアウト
LDFLAGS="-lavformat -lavcodec -lavutil -lswresample -lswscale -ll-smash" \
  make -j$(nproc)
sudo mkdir -p /usr/local/lib/avisynth
sudo cp liblsmashsource.so /usr/local/lib/avisynth/
sudo ldconfig

chapter_exe インストール
git clone https://github.com/tobitti0/chapter_exe.git
cd chapter_exe && make
sudo cp chapter_exe /usr/local/bin/

logoframe のビルド
git clone https://github.com/tobitti0/logoframe.git
cd logoframe && make
sudo cp logoframe /usr/local/bin/

join_logo_scp のビルド
git clone https://github.com/tobitti0/join_logo_scp.git
cd join_logo_scp && make
sudo cp join_logo_scp /usr/local/bin/

QSVEncC 8.16 インストール
# https://github.com/rigaya/QSVEnc/releases から
# qsvencc_8.16_amd64.deb をダウンロード(Windowsでダウンロード後サーバに転送)
sudo apt install -y /path/to/qsvencc_8.16_amd64.deb
qsvencc --version
qsvencc --check-hw  
# Success: QuickSyncVideo available を確認

inotify-tools インストール
sudo apt install -y inotify-tools

記事一覧