Подкатываем яйца вместе с Unity -1


В этой небольшой заметке хочу поделиться результатами страданий этой ночи. Это не информационная статья, вкладывающая в голову мудрость поколений. Просто набор заметок.


Для начала, результатом стал вот этот видеоролик. С точки зрения зрителя, здесь видео про то, как с нуля сделать мини-игру на Unity. Если совсем точно, ни одому из определений из набора Шрайбера она не отвечает, но всем наплевать. Серьёзно, если вы считаете себя тупым и ни на что не способным (я именно такой), то повторяете как в видосе и всё работает.


А вот под катом будет немного про внутреннюю кухню и боль. Это только для тех, кто сам что-то пишет и хочет обсудить.


Область определения


Что является целью: мне нужно иметь дело с продакшеном видео и разработкой одновременно, а это сложновато без понимания работы видеомейкера и C#-разработчика. Как известно, самый лучший способ разобраться в чём-то — попробовать самому, а ещё лучше — сделать по этому видеокурс.


Что не является целью: 1) Стать знаменитым блогером, ввязаться в маркетинг, нагон трафика, и т.п. Это тема отдельного приключения на когда-нибудь потом. 2) Произвести действительно качественный ролик — я на это пока не способен, по крайней мере в приемлемые сроки (два дня).


Какие интересные выводы были сделаны из этой сессии записи?


Микрофон и Premiere


Вы замечали, что у Лёши Шевцова в видосах наушники воткнуты в Blue Yeti? Кажется, теперь я догадываюсь, почему. Оказывается, создатели Adobe Premiere 2019 в мудрости своей не позволяют выводить звук на две разных аудиокарты, если это ASIO. Раньше я как-то и не задумывался над этим, но сейчас путешествую по Сибири, и конечно же не стал брать с собой огромный гроб внешней USB-звуковухи — а зря!


То есть натурально, переключаешь на ASIO, и у тебя исчезает тот блок настроек, который Output, остаётся только мапинг каналов ASIO. А это значит, что если ты пишешь звук напрямую с BlueYeti по его встроенному ASIO, то сюрприз — послушать что ты записал (ровно как и послушать музычку из браузера с туториалами) можно будет тоже только через микрофон! Слушать музыку через микрофон, Карл!


Вообще, есть такой крутой ASIO-роутер, O Deus ASIO Link Pro. Автор этой проги недавно умер, кстати, и исходников в Open Source не передал. Да вот только лицензия осталась где-то на жестком диске в Питере, а устаревшая версия с трекеров глючит на Windows 10.


Благо у микрофона есть аудиовыход на миниджек, куда можно воткнуть наушники. Мини-плохая новость в том, что этот выход всегда мониторит ещё и сам микрофон, поэтому спокойно послушать ничего не удастся — с минимальной задержкой ты будешь слышать свои щелчки по клавиатуре, тяжёлое дыхание, как сосед Вася лобызает Маню за стеной, а шум вентиляторов компьютера приобретёт новый глубокий окрас. Ну, можно постоянно жать кнопку mute на микрофоне, конечно. Я бы про этот ад тоже записал какое-то видео, но не совсем понимаю как это делать, ведь писать придётся тем же микрофоном на ту же Премьеру :)


ASIO


Кстати, вы спросите, а зачем ASIO? А потому что BlueYeti выдаёт через MME и ASIO совершенно разный звук. Я проводил тест — один и тот же громкий звук проигрывал с телефона и записывал обоими методами. MME вариант неимоверно хуже. Прям до полной неюзабельности в случае, если микрофон клипует.


Из-за проблем удобства с ASIO, чистовой звук я пишу им, а черновой — на MME.


Слышали, насколько плох звук в этом ролике? Это потому, что из-за частых перезагрузок (о которых пойдет речь дальше) я потерял чистовую ASIO-запись, и пришлось делать на MME-черновике. Просто не было уже сил на второй дубль. Да и вообще, это ж зашквар, писать с дублями? :-)


Adobe Premiere 2019 как таковая


