SVT-AV1とは
IntelのオープンソースのCPUベースのAV1エンコーダ。ビルドしてAV1をエンコードしてみた。
SVT-AV1をVisual Studio 2017でビルドする
SVT-AV1のgithubの手順に従った。
まず以下をインストールした。
- Visual Studio 2017
- CMake
- CMake 3.5以降が必要とのこと。CMake 3.16.0をインストール。
- YASM
- YASM Assembler version 1.2.0以降が必要とのこと。上記githubのリンクからyasm-1.3.0をダウンロードしインストール。ただ、下記に記載のようにyasm-1.2.0ではビルドエラーになる。またyasm-1.x.0-win64.exeをyasm.exeにリネームし、PATHを通した。
git cloneした後、SVT-AV1\Build\windowsにcdして、以下を実行。
build.bat 2017
※Visual Studioのバージョンに合わせる。
SVT-AV1\Build\windowsにsvt-av1.slnが作成させるので、Visual Studioで開く。
ALL_BUILDを右クリックして、Build。
しかし以下のエラーが発生した。
Error MSB3721 The command ... exited with code -1073741515. ...
原因については深追いしていないが、https://yasm.tortall.net/Download.html からyasm-1.2.0をダウンロードし上記の方法で再度ビルドすることで、今度はビルド成功した。
SVT-AV1\Bin\Release\DebugまたはSVT-AV1\Bin\Release\Releaseディレクトリ以下に各種.dllと.exeが生成された。
SVT-AV1でエンコードする
SVT-AV1のエンコーダはyuvのみ入力とするので、
.mp4ファイルの場合、ffmpegで以下のようにyuv形式に変換する。
ffmpeg -i test.mp4 -nostdin -f rawvideo -pix_fmt yuv420p test.yuv
実際にエンコードする。
SvtAv1EncApp.exe -i test.yuv -n 300 -w 1920 -h 1080 -b test.ivf
※.ivf: AV1の拡張子。-n, -w, -hにフレーム数、フレーム幅、高さの指定が必要。
無事エンコードに成功し、VLCで再生できた。