Я ретрогеймер. Раньше юзал oCam, Fraps и OBS. Сейчас планирую перейти на ShareX, так как:
1) он более лёгкий по требованиям, чем OBS
2) дружит со старыми играми лучше, чем oCam
3) он обновляется и поддерживает HEVC и H264. Fraps не обновляется с 2013 года и использует для захвата свой проприетарный кодек (один час записанного видео в таком кодеке сожрёт приблизительно 20 гб по сравнению с H264 и HEVC).
В целом, ShareX для меня гораздо предпочтителен. Вот только как мне протестить качество захвата? Подойдут ли для этого какие-нибудь бенчмарки (например, Furmark)?
UPD: Сейчас я сделал два тестовых захвата Furmark через ShareX и oCam и вот что вышло: при захвате через ShareX 60 фпс ощущаются как 30 фпс, а при захвате через oCam ощущаются "настоящие" 60 фпс.
У меня очень много скаченных с торрентов музыкальных клипов в различных кодеках (HEVC, VP9, H264 и древних DivX, Xvid, MPEG-1/2, MPEG-4 ASP, VP8, FLV, WMV...) и контейнерах (MP4, MKV и древние AVI, VOB...). Нужно узнать у многих из них их кодеки, чтобы потом перегнать их в HEVC (у меня все гаджеты выпущены после 2018 года) для экономии места.
Знаю, что это можно сделать через плееры типа VLC, K-Lite, но так каквидосов у меня много, открывать каждый отдельный файл мне лень. А гугл и яндекс тут бесполезны.
Если имеется 2 одинаковых видео "Прохождение The Sun (от Igor Migun)" одно видео "1920х1080, 30fps, MPEG-4, .mp4, битрейт 2781 Кбит/с" 2е видео "1920х1080, 30fps, MPEG-4, .mp4, битрейт 2939 Кбит/с" то если извлечь кадр из обоих видео в одинаковом месте в формате 1920х1080.png то можо ли заметить разницу в 158 Кбит /с ?
Перекодирую семейный архив. Эксперементирую с настройками кодека h264 в одной программе. Данный устаревший кодек используется для обеспечения совместимости со старыми устройствами и медленными компьютерами.
Убрав галочки "режим SuperSpeed" и "аппаратное ускорение AMD?", а так же установив переключатель с режима "Быстро" на режим "Супер-Качественно", я получил увеличение времени кодирования во много раз (с получаса до 6-9 часов). До этого игрался только с битрейтом.
И тут я задумался (давно я уже не вникал в алгоритмы всякие, что уже кажется всё это сложно - может вкратце кто подскажет разницу) - а не повлияют ли все эти настройки на увеличение нагрузки на процессор на устройстве воспроизведения? Будь то медленный старый компьютер или DVD-плеер с медленной флэшкой или или ...
И вот вопрос: А стоит ли оно того, если я на глаз разницу не вижу (исключение - кадры с волнами или ветками на ветру). Или именно эти исключения и стоит кодировать в этом режиме, а остальное можно и в быстром AMD-ускорении в "быстром" режиме?
Или может стоит перейти на переменный битрейт? А его все устройства поддерживают или он тоже будет сильнее грузить систему? Или при разрешении 720p это всё не имеет значения?
Время идёт. Объём материала копится. Хочется уменьшить объём, при том что, изначальные
35Мбит/с для 1920х1080p
25Мбит/с для 1270х720p
12Мбит/с для 640х480p
кажется многовато, для большинства довольно статичных роликов.
Переменный битрейт меня немного смущает (много старых компьютеров, приставок и пр.), поэтому "сложные" видео (волны, деревья и пр.) я пока не трогаю.
Сжимать решил сжимать в h264, но перед массовой конвертацией решил спросить тут - поддержат или как:
7.5 Мбит/с для 1920х1080p
5 Мбит/с для 1270х720p
2.5 Мбит/с для 640х480p
Ещё хотелось бы сохранить/перебросить оригинальные дату и время создания файла, но, наверное это будет проблематично. Например, может ли пережатое видео использоваться как доказательство в суде, ведь дата и время у него будет уже совсем другим?
Ну и вопрос/проблема долгосрочного хранения пары террабайт ценной информации - тоже имеет место быть (RAID или DVD-RL/BD-диски или хранение на SSD без питания много лет).
Тут на днях задумался - а насколько там нынче хорош видео енкодер AV1 относительно H.264. Сфера его применения сейчас растет, оно есть в Youtube, оно поддерживается в программах для стриминга, в сегодняшнем поколении видеокарт уже добавили его хардверную поддержку.
Не, так-то понято, что это очередное крутое поколение видео енкодеров, и ебучие шакалы AV1 по определению лучше чем в H.264 (x264).
картинка для привлечения внимания
Но в этом контексте всегда надо помнить, что нет универсального "всегда лучшее для всех", как говорится, дано 3, ты можешь выбрать только 2 скорость - качество - объем
Когда появляются более крутые алгоритмы сжатия видео, то само собой разумеется что они требуют более тяжелых вычислений, а следовательно и работают медленнее.
И вот мне стало интересно, насколько AV1 может стать заменой H.264 в той области, когда у нас нет времени ждать. Надо вот прям щас срочно пережать видосик с адекватным качеством и объемом, или хочется записать видео с экрана или стрим без покупки второго компа который будет вывозить большую нагрузку. К тому же в многими любимой программе для стриминга игр, OBS, уже имеется версии AV1 для CPU (хардверный вариант в видюхах рассматривать не буду, да и у меня и видюхи такой нет). Так неужели AV1 может затмить по скорости и качеству, да еще и с объемом не прогадать. Или нафик нам тогда вообще AV1 для цпу в OBS сдался.
Итак, берем в руки HandBrake, здесь будем шакалить видео с разными параметрами. (было бы лучше взять ffmpeg и набыдлокодить скрипт который сам все делает, но у меня лапки) Также надо чем-то измерять шакализацию, в качестве оценки попугаев возьмем VMAF, который обещает оценку в чем-то похожую на человеческий взгляд, а не просто разность пикселей посчитать. Такую штуку я нашел в Nmkoder
Взял кодеки AV1 (вариант реализации под названием SVT), H.264 (x264) и H.265 (x265) и прошелся с разными (но не особо медленными) настройками. Хотел было включить сюда и VP9, но он оказался слишком медленный даже на самой быстрой настройке, доступной в Handbrake.
В качестве первой и самой длинной проверки я взял один из видосиков с работы. Получились вот такие результаты
1/4
Пояснения к таблице пресет av1 - настройка, больше = быстрее пресет h264 - настройка, "медленнее" или "быстрее". (очевидно для знающих английский) rf - настройка, качество с переменным битрейтом, меньше - лучше качество, но больше объем VMAF - результат, больше = лучше (идеал = 100) скорость - результат, множитель времени потраченного на сжатие относительно длительности видео
Общая мысль о выводах - при кодировании на CPU (в области "сжать быстренько") енкодер AV1-SVT превосходит H.264 по всем трем пунктам - скорость-качество-размер. Т.е. здесь можно отказаться от H.264 и перейти на AV1 (SVT). Разве что вам нужно ну вообще супер-скорость (или хотите записывать как вы играете даже на довольно слабом компе - тогда AV1 (SVT) может оказаться слишком медленным даже в самом быстром режиме, но из моего опыта x264+пресет=ultrafast можно использовать вместе с игрой даже на довольно слабых компах)
Также сделал коротенький тест на кусочке фильма где есть экшон ("v") и запись геймплея шутера ("р"). В целом, считаю что вводы подтверждаются.
1/2
P.S. Конечно, нельзя вот прям сейчас взять и отказаться от H.264, поддержка AV1 пока еще есть далеко не везде, и "переезд" будет длится еще довольно долго.
P.S.S. Я сначала было попытался найти такое в интернете, ведь наверняка кто-то подобное уже делал, но боги поисковых систем не были ко мне благосклонны.