妄想日記 by 妄想エンジン


chinachu と amatsukaze を連動させる。

chinachu 使っていっぱい録画していると、だんだんHDDを圧迫していきます。
エンコードして圧縮してあげればいいですが、FreeBSD でハードエンコが動かないので*1とりあえず別のWindowsマシンでエンコードしていました(過去形

ところで、最近のWindowsのエンコ環境として、Amatsukaze というものがあります。
解凍して、実行して、そこに ts ファイルをドロップしてあげると、よきに計らってCMカットやらロゴ消しやらデインタレースやらやってくれるという
とてもらくちんな環境があり、さっそくそれを導入してみましたが、Windowsマシンの NVEnc で、快適にエンコードをしてくれることがわかりました。

「機械でできることはなるべく機械にやってもらう」がモットーの私としては、できれば録画したらすぐに自動でエンコードしてくれたらいいのですが、
マシンが別のため、いちいち手動でドラッグ&ドロップしてやっていました。

ところで、Amatsukaze には AmatsukazeAddTask.exe という、「エンコサーバのキューにエンコを積む」という素敵なプログラムがあります。
これ、拡張子見てわかるように、Windows のプログラムですが、mono で動くように作者様が対応してくれたため、Windows以外の環境でも
動くようになりました。

あとは、組み合わせるだけでした。

ということで、用意するもの。

chinachu の環境
ハードエンコできるようなWindowsマシン
電気代。

とりあえず、Amatsukaze でエンコードできるようになっていることは前提として。
別のWindowsマシンからAmatsukazeAddTask が動くようにしておきましょう。別のWindowsマシン無い?あるよね?
録画されたファイルはSMBで共有されているものとします。ここで、エンコサーバ側からは、Yドライブとして見えるように
してあります。

chinachu マシン側では、mono が動くようにしておきます。

# pkg install mono

あとは、Amatsukaze の配布物から、AmatsukazeAddTask.exe と、AmatsukazeServer.dll をコピーしておきます。

> mono ~/bin/AmatsukazeAddTask.exe
/home/chinachu/bin/AmatsukazeAddTask.exe <オプション> -f
オプション
-f|--file <パス> 入力ファイルパス
-s|--setting <プロファイル名> エンコード設定プロファイル
-b|--bat <バッチファイル名> 追加時実行バッチ
--priority <優先度> 優先度
-ip|--ip AmatsukazeServerアドレス
-p|--port <ポート番号> AmatsukazeServerポート番号
-o|--outdir <パス> 出力先ディレクトリ
-d|--nasdir <パス> NASのTSファイル置き場
-r|--amt-root <パス> Amatsukazeのルートディレクトリ(サーバ起動用)
--remote-dir <パス> サーバから入力ファイルにアクセスするときのディレクトリパス
サーバからだとパスが異なる場合に必要
ファイル名部分は入力ファイル名からコピーされるのでディレクトリパスのみ入力すること
NASにコピーするときはコピー先のディレクトリをサーバからアクセスするときのパスを指定すること
例) \\rec-pc\share\rec
Bash等から打つときは\(バックスラッシュ)がエスケープ文字となることがあるため注意
--no-move NASにコピーしたTSファイルをtransferedフォルダに移動しない
--clear-succeeded NASにコピーする際、コピー先のsucceededフォルダを空にする
--with-related NASにコピーする際、関連ファイルも一緒にコピー・移動する
--subnet <サブネットマスク> Wake On Lan用サブネットマスク
--mac Wake On Lan用MACアドレス

と返ってきたら、実行できます。
パスの通ったらフォルダに 下記のようなスクリプトを作って実行属性を与えておきます。
このスクリプトはEDCB用録画後実行バッチで作成したものをベースに手を加えてあげるとよいでしょう。
NVEnc_h264_small_deinterlace はエンコサーバのAmatsukaze で作ったプロファイルを指定します。この辺は
それぞれの環境に合わせてqsvだったりx265だったり、お好みで。

#!/bin/sh
/usr/local/bin/mono /home/chinachu/bin/AmatsukazeAddTask.exe -r "C:\DTV\Amatsukaze" -f "${1}" -ip "192.168.0.98" -p 32768 -o "y:\\" --remote-dir "y:\\" -s "NVenc_h264_small_deinterlace" --priority 3 --no-move

ここで一旦テストして、Amatsukaze側にキューが登録されることを確認しておきましょう。
エンコサーバ側では AmatsukazeServer を実行して待ち受けておきます。

あとは、chinachu で録画後に自動実行されるように config.json に追記します。

"recordedCommand": "/home/chinachu/bin/AmatsukazeAddTask.sh",

おしりのカンマに注意。
これで、chinachu で録画後に、自動的にエンコサーバのエンコードキューに登録されるようになります。めでたしめでたり。

と、思っていたら、そうはイカのきん(以下略

Amatsukaze はエンコード後に、成功した場合は Successedフォルダに、失敗した場合は --no-move を指定しないと failed フォルダに ts ファイルを移動してしまいます。
手動でエンコキューに入れている際は「テストモード」にすることによってそれを防げたのですが、AmatsukazeAddTask から登録する場合にはその設定がありません。
--no-move でいけるとおもったんだけどなー。
で、それだと chinachu の管理外になってしまうので、自動エンコードする際に指定するプロファイルのなかで、実行後バッチをしていしてあげましょう。
エンコサーバ側の、Amatsukaze フォルダの下のbatの中に、実行後_move.bat というファイルを作ります。中身は

@echo off

for /f "delims=" %%a in ("%IN_PATH%") do set IN_DIR=%%~dpa
move /Y %IN_DIR%*.ts %IN_DIR%..\

その後、プロファイルの設定で、実行後バッチにこれを指定して[適用]します。
これで、移動されたファイルをもとに戻してくれます。

最後になりましたが、いろいろと便利なソフトを公開してくれている作者の方々に感謝。

参考リンク:
chinachu プロジェクトサイト
https://chinachu.moe/

Amatsukaze の github
https://github.com/nekopanda/Amatsukaze

Linux系の録画ツールで録画した番組をAmatsukazeで自動エンコードする方法
https://till0196.com/post4149

ツイート
|top |アフィリエイト |windowsネタ |料理メモ |コンタクト |twitter |
さわやかなエロスを目指す--妄想エンジン ©1996-2022
コンテンツ配信