birdきょうのつぶやき@digitune.bsky.social

きょうのつぶやき@digitune.bsky.social

いやーSVT-AV1(ffmpegではlibsvtav1)、すごいじゃじゃ馬だ。rootで起動すると問答無用でSCHED_FIFOの優先度最高に設定する、って話を書いたけど、chrtでSCHED_OTHER、nice値19に落としてもCPUを食べまくり、shのレスポンスが悪くなるほど。 (20:01 bskyから・詳細)

これだけCPUを使い切れる、ってのは逆にすごいことなんだろうね、確かにlibx254と比較すると同等画質で効率倍(ファイルサイズ半分)くらいに圧縮できるのにエンコード時間はむしろ早いくらいだったりする。 (20:03 bskyから・詳細)

libsvtav1の主要なparameterはcrfとpresetだけど、前者が主に画質とファイルサイズの、後者がファイルサイズとエンコード速度のトレードオフになるように動くので非常に調整がしやすい。正確には後者でも画質は変わるし前者でも速度は変わるんでしょうが… (20:05 bskyから・詳細)

あまりにSVT-AV1にCPUを使われすぎて他のprocessの動作に支障が生じるので、-svtav1-paramsオプションでlp=4:pin=1を指定してSVT-AV1が使うCPU coreを制限することに。今使っているRyzen 5 3550Hは4C8Tなので半分ですね。 (20:08 bskyから・詳細)

image 0lp=LogicalProcessorで利用する論理プロセッサ数を指定、pin=1はSVT-AV1が利用するcoreを固定する指定で、これがないと公式Docにあるように結局lpで指定した以上のプロセッサが使われてしまう。 https://gitlab.com/AOMediaCodec/SVT-AV1/-/blob/master/Docs/Parameters.md#:~:text=so%20%2Dlp%204,the%20memory%20usage (20:11 bskyから・詳細)

利用する論理プロセッサ数を半分に制約してもエンコード速度が半分になるわけではなく、preset=8を指定していたところをpreset=10にする、くらいで吸収できます。まぁファイルサイズと画質が多少犠牲になりますが… (20:13 bskyから・詳細)

ここのところAV1でいろいろな動画をエンコードしてみているけれど、古いH.264と比べるとbitrateの振れ幅が大きいのが印象的。テレシネソースとかあまり動きのない動画なら1080/60i→60pへの変換で2Mbpsくらいになったりするのに、(続) (20:15 bskyから・詳細)

native 60iな動画だと8~10Mbpsくらいまで膨らむことも。H.264だとそこまで増減しなかったので、アルゴリズムが進化してハマる動画にはハマる、って感じなのかな。ちなみにあまり圧縮の効かない動画の傾向はまだつかめない。意外な動画が全然圧縮できなかったりする。 (20:17 bskyから・詳細)