Это первая статья из серии, посвящённой игровым трансляциям — теме,которую не раз просили разобрать наши читатели.
В последующих статьях мы попытаемся найти правильный ответ на вопрос “Какое железо лучше?” и “Какие настройки качества лучше использовать?”. Эта статья будет посвящена настройкам — мы узнаем, какие настройки кодирования предлагают лучшее соотношение производительности и качества, и чем различные популярные режимы отличаются друг от друга.
Первая ключевая тема: какой метод кодирования лучше — программное кодирование процессора или кодирование с аппаратным ускорением видеокарты…
Для начала, прежде чем мы перейдём непосредственно к тестированию, поговорим о тестовой платформе.
Первый, волнующий нас вопрос — какой метод кодирования лучше: программное кодирование процессора или кодирование с аппаратным ускорением видеокарты. Это действительно важно, так как если кодирование видеокарты лучше, то процессор будет не так уж и важен для игровых трансляций, а если всё наоборот, то процессор становится важнейшим элементом для получения высокого уровня качества, причем не только в вопросе трансляций, но и итоговой игровой производительности.
В последние несколько месяцев кодирование с помощью видеокарты вышло на новый уровень за счёт того, что Nvidia обновили движок аппаратного кодирования на видеокартах с новой архитектурой Turing.
На новых видеокартах много внимания было уделено повышению производительности и улучшению совместимости с HEVC, что не особо важно для стриминга. Новый движок архитектуры Turing предполагает 15% улучшение качества видео стандарта H.264, в сравнении с прошлым поколением видеокарт на Pascal (серия GTX 10xx). Мы определённо обратим на это внимание, а заодно посмотрим, как Turing работает с программным кодированием x264. Итак, в тестах мы будем использовать видеокарту RTX 2080, чтобы посмотреть на работу с кодированием Turing, Titan X Pascal для тестов видеокарты на Pascal, и Vega 64, чтобы увидеть, как пойдут дела у AMD.
Во второй части исследования мы рассмотрим программное кодирование с x264 при различных настройках. Сравнение программного кодирования на разных процессорах мы оставим для другой статьи — в этой нам интереснее разобраться в том, как каждая из настроек влияет на производительность и качество.
Все тесты проводились на разогнанном до 4.9 GHz Core i7-8700k и 16 ГБ оперативной памяти DDR4-3000. Именно такую платформу мы рекомендуем для игр на максимуме. В будущем мы также планируем разобраться, насколько хорош 9900K в сравнении с процессорами Ryzen от AMD.
Для захвата мы используем последнюю версию OBS, настроенную на запись в 1080p при 60 кадрах в секунду с постоянным битрейтом 6000 кбит/с. Это максимальные настройки качества, рекомендованные Twitch. Если вы собираетесь сделать запись игрового процесса для иных целей, то мы рекомендуем вам поднять битрейт, но для ведения трансляции на Twitch, вам нужно иметь 6 Мб/с или ниже, если ваш канал не подключен к партнёрской программе.
Для тестирования мы используем Assassin’s Creed Odyssey, которая очень требовательна к процессору и видеокарте, а следовательно, у нее есть определенные проблемы с программным кодированием через процессор. Второй игрой будет Forza Horizon 4 — чуть менее требовательная к процессору, но довольно быстрая игра, с которой могут быть проблемы при низком битрейте. Обе игры представляют собой не самый удачный выбор для игровых трансляций, но каждая по-своему интересна для наших тестов.
Начнём с кодирования при помощи видеокарт, ведь долгие годы с ним были огромные проблемы. Больше всего нам интересно, получилось ли у Turing исправить ошибки своих предшественников, с которыми использовать кодирование было практически невозможно.
На видеокартах от Nvidia мы использовали NVENC в OBS и выбрали “Высокое Качество” при битрейте 6 Мбит/c. Разумеется есть и другие надстройки, но “Высокое Качество” выдаёт, как вы могли догадаться, самое высокое качество. На видеокартах Vega 64 от AMD мы опробовали множество разных настроек (как качества в целом, так и битрейта), но без особых успехов, как вы сами вскоре увидите.
Сравнивая настройку NVENC на видеокартах Turing и Pascal, можно сказать, что при битрейте 6 Мбит/c разницы почти нет. В обоих случаях есть проблема с остающимися на картинке макроблоками, да и в целом качество оставляет желать лучшего. Если говорить конкретно о Forza Horizon 4 — макроблокинг наиболее заметен на дороге и смотрится ужасно. У Turing, конечно, картинка немного более чёткая, да и макроблоки вылезают реже, но в целом можно сказать одно — оба варианта отвратительны. Если вы собираетесь заниматься трансляцией игр, то это не тот уровень качества, которым можно впечатлить зрителей.
У AMD ситуация ещё хуже — когда загрузка GPU близится к 100%, то кодирование просто напрочь ломается и выдаёт не более 1 кадра в секунду, чего не происходило с видеокартами от Nvidia. У нас получилось запустить энкодер с ограничением частоты кадров, что снизило загрузку видеоядра примерно до 60% в Forza Horizon 4, но даже с “Качественными” надстройками, Vega 64 выдавала картинку хуже, чем карты на Pascal от Nvidia.
С тем, что энкодер от AMD “отвалился” еще в самом начале, давайте рассмотрим противостояние NVENC от Nvidia с процессорным программным кодингом x264. В более медленном тесте производительности Assassin’s Creed Odyssey, NVENC даже на “Высоком Качестве” заметно хуже, чем x264 с надстройками “Veryfast”, особенно при сравнении мелких деталей, хотя в обоих случаях используется битрейт 6 Мб/с. Veryfast x264 не идеален, но на фоне NVENC видеокарт Turing с огромным количеством макроблокинга и нечёткими деталями, он выглядит явным лидером.
В более быстром тесте производительности Forza Horizon 4, NVENC видеокарт Turing местами уделывает надстройку veryfast x264. Вариант от Nvidia всё ещё страдает от макроблокинга, но у veryfast огромные проблемы с качеством деталей в движении. В игре с таким количеством движения, NVENC по качеству надстройки примерно равен “faster” x264. Тем не менее, надстройка “fast” x264 работает с движущимися объектами намного лучше, чем NVENC и даже полностью уделывает её, в случаях, когда движение на экране минимально, либо отсутствует вовсе.
Это результаты оказались довольно неожиданными, особенно учитывая тот факт, что компания Nvidia обещала, что новый движок NVENC на картах Turing работает с H.264 на уровне надстройки fast у x264, если не лучше, при трансляции в качестве 1080p на 60 кадрах в секунду и битрейте 6 Мбит/с. Но, если посмотреть на тест в Assassin’s Creed Odyssey, можно увидеть совсем иное — программное кодирование попросту лучше.
Говоря о надстройках программного кодирования x264, между каждой (veryfast, faster, fast и medium) есть довольно заметная разница. В медленном Assassin’s Creed Odyssey (если пока опустить проблемы с производительностью у каждой надстройки) — veryfast и faster выдают не самую лучшую картинку: множество смазанных кадров, макроблокинг в некоторых зонах и плохая обработка деталей в движении.
Эти две надстройки лучше оставить для тех случаев, когда качество не особо важно, поскольку при битрейте 6 Мбит/с изображение получается весьма посредственным.
Надстройка fast — самый минимум, который стоит использовать, если вы действительно хотите обеспечить зрителям качественную картинку. Разница в качестве между faster и fast — довольно заметная, ведь ранее замыленные детали выглядят достаточно чётко.
Medium — ещё один шаг вперёд, однако разница в качестве между fast и medium меньше, чем между faster и fast. Как вы позже увидите, medium — довольно тяжёлая по производительности надстройка, поэтому запускать её на той же системе, с которой работает игра, явно не стоит. Кроме того, мы проверили надстройку slow, но там всё ещё хуже — столь сильный удар по производительности явно того не стоит.
Для быстрого движения в Forza Horizon 4, опять же, стоит сразу забыть о veryfast, поскольку в случае с подобными играми он даже хуже NVENC. К сожалению, из-за битрейта в 6 Мбит/с, любая надстройка будет далека от оригинального материала, но medium визуально будет к нему ближе всего, да и смотрится намного лучше, чем с fast.
С faster, как уже говорилось выше, все ужасно, поэтому нет смысла использовать что-либо ниже fast для этого типа игр. Хочется заметить, что лучше всего работал бы medium на более высоком битрейте, но у Twitch есть ограничения, поэтому 6 Мбит/с — наш потолок битрейта.
Производительность
Качество изображения — лишь первая половина нашего уравнения. Второй половиной выступит производительность. Когда вы ведёте трансляцию игры с того же компьютера, на котором играете, важно, чтобы производительность как игры, так и трансляции была адекватной.
Начнём, пожалуй, с графиков влияния кодирования при помощи видеокарты на производительность…
Включив NVENC на картах Pascal или Turing, вы потеряете примерно 10-20% кадров в секунду, в зависимости от игры. Другими словами, между трансляцией с NVENC и выключенным стримом, разница в производительности будет 10-20%. Однако, чем больше игра зависит от видеокарты, тем сильнее NVENC ударит по производительности. Вот почему Forza Horizon 4 теряет больше кадров, чем зависимая от процессора Assassin’s Creed Odyssey.
Но есть и хорошие новости! Пусть вы и будете играть на чуть более низких кадрах в секунду при использовании NVENC, на трансляции будет идеальная картинка без падения кадров, даже если игра грузит видеокарту на 100%. Кодирующий движок карт AMD не так сильно влияет на производительность игры, но в случае высокой загрузки видеокарты происходит падение числа кадров в секунду примерно на 90%, что, как мы упоминали ранее, делает его бесполезным.
Производительность в режиме программного кодирования зависит от конкретной игры. В случае с требовательной как к процессору, так и к видеокарте Assassin’s Creed Odyssey, использование программного кодирования процессора для ведения трансляции может негативно сказаться на частоте кадров, да и надстройки, обеспечивающие высокое качество, могут не справляться.
На системе с Core i7-8700K и RTX 2080 мы запустили Odyssey с собственными, особыми настройками графики, но игра работала стабильно (без проседания частоты кадров на трансляции) лишь на надстройке кодирования x264 veryfast. X264 veryfast также ударил по частоте кадров примерно на 17%, что даже больше, чем у NVENC. Тем не менее, veryfast для такой игры все равно смотрится лучше, чем NVENC, так что небольшой удар по производительности стоит того.
Тем временем, уже на надстройке faster можно заметить ухудшение качества трансляции. Хоть оно и составило всего 8.5%, с полученной картинкой трансляцию было трудно смотреть, она шла рывками. Кроме того, частота кадров в игре упала со средних 90 до 63, а самый минимум опустился почти до 30. Здесь ясно видно, что надстройка перегружает систему. С fast и medium ситуация ещё хуже — у них снижение числа кадров достигает 62% и 82% соответственно. Самое интересное, что частота кадров в игре на таких надстройках выше, чем на faster, но, возможно, так происходит из-за того, что энкодер перегружен, в результате чего на игру выделяется чуть больше мощностей процессора.
Один из способов повышения производительности — ограничение частоты кадров в игре. Можно поставить 60, так как на трансляции все равно действует лимит на 60 кадров в секунду. Но даже с ограничением дела не становятся лучше: у надстройки fast всё ещё наблюдается падение числа кадров на 9%, а у faster вообще нет просадок, хотя и проявилось незначительное падение до 40 кадров. Единственный способ стабильно использовать fast в данном случае — снизить настройки графики и попробовать ещё раз, но, увы, эта статья не про оптимизацию Assassin’s Creed под трансляцию с нашим железом.
Во второй части исследования будет интересно разобраться в том, как покажут себя другие процессоры. Но в этой части 8700K, популярный игровой процессор высокого уровня, показал примерную ситуацию с трансляцией игры, которая крайне требовательна к процессору и видеокарте. Тем не менее, процессоры похуже, особенно малоядерные от Intel, в основном будут нормально работать на надстройке veryfast.
А вот менее зависимая от процессора Forza Horizon 4 — интересный случай, поскольку программное кодирование процессора выдаёт производительность выше, чем аппаратное кодирование видеокарты. Это происходит, т.к. у процессора в запасе есть дополнительная мощность, которую можно использовать для кодирования, не “отъедая” производительность у видеокарты.
Надстройка veryfast x264 снизила производительность всего на 6% (если верить минимальным кадрам в секунду), но разница между veryfast и fast равнялась всего 5%, несмотря на то, что для кодирования видео на надстройке fast требовалось значительно больше мощностей процессора.
На самой трансляции мы не увидели падения числа кадров на надстройках veryfast и faster, но уже на fast можно было заметить снижение числа кадров трансляции примерно на 12%. Из-за этого она периодически шла рывками. Учитывая, что игра работала на 120 кадрах в секунду, можно запросто поставить ограничение в 60 кадров, тем самым снизив нагрузку на процессор. С подобным ограничением, надстройка fast в итоге работает уже без падения числа кадров трансляции. Кроме того, это ограничение дает нам возможность опробовать medium, но даже с нашим процессором 8700K, наблюдалось падение числа кадров примерно на 2%, что не годится. Если мы бы планировали и дальше работать с надстройкой medium, то пришлось бы немного покопаться в настройках графики, чтобы ещё сильнее снизить нагрузку на процессор.
Предварительные итоги
По итогам тестирования, можно сделать несколько интересных выводов. Мы узнали, что кодирующий движок видеокарт Turing в H.264 стал не особо лучше (хотя было заявлено обратное), в сравнении с Pascal, а кодирование при помощи видеокарты всё ещё не стоит рассматривать, как вариант для стримов.
Единственный случай, когда я мог бы посоветовать NVENC — для быстрых игр на системах, которые не могут потянуть кодирование процессором на надстройках x264 faster или выше. Для менее быстрых игр стоит использовать veryfast x264 вместо NVENC. Более того, veryfast потянет большинство ПК, собранных для теоретического ведения трансляций.
Кодирующему движку видеокарт AMD, мягко говоря, нужна серьезная доработка, чтобы его вообще можно было рассматривать. Он не способен работать при нагруженной видеокарте, а когда ему всё-таки удаётся работать — качество попросту ужасно.
С процессорами ситуация чуть более сложная, поскольку то, какие надстройки вы сможете потянуть, зависит от процессора и конкретной игры. На нашей системе с 8700K разброс был таков: в первом случае, мы вынуждены были использовать надстройку veryfast в тяжёлой для процессора игре, а во втором, в менее требовательной игре — уже могли использовать fast или даже medium, получая стабильные 60 кадров в секунду в хорошем качестве.
Стримерам стоит использовать, как минимум, надстройку fast, так как это первая с конца надстройка, выдающая достаточно неплохое качество при битрейте 6 Мбит/с. Пусть она и не идеальна для быстрых сцен, эта надстройка работает в разы лучше, чем faster и veryfast, при этом оставаясь более-менее доступной для средних систем. Если у вас очень мощное железо, то можно попробовать и medium, а вот более медленные надстройки лучше даже не трогать.
Хоть играть и вести трансляцию на одном ПК — это здорово, данное исследование больше подходит начинающим стримерам или стримерам с непостоянным графиком. У любого человека, ведущего трансляции профессионально или в качестве работы, должен быть второй, отдельный компьютер для записи — с хорошей картой захвата и процессором. Так снимается вся нагрузка с основного компьютера, что дает возможность использовать надстройки medium, slow и ниже, т.е. получать наилучшее качество без удара по производительности.
Мы рассмотрели оптимальные надстройки с точки зрения качества, а в следующей статье мы постараемся разобраться в том, какие процессоры способны кодировать на этих надстройках. Оставайтесь с нами!
Источник: