普段の作業に影響させたくない
ファイルエンコ、時間がかかります。
今の動画はh265?AV1?いずれにせよ、モダンな形式はエンコに大量の時間がかかかります。
それの数が増えるともう大変。24時間PCをシャットダウンせずに動かしたくはないし。。
Windowsだと、夜中に自動でスリープに入ってムダな時間を使うことにもなりそうです。なんど朝になって涙をのんだことか。
長い間、この時間のかかる継続処理に対して、うまい解決策を思いつかずにいたのですが今回ようやく解決しそうな対処を思いつきました。
仮想環境を構築してのバッチ処理、です。
そもそも安定した環境で動かしたい、エラー落ちするし
PC作業のウラでエンコを走らせてると、結構エラー落ちしてるんですよね。
プロセスワーカーが異常終了的なログが残っているのですが、Hyper-Vの仮想マシン上ではそんなエラーはめったにおきないようでした。
やっぱり色々作業してるとOSさんも大変なんでしょう。仮想マシンの中で一個の作業に集中させれば解決。
ただしグラボ使ったGPUエンコなどはなし、あくまでCPUを使ったソフトエンコメイン
これは注意。うちの環境ではエンコテストした結果、GPUエンコオプションを使うとダメダメだったので問題ありませんでした。
あまり意識したくないし、処理を中断→再開みたいにいちいち手をいれたくない
先に触れたように、あまりバッチ意識して生活を変えたくありません。
夜はPCの電源を切りたいし、昼間は仕事前に新たなルーチンなど組み込みたくもありません。昼休みに再起動だってしたいし。
すべて自動、バックグラウンドで完結してほしい。常時起動サーバでも使わないと無理では、、と思ってたんですが。
Windows11にある、(10にもあったかも)Hyper-Vを使ってバッチを仕込めば解決しそうで、うまくいった感じなので今回メモ。
Hyper-Vで仮想環境を作ってエンコがおすすめ
https://pc.watch.impress.co.jp/docs/column/win11tec/1381698.html
とりあえず、上記記事に従って環境構築。
注意点としては、クイック構築の無料Windows11を使うとバッチ処理には向かないということ。
マイクロソフトのサイト側に、これは1時間で電源落ちちゃうという注意書きがありました。
素直にライセンス用意するかUbuntuを入れるかして構築しましょう。
別に対応してるエンコソフトなりがLinuxにあるならば、Windowsにこだわる必要もないのです。
普段Windows11を使ってる方むけの記事ではありますが。
仮想マシンの設定を見てみましょう。
プロセッサ数などは調整してやるといいと思います。
うちは仮想環境に8割程度のCPUパワーを預けていますが、まあファンも常時うならずちょうどいい感じです。
自動開始アクション、自動停止アクションについてはこう設定するのがおすすめ。
シームレス再開、終了。詳細は次のセクション。
預けたいバッチ処理がなくなった場合は自動起動しないような設定に直しておきましょう。
中断・再開のやり方(一時停止する場合は「保存」から。「一時停止」はダメ)
Hyper-Vの仮想マシンの設定から、ホストPCのシャットダウン・ログオン時に連動させて終了→自動再開する設定ができる。
普段のPCのシャットダウン時には自動でバッチの継続状態が維持され終了し、PC起動時に自動的に再開してくれる。イメージとしてはスリープ運用に近いのだろうか。仮想環境なのでもっとシームレス感がある模様。
バッチ処理があるから・・といって仕事PCの生活リズムを変える必要もないね。
もちろん処理中ファイルをいじったらバグっちゃうだろうけど、それだけ注意すれば意識せずシームレスにバッチ処理が継続してくれるみたい。
ちょっと一時的にホストPCにパワーが必要、という場合
ちょっと一時的にホストPCにパワーが必要、という場合はバックグラウンドで動いているHyper-V仮想マシンを止めてしまうことも可能。
一時停止する場合はHyper-V「保存」(オレンジボタン)から。「一時停止」はダメ。バッチが一時停止してしまう模様。
お手軽に仮想環境の様子をみるショートカットの作成方法
C:\Windows\System32\vmconnect.exe 127.0.0.1 "HyperV_Win11_hogehoge"
デスクトップあたりで右クリックして「ショートカットの作成」から上記みたいな感じで仮想マシン名を指定して一発起動させることも可能。管理者として実行するのにチェックを入れる必要はあるかも。
終わりに
とりあえず仮想マシンにOSインストールとかその後の構築系は書く必要ないと思うので割愛です。
うちではNAS上のファイルを読んで、そのままNAS上にエンコファイルの書き出しを行うようにやってます。
仮想環境に完全バックグラウンドで任せることで、気長に意識せず処理を継続させられるので出来る鷹揚な芸当ですな。
一点、昼間にPCが熱落ちすることがありました。
その場合は仮想マシンの「プロセッサ数の割り当て」設定を見直してホストCPU負荷を下げるのが対応策になりそうです。
エンコ時間はよりかかるようになりますが、まあ仕方ないでしょう。。
気長な重い処理もこれで怖くなくなりました。