Кодек AV1
FFmpeg поддерживает кодирование в AV1 использую внешние библиотеки а именно - libaom, librav1e, libsvtav1 и libdav1d.
libdav1d - Только декодер и его не рассматривал.
libaom
Последний коммит 4 года назад. Основан на libvpx который в свою очередь разрабатывает Google и который до сих пор активно разрабатывается.
librav1e
Написано на Rust и позиционируют себя как самый быстрый и самый безопасный AV1 кодер. Сравнивают себя с libaom и что они гораздо быстрее. Вроде до сих пор активно разрабатывается но видел новость что Mozilla уволила большую часть разработчиков и с 2020 какого-то года активно все же он не пилится.
libsvtav1
Как я понимаю является сейчас стандартом принятым Alliance of Open Media (AOM). Разработан в коллаборации Intel и Netflix в 2020 году, совпало с забросом libaom 🤔. Самый новый кодер. Разработан специально чтобы хорошо работать на многопроцессорных и многопоточных маштинах.
Тестирование
Исходный ролик в FullHD - 47.6 МБ, 29 секунд.
Доп:
- видео кодек H.264,
- 60,00 кадров в секунду,
- аудио кодек MPEG-4 AAC в битрейте 256 кбит/с.
Кодируем в:
- H.264 исходный размер, crf 24
- H.264 50% исходного размера, crf 24
- H.264 25% исходного размера, crf 24
- AV1 исходный размер, crf 38
- AV1 50% исходного размера, crf 38
- AV1 25% исходного размера, crf 38
Кодирование в H.264 оставлено как часть флоу, основное время тарится на AV1 кодирование и только в нем меняем кодеки в ходе тестирования, а значит кодирование в H.264 константа которой можно принебречь.
Команды:
- librav1e
-c:v:3 librav1e -rav1e-params qp=30:speed=10:tile-columns=8:tile-rows=4:threads=0
- libaom-av1
-c:v:3 libaom-av1 -crf 26 -aom-params cpu-used=8
- libsvtav1
-c:v:3 libsvtav1 -crf 38
Кодек | Время | Утилизация CPU |
---|---|---|
librav1e | 8 минут | ~16% |
libaom-av1 | 6 минут | ~30% |
libsvtav1 | 1 минута | ~100% |
🏆 Победитель
libsvtav1 - имеет тотальное превосходство над остальными кодерами в многопоточных системах. Он единственный может полностью утилизировать CPU и скорость сравнима с транскодингом в H.264. Can I use? - можно использовать.