Ubuntu 24.04.1でTV録画 #5

  CMカットとエンコードにAmatsukaze

Amatsukazeのインストール

CMカットとエンコードにAmatsukaze

AmatsukazeがCMカットもでき安定しているがWindowsでしか動かない。Raspberrypi4でts抜きしている場合などは別途windows機が必要になるが、最近のX64機でならKVMでwindowsを動かしても十分使用に耐える。
参考:
 【ラズパイ】EPGStation (Linux) と Amatsukaze (Windows10) を連動させエンコードする
  (https://shira2paper.blog.fc2.com/blog-entry-117.html) 

Windows(Amatsukaze)とlinux(Miralurun,EPGStation)の双方にソフトをインストールする必要がある。

Windows側の設定

Amatsukazeのインストール

rigayaさんの改造版をダウンロード
https://github.com/rigaya/Amatsukaze/releases の Amatsukaze_0.9.7.10.zip
( https://github.com/rigaya/Amatsukaze/releases/download/0.9.7.10/Amatsukaze_0.9.7.10.zip )
ダウンロードフォルダですべて展開 → C:¥Users¥xxxxxx¥ダウンロード¥Amatsukaze_0.9.7.10/

Amatsukazeが動作するか確認

C:¥Users¥xxxxxx¥ダウンロード¥Amatsukaze_0.9.7.10¥AmatsukazeでAmatsukazeが動作するか確認


C:¥Users¥xxxxxx¥ダウンロード¥Amatsukaze_0.9.7.10¥AmatsukazeClient → 右クリック → その他のオプションを確認 → 送る → デスクトップ

C:¥Users¥xxxxxx¥ダウンロード¥Amatsukaze_0.9.7.10¥Amatsukazeserver → 右クリック → その他のオプションを確認 → 送る → デスクトップ

NVEncCをインストール

https://github.com/rigaya/NVEnc/releases/download/7.73/NVEncC_7.73_x64.7z
ダウンロードフォルダですべて展開 → C:¥Users¥xxxxxx¥ダウンロード¥NVEncC_7.73_x64/

Amatsukazeの設定

デスクトップのAmatsukazeServer-ショートカットクリック → Amatsukazeclient ショートカットクリック

「エンコード後にTSファイルが移動しない」バッチを作成する。

以下を「実行後_TS移動しない.bat」と名前を付けて保存。Amatsukazeの「bat」フォルダに入れる。
 ※通常はエンコード後にTSファイルが「succeeded」フォルダか「failed」フォルダに自動移動する。
  TSファイルが移動するとEPGStationの管理外になるのを防ぐため。

@echo off
   for /f "delims=" %%i in ("%IN_PATH%") do set IN_DIR=%%~dpi

   if exist "%IN_DIR%..\succeeded" (
	move "%IN_PATH%" "%IN_DIR%.."
	rd "%IN_DIR%..\succeeded"
	rd "%IN_DIR%..\failed"
   ) else if exist "%IN_DIR%\succeeded" (
	rd "%IN_DIR%\succeeded"
	rd "%IN_DIR%\failed"
)
基本設定

☑開始時に一時フォルダを空にする
☑エンコード中はスリープしないようにする
CLIログ表示 ☑ログの先頭に時刻を表示する
NVEncCパス:C:\Users\hisao\Downloads\NVEncC_7.73_x64\NVEncC64.exe

  適用

プロファイル

プロファイル:デフォルト
エンコーダ:NVEnc
エンコーダ追加オプション: –lookahead 32 –output-res 1280×720 –cqp 28:30:32 –gop-len 90 –bref-mode auto
出力フォーマット:MKV
出力選択:CMをカット
実行後パッチ:実行後_移動しない
フィルタ設定:フィルタを設定
☑インターレース解除 → 解除方法:Yadif → 出力fps:30fps
□リサイズ:1280×720
その他の設定
□チャプター・CM解析を無効にする
□字幕を無効にする
☑マッピングにないDRCS外字は無視する
☑ロゴ検出に失敗しても処理をゾックする
☑ロゴ消ししない
☑ログファイルを出力先に生成しない

「適用」 をクリック

再起動して確認 AmatsukazeGUI の「アクセス許可するか」 で → 許可

「AmatsukazeServer.vbs」をスタートアップ登録する。

Windows ロゴ キー + R キーを押し、「shell:startup」 スタートアップフォルダを開く
デスクトップのAmatsukazeServer-ショートカットをスタートアップフォルダへドラッグ

Windows11を再起動して確認 AmatsukazeGUI のアクセス許可するか で → 許可

Amatsukaze 動作時 join_logo_scp.exe – システムエラーが出る対策

  「VCRUNTIME140_1.dllが見つからない」が出るので
  Visual Studio 2015,2017,2019,および2022の再頒布可能パッケージ(x64)をインストール
   https://aka.ms/vs/17/release/vc_redist.x64.exe

CM判別に使うLogoファイルが必要

 AmatsukazeClientのキュー画面で黄色でロゴファイル云々が表示されていたら、右クリックでロゴ生成を行う。
 timeout 1800で30分以上経過するとエンコードをスルーするのでEPGSTationで元ファイル削除を選定していると、録画ファイルが削除されてしまう。ロゴファイルが準備できていない可能性がある場合は元ファイル削除をしないほうが良い。

linux側の設定

Linux-Windows連携

sudo apt-get install mono-complete

# windowsに配置したAmatsukazeフオルダと同じものをlinuxのホームにダウンロード
cd ~/Amatsukaze/exe_files/
mkdir ~/EPGStation/Amatsukaze_exe_Files
cp AmatsukazeAddTask.exe  AmatsukazeServer.dll ~/EPGStation/Amatsukaze_exe_Files/

Linux側(EPGStation)からWindows11側(Amatsukaze)呼び出し設定

シェルスクリプト「AmatsukazeTask.sh」、「AmatsukazeTaskx.sh」を作成

AmatsukazeTask.sh

timeout 1800 でエンコード時間が30分を超えたら失敗の判断をしている。

cd ~/EPGStation/config
nano AmatsukazeTask.sh
#!/bin/bash

echo "========================================================" >>/home/hisao/EPGStation/logs/Amatsukaze.log
date >> /home/hisao/EPGStation/logs/Amatsukaze.log
echo "**** Amatsukazetask.sh start ***" >> /home/hisao/EPGStation/logs/Amatsukaze.log
timeout 1800 /home/hisao/EPGStation/config/AmatsukazeTaskx.sh
if [ $? -eq 0 ]; then
echo " Success Success Success Success Success" >> /home/hisao/EPGStation/logs/Amatsukaze.log
else
echo "encode Failed encode Failed encode Failed" >> /home/hisao/EPGStation/logs/Amatsukaze.log
fi
date >> /home/hisao/EPGStation/logs/Amatsukaze.log
echo "**** Amatsukazetask.sh end ***" >> /home/hisao/EPGStation/logs/Amatsuka
echo "========================================================" >>/home/hisao/EPGStation/logs/Amatsukaze.log
AmatsukazeTaskx.sh
nano AmatsukazeTaskx.sh
#!/bin/bash

echo "" >>/home/hisao/EPGStation/logs/Amatsukaze.log
#date  >> /home/hisao/EPGStation/logs/Amatsukaze.log
echo "NAME : "${NAME} >> /home/hisao/EPGStation/logs/Amatsukaze.log
InDir=${INPUT%\/*}
INPUT=${INPUT}
Win_InDir=${InDir/\/home\/hisao\/EPGStation\/recorded/X:\\}
Win_InDir=${Win_InDir//\//\\}
OutDir=${OUTPUT%\/*}
OUTPUT=${OUTPUT}
INPUTX=${INPUT%.*}
#echo "INPUTX : "${INPUTX} >> /home/hisao/EPGStation/logs/Amatsukaze.log
OUTPUTY=${INPUTX%.*}".mkv"
echo "OUTPUTY : "${OUTPUTY} >> /home/hisao/EPGStation/logs/Amatsukaze.log
Win_OutDir=${OutDir/\/home\/hisao\/EPGStation\/recorded/X:\\} 
Win_OutDir=${Win_OutDir//\//\\}

echo "INPUT : "${INPUT} >> /home/hisao/EPGStation/logs/Amatsukaze.log
#echo "Win_InDir : "${Win_InDir} >> /home/hisao/EPGStation/logs/Amatsukaze.log
echo "OUTPUT : "${OUTPUT} >> /home/hisao/EPGStation/logs/Amatsukaze.log
echo "OUTPUTX :"${OUTPUTX} >> /home/hisao/EPGStation/logs/Amatsukaze.log
#echo "Win_OutDir : "${Win_OutDir} >> /home/hisao/EPGStation/logs/Amatsukaze.log
#echo "NAME : "${NAME} >> /home/hisao/EPGStation/logs/Amatsukaze.log

if [ -f "${OUTPUTY}" ] ; then
          echo "EXIST File : "${OUTPUT} >>/tmp/Amatsukaze.log
          echo "*** エンコード中止 ***" >> /home/hisao/EPGStation/logs/Amatsukaze.log
else

echo "*** エンコード開始 : "${OUTPUTY} >> /home/hisao/EPGStation/logs/Amatsukaze.log

/usr/bin/mono /home/hisao/EPGStation/Amatsukaze_exe_Files/AmatsukazeAddTask.exe -r "C:\\users\\hisao\\Amatsukaze" -f "${INPUT}" -ip "kvmwin11.local" -p 32768 -o "${Win_OutDir}" --remote-dir "${Win_InDir}" -s "デフォルト" --priority 3 --no-move
    echo "*** エンコード実施中 ***" >> /home/hisao/EPGStation/logs/Amatsukaze.log
    while  [ ! -f "${OUTPUTY}" ] ; do
        sleep 5
    done
    echo "*** エンコード終了 ***" >> /home/hisao/EPGStation/logs/Amatsukaze.log
fi
#    date  >> /home/hisao/EPGStation/logs/Amatsukaze.log
#echo "" >>/tmp/Amatsukaze.log
#echo "========================================================" >> /home/hisao/EPGStation/logs/Amatsukaze.log
sudo chmod +x AmatsukazeTask.sh
sudo chmod +x AmatsukazeTaskx.sh

cd ~/EPGStation
pm2 restart epgstation

コメント