猫の手も借したい

暇を極めた時に更新します

ラズパイで録画鯖をつくり隊 4話

なんかもう1~3の記事のリンク貼るのめんどくなってきた

1話: ラズパイで録画鯖をつくり隊 - 猫の手も借したい
2話: ラズパイで録画鯖をつくり隊 2話 - 猫の手も借したい
3話: ラズパイで録画鯖をつくり隊 3話 - 猫の手も借したい


今回もエンコについてのお話

ffmpegエンコードしていたが、何故か1本エンコが終わると毎回ffmpegがクラッシュする。
具体的には「ffmpegは動作を停止しました」というポップアップが出る。

手動でそれを閉じて終わらせてやらないと次のエンコに進まないので、自動化してる意味が無い。
吐かれるファイルを見るとエンコ自体は正常に出来てるぽいので、最初はこのダイアログを強制的にスキップする方向で考えてたが、なんだか気持ち悪いのでffmpegをやめることにした。

HandBrakeCLIを採用

GUIじゃない(もしくは非表示できる)
スクリプトから呼び出して処理できる
・ハードウェアエンコードができる

の要件で調べてみたところ、HandBrakeのCUI版があった。これを使ってみよう。
どうやらNVEncやCUDAは使えないみたいだが仕方ないね。
QSVを使ったハードウェアエンコードをしてる。

ついでなのでエンコ設定を真面目に考えなおした

形式 拡張子 解像度 フレームレート ビットレート
エンコ前 mpeg2-ts .ts 1440*1080 インターレース60 15Mbpsらしい
エンコ後 h264 .mp4 1280*720 インターレース解除30 1600kbps

色々調べてみたら1280*720にリサイズするのが主流らしい。地上波放送では微妙にボケてるのが引き締まるだとか。
ビットレートは色々試して見た感じで、荒くなり過ぎないギリギリ。好みの範囲ではある。
フレームレートは最初23.976にしてみたが、結構かくかく見えて違和感があったので30にした。




これでエンコードすると、ジョジョ8話が3.26GBから404MBに抑えられた。しゅごい


アニメ1話を400MBほどに抑えられるとすると、一期に20本として
1話400MB×ワンクール12話×期あたり20本=96,000MB
96,000MB/1024MB=93.75GB
なんと当初の1/7~8にまで抑えられることに。
単純計算で2TBのHDDで21クール撮れることになる。実際には当日分はTSのままなので誤差はあるけど。


バッチファイルを書いてスタートアップに登録し、Windows起動時にyesterdayフォルダ内のTSを全て逐次エンコするようにした。エンコ中にPCを落とすミスを無くすためにPowerShellのウィンドウは表示させておく。

未エンコが80本くらい溜まってしまったので今晩はCPUくんに死ぬ気でエンコしてもらうことにする。

Sambaを参照するとアベレージ50fpsくらいでエンコが進むので、30分アニメで大体15分あれば終わる。
いまのところ一日に撮るのは7~8なので
みごとにCPU使用率は100%だが、ハードウェアエンコードの処理を含めて100%に表示してるようなので全然負荷は感じない。
むしろメモリを想像以上に食い潰す事に驚いている。
流石にゲームをするのは気が引けるが、普通に使う分には全然気にしなくて良さそう。参考までにスクショ。
f:id:akkisino02:20160605030418p:plain


これで当分HDD買い替えなくて良さそうですね。めでたしめでたし
しかしCPUを買い換えたくなって来た