Раньше я немного клеил видео в старых версиях и поэтому есть возможность сравнить. В свежей версии много багов. Возможно, это частично связано с Node.js, на котором написан новый интерфейс — в Adobe ещё не разобрались, как готовить этого зверя. При старте Премьера создаёт несколько копий JS-движка, который висит в виде отдельных процессов рядом с ней, и убивая эти процессы можно с корнем вырывать куски интерфейса. Перерисовка медленная, при нагрузке на комп — может вообще не перерисовать (нужно поменять размеры окна мышкой, чтобы перерисовка запустилась). В интерфейсе существуют багнутые переходы между состояниями, выйти из которых можно только перезагрузкой приложения — аналог «застрял в текстурах». Если описывать ощущения одной фразой, то это будет «тормозит и глючит».


К сожалению, на старые версии я вернуться не могу, потому что только в свежей пофиксили баг с захватками Blackmagic.


А, ещё пару слов о самом UI/UX интерфеса. Мы в программировании привыкли пользоваться идеально вылизанными вещами вроде IntelliJ IDEA и Eclipse, и попытки использовать что-то профессиональное для других профессий обычно очень болезненные. Я даже передать не могу, какую боль испытал от того, что Premiere пытается сделать, чтобы повторить Perspectives из Eclipse, этим прямо физически больно пользоваться. Не говоря уж о том, что интерфейс прямо кричит тебе, что желательно иметь 2 монитора, и тот монитор где линия времени — желательно в 4k UHD. А у меня, например, зрение — минус 5 на оба глаза, и этот 4k нафиг не впился, как быть. Ну это наверное не Премьера такая плохая, а мир разработки софта настолько хорош, что у нас есть инструменты с идеальным UX. Разработчики делают софт не по указке аналитиков, а для самих себя, и поэтому понимают, что именно они творят.


Перезагрузки компьютера


Это чисто моя личная проблема, судя по форумам похожее поведение есть только у считаных единиц больных людей.


Под нагрузкой комп виснет в синий экран.


Это не мой компьютер, а временный компьютер, который существует, пока я в гостях в Новосибирске. Поэтому сменить его не представляется возможным/разумным.


Я читал содержимое крэш-дампов, там ничего вразумительного, что означает скорей всего аппаратную ошибку, сбежать от которой винда может только полным стопом без сохранения состояния. Начиная с какого-то момента крэшдампы перестали писаться, впрочем, тут похоже, надо винить Windows Insider Preview. Но синие экраны и на стабильной версии винды есть тоже.


На предыдущей итерации разбирательств я сменил термопасту на видеокарте и запустил её под MSI Afterburner с даунклоком по всем параметрам. Что привело к уменьшению количества зависаний. Я даже смог играть под запись в что-то лёгкое вроде Overwatch, короткое время.


Оно же привело к увеличению выпадений стрима, потому что оказалось, что мой Wirecast не очень дружит с Afterburner. Правда, называет он это иначе — «Afterburner может приводить к нестабильности системы, если это случается, удалите его».


Во время записи этого ролика факапов случилось много.


Во-первых, из-за частых перезагрузок я потерял чистовой вариант записи, в результате всё пришлось делать поверх черновика с отвратительным звуком, записанным сквозь MME вместо ASIO.


Во-первых, оказалось, что где-то минута по-нормальному творчески осмысленного ролика занимает час монтажа. То есть, весь ролик на час двадцать легко может занять целый месяц. Это никуда не годится. Поэтому для ускорения процесса я начал с того, что заменил мозг на побольше быстрорастворимых эффектов из туториалов на Ютубе, слепил вместе и был приятно удивлён эффектом. Особенно экономит время неиспользование зелёнки.


Но оказалось, что ролик собирается рендериться 4 часа. Мне, в принципе, не жалко. Но вот компьютеру — жалко. На дистанции в 4 часа он зависает в синий экран в 100% случаев. А ведь результаты рендера ещё и могут не понравиться!


Поэтому пришлось, скрипя сердцем, выкинуть весь этот хлам на свалку, и от операции «безмозглые эффекты» перейти к варианту «адский треш». Самый сложный эффект теперь — это транзишен картинки, и это вычисляется на CPU чуть ли не быстрей, чем на GPU. Время рендеринга сократилось до часа.


И всё бы хорошо, но чёрт там плавал. Час компьютер под нагрузкой проработать тоже не смог ни разу. Пришлось лезть в железо. Я выбросил все ненужные расширения (типа USB проводов) и переставил видеокарту в PCI-E поближе к процессору. Этим я намеревался убить два зайца: дать видюхе больше воздуха (подействовало, температура упала на 5 градусов!) и проверить, не связан ли проблема с глючным PCI-E.


Первый факап выяснился сразу: в том PCI-E, в котором нормально работала видюха, карта захвата HDMI отказывается работать наотрез. Ну, она заводится, идентифицируется в системе, но утверждает, что видеопотока она не видит. Впрочем, она мне и не нужна для записи треш-ролика, поэтому это просто тест: что-то с этим PCI-E не так.


Второй факап в том, что несмотря на такие жертвы, комп всё ещё не может прожить час.


Последняя мера была в том, чтобы пойти в BIOS и выставить там всё руками. Вольтаж (пониженный), частоты памяти (вручную, фиксированные, пониженные), множители на 34, итп. Всё что имело пометку "smart", "intelligent" или "boost" отправилось в режим либо disabled, либо normal (это для нескольких переключателей, которые умеют кроме normal ещё power save и turbo — понятно что обе системы могут дать сбой… да и normal тоже может). Выключил всю ненужную периферию, оставил только USB-3, в котором теперь торчит Anker-овский хаб со внешним питанием (вдруг мать неспособна оказать питание на USB?). Выключил даже VT-x, так что 64-битные виртуальные машины, то есть все виртуальные машины — больше не работают. Звуковуху тоже выключил, видосики слушал по bluetooth-наушникам (отвратительно, как вы ими пользуетесь в связке с компом?).


А вот на PCI-E видеокарты отдал все линии и согласился, что все остальные PCI-E на материнке отключатся (два зайца одним ударом: и поотключать возможно сломанные PCI-E, и возможно ускорить видюшку, если она вдруг так умеет, я в этом не разбираюсь).


На этой итерации комп прожил час и всё отрендерил.


Сейчас вот мучаюсь. Наверняка это не видеокарта, не встроенная в мать звуковуха, а именно сочетание звуковухи и видеокарты. Две области, в которых драйверописателям на всё наплевать. Например, на другом компе у меня синие экраны были от сочетания внешней usb-звуковухи и сетевой карты, но это уже другая история.


Вроде бы дело сделано, но я как-то морально истощён.


Рабочее решение для записи 1080


Самым рабочим решением (из имеющегося у меня железа) было захватывать видео и звук на Macbook. Сжатый захват можно делать прямо через OBS, а несжатым я бы ноут мучать не советовал, всё-таки SSD для записи это расходник, а на ноуте напаянный SSD не поменяешь. Ноут соединяется с Windows PC по Gigabit Ethernet кабелю, после чего все захваченные файлы быстренько копируются на виндовскую шару, прямо внутрь проекта Premiere. Единственная вообще цель этой сомнительной неудобной схемы — то, что ноутбук не перезагружается рандомно, как это делает мой PC.


Выводы


Что-то сделано, что-то получилось. Буду делать дальше, даже если заминусуете в пол. Интересно было бы услышать отзывы других видеомейкеров ( если таковые здесь имеются) о их первых шагах и здравых вещах, которые нужно сделать в первую очередь.


Сейчас полпятого ночи. Или утра. Надо поспать часа три, чтобы потом включить буст и успеть к утреннему скрам-митингу сделать вчерашнюю работу, которую я благолополучно просандалил со всей этой чепухой. Спасибо, что дочитали до конца. Я не совсем уверен, зачем вы это сделали, но если так — респект и уважуха!




К сожалению, не доступен сервер mySQL