Про форматы видео на YouTube и аппаратную поддержку
Данный пост - небольшое продолжение поста Про аппаратное декодирование, или зачем нужна интегрированная графика , а также одновременно, ответ на комментарий #comment_223126638 от @Dubovs, поскольку проблема, вероятно, в этом. Все-таки, 8 месяцев прошло, но ответить надо, ибо тема актуальная.
Если в предыдущем посте речь шла о поддержке H.265 (HEVC), используемого в основном, для скачанных видеофайлов, то в этом речь пойдет про YouTube. Реалии таковы, что поскольку за использование HEVC требуются лицензионные отчисления, для потокового видео используются открытые и бесплатные кодеки, например, в случае с YouTube - VP9 и AV1.
Касательно аппаратной поддержки, снова обратимся к ссылкам, опубликованным в прошлом посте:
1. QuickSync в случае с Intel.
2. NVDEC в случае с NVIDIA
3. Unified Video Decoder у чипов AMD, вышедших до 2017 года
4. Video Core Next у чипов AMD, вышедших с 2018 года
Что мы видим? У интелов поддержка VP9 начинается с Apollo Lake, у NVIDIA она есть практически везде, где есть поддержка HEVC, а вот AMD его поддерживает только с 2018 года (UVD в VP9 аппаратно не умеют вообще).
Нууу... ладно... а что с AV1? А вот AV1, дорогие друзья, поддерживается только чипами, выпущенными не ранее 2020 года. Да, вы все правильно поняли: для аппаратной поддержки AV1 у вас должен быть либо процессор не ниже 10 поколения Intel с встроенной графикой, либо видеокарта Nvidia GeForce не ниже 3050Ti. В случае с AMD, VCN 3.0 c с поддержкой AV1 есть только на видеокартах серии RX6000 (фанаты AMD, поправьте, если не прав). Такие дела.
Теперь вернемся к нашему YouTube. Логичный вопрос: где там используется VP9, и AV1, с привязкой к чему? Ответ - для самого пользователя это практически лотерея.
Как узнать, каким кодеком воспроизводится видео? По правой кнопке на самом видео при его воспроизведении, далее - "Статистика для сисадминов", и там смотрим "Codecs":
Например, вот одно видео, в режиме 8k оно воспроизводится AV1:
Вот другое, там 8к воспроизводится с помощью VP9:
Иногда бывает, что и меньшие разрешения также воспроизводятся с помощью AV1, иногда - с помощью VP9, иногда - AVC (H.264). В общем, полный бардак и натуральная лотерея.
Что с этим делать?
1. Настройки Youtube. Нас интересует "Настройки кодека AV1", галка "Использовать AV1 для SD-контента". Но проблема в том, что на 8к (и возможно, 4к) эта настройка никак не влияет - первое видео всё равно будет воспроизводиться кодеком AV1. Предположение - просто потому, что YouTube не делает перекодирование высоких разрешений из одного кодека в другой, поскольку это достаточно аппаратно-затратная процедура
2. Плагин enhanced-h264ify для Chrome. Открываем параметры плагина, и протыкиваем галки на форматах, которые мы не хотим использовать:
Тут важно учитывать следующее: плагин не занимается конвертированием форматов, он лишь заставляет сам YouTube показывать видео с другими кодеками. Если вы отключили AV1 - первое видео из этого поста у вас перестанет отображаться в 8K-разрешении, его попросту не будет в списке. Если вы отключили VP9 - вы не сможете смотреть видео в 4К-разрешении, у вас в списке будет максимум FullHD (1080p), поскольку только такие разрешения YouTube кодирует в AVC.
Поэтому, отключайте поддержку того или иного кодека только в том случае, если он вам реально мешает, процессор с ним не справляется и при его включении практически всегда - тормоза при воспроизведении, и вы уверены, что совсем без этого кодека лучше, чем с ним.
Всем спасибо за прочтение.