Как монтировать скринкасты
В прошлый раз мы после записи получили исходный файл:
Часть 1: Как записывать скринкасты
Теперь самое время заняться его обработкой.
Видеоредактор
Если программисту удобно работать на Linux-машине, то выбор видеоредакторов там не очень большой. Но если всё-таки выбрать Linux-редактор, то с меньшей вероятностью получится найти помощника по монтажу видео тоже на Linux. Поэтому для монтажа всё-таки можно привлекать помощников на Windows.
Можно использовать продвинутый видеоредактор, в котором обрабатывать видео и звук одновременно. Там всё есть из коробки и никаких дополнительных телодвижений не нужно.
Но брать мощный комбайн не всегда целесообразно. Кучи фильтров и спецэффектов полезны для монтажа фильма, но абсолютно бесполезны для скринкастов. Так как нам там нужно только сделать шумоподавление и вырезать паузы между предложениями. То есть нужна минимальная функциональность по резке дорожек и сохранение результата без заметных потерь качества.
С такими минимальными требованиями справится практически любой видеоредактор. Поэтому вместо использования продвинутого софта сегодня мы рассмотрим вариант, когда звук и видео можно обрабатывать отдельно.
Звук
Если вы сразу приобрели дорогой и качественный малошумный конденсаторный микрофон, то звук с него можно вообще не обрабатывать и этот пункт пропустить. Но если микрофон не очень хороший или есть шум от системного блока, то тогда нужна отдельная обработка.
Если мы выбрали простой видеоредактор, то вполне вероятно, что там будут слишком примитивные инструменты шумоподавления, не будет лимитеров и подобных настроек. Поэтому обработку звука мы можем легко провести в отдельном аудиоредакторе. И потом заменить звук в видеофайле.
Например, можем открыть видеофайл в Audacity и он загрузит из него аудиодорожку:
Так как мы записывали в моно, то дорожка у нас одна. Но если вы записывали мономикрофон в стереорежиме, то у вас будет заполнена только дорожка левого канала, а у правого будет пустая. Поэтому сначала придётся преобразовать всё в моно либо в стерео.
На дорожке отчётливо видим громкий кашель и длинные пустоты.
Теперь применяем:
Шумоподавление. Сначала выделяем фрагмент тишины и сканируем как образец шума. Редактор просканирует и сохранит себе. Потом выделяем всё и применяем шумоподавление по просканированному ранее образцу:
Удаление щелчков. Выделяем всё и применяем фильтр. Он удалит щелчки, цоканье и прочие всплески:
Лимитер. Если при записи мы писали не на полную громкость, то нам надо будет увеличивать громкость до оптимального уровня. Но Audacity увидит громкий кашель и не даст этого сделать. Поэтому сначала нужно либо вручную заглушить тишиной кашель, либо автоматически приглушить слишком громкие звуки лимитером:
Увеличение громкости. Теперь после лимитера повышаем громкость до уровня, на котором уже не так тихо, но ещё не хрипит. Обычно редактор подскажет вам уровень, который сам посчитает нужным в зависимости от вашей громкости записи. Но мы обычно используем на несколько единиц меньше предложенного варианта.
Эквалайзер (по желанию). Например, микрофон не очень хороший и всё-таки после шумоподавления остался комариный писк. Или в вашей комнате звонкие стены и есть неприятный призвук. Тогда можно эквалайзером убрать эту мешающую частоту, которая звенит или пищит. Или если свой голос не очень понравится, то можно будет добавить солидности и спокойствия, немного повысив басы.
При желании можно сделать нормализацию громкости, но это не всегда получается приятно.
Но при этом не увлекайтесь с такими фильтрами, так как чем сильнее что-то удаляете, тем сильнее при этом может испортиться голос.
В итоге в процессе применяете эти операции и записываете их параметры себе в шпаргалку для следующего раза.
И после применения фильтров сохраняете результат в wav-файл.
Теперь можно в терминале заменить звук в видео с оригинального на чистый через ffmpeg без переконвертации видео:
ffmpeg -y -i 001.mkv -i 001.wav -map 0:v -map 1:a -vcodec copy -acodec aac -b:a 256k -shortest -strict -2 out-01.mkv
Не переживайте, что что-то не сразу получится. При необходимости можно заново переоткрыть исходный файл и применить фильтры уже с другими настройками. А потом просто перезапустить конвертацию видео в видеоредакторе.
Резка
Редакторы редакторам рознь. Есть всеядные мегапрофессиональные, есть попроще полулюбительские. Любительские в основном рассчитаны на маленькие домашние видео.
Но всё меняется, когда мы монтируем в них часовые скринкасты, когда нам надо закинуть в редактор трёхгигобайтный трёхчасовой исходный файл и покромсать по фразам на сотни или тысячи фрагментов.
Например, редактор Movavi начинает подтормаживать уже после получаса таких фрагментов. А после часа на каждую операцию он задумывается на десять секунд. Так как на каждое действие ему нужно в реальном времени пересобирать видеопревью.
В этом случае таким редакторам комфортнее работать не с одним целиковым файлом, а с набором маленьких по 15-20 минут.
Поэтому можно усовершенствовать процесс: когда меняем звук с ffmpeg заодно можем разрезать чистовой файл на фрагменты:
ffmpeg -y -i 001.mkv -i 001.wav -map 0:v -map 1:a -vcodec copy -acodec aac -b:a 256k -shortest -strict -2 -ss 00:00:00 -t 00:20:00 out-01.mkv ffmpeg -y -i 001.mkv -i 001.wav -map 0:v -map 1:a -vcodec copy -acodec aac -b:a 256k -shortest -strict -2 -ss 00:20:00 -t 00:20:00 out-02.mkv ffmpeg -y -i 001.mkv -i 001.wav -map 0:v -map 1:a -vcodec copy -acodec aac -b:a 256k -shortest -strict -2 -ss 00:40:00 -t 00:12:00 out-03.mkv
Здесь указываем время начала и длительность каждого фрагмента, а не его окончание.
Чтобы при такой разрезке не испортить фразы из-за непопадания в ключевые кадры можно быстро пролистать аудиодорожку и видео и поставить разделения по паузам, когда на экране ничего не происходит.
Но тогда длительность всех фрагментов будет везде разная. Можно посчитать вручную или составить формулу вычитания времени в Excel.
Там мы указываем название исходника и время начала и конца фрагмента. Остальное он считает сам. И в последнем столбце он конкатенацией собирает команды для копирования и вставки в shell-скрипт или в терминал напрямую.
Если посреди записи видео вы несколько раз отвлекались на отдых, исправления кода, разговоры или ещё что-то длительное, то можно прямо здесь разделить видео так, чтобы отбросить все эти десяти- или двадцатиминутные перерывы.
Видеомонтаж
Если с повторами, паузами и исправлениями вы вместо одного часа записали три, то здесь самое время весь лишний мусор убрать.
Для этого если вы автор видео, то вам желательно найти помощника, у которого будет много свободного времени на однообразную работу. Так у автора появится время на небольшой отдых и подготовку к записи следующего эпизода.
Так что загружаем видео в редактор целиком или фрагмент за фрагментом и чистим.
Очистка мусора
Первое, что нужно сделать – просмотреть все три часа и удалить мусор вроде огромных пауз и неудачных повторов.
Проще всего искать паузы, так как они сразу видны на звуковой дорожке. Если в паузе что-то происходило, то можно её пока оставить как есть. Если же на экране ничего не менялось, то можно спокойно удалить.
Сложнее вычищать повторы. Это можно делать досконально слушая всё в реальном времени, но это долго.
Чтобы ускорить процесс мы можем делать это больше глазами.
Например, мы видим такую звуковую дорожку из нескольких предложений:
Здесь что-то либо говорится нормально, либо повторяется. И нам нужно вырезать неудачные повторы.
Обычно мы повторяем предложение, когда до этого запнулись. Поэтому чтобы не тратить целую минуту на прослушивание полного текста иногда мы можем просто бегло прослушать только начала и окончания фраз:
И если фраза обрывается, то этот фрагмент удаляем. В итоге остаются только целиком досказанные предложения. При этом могут оставаться хорошие повторы, но это не проблема. Мы с ними разберёмся позже при чистовом просмотре. Лучше оставить больше, чем отрезать и в будущем не понять смысл сказанного.
При этом удобно, когда в редакторе можно вписывать метки на таймлайне. Тогда спокойно пишем метку вроде “Здесь недоговорил” или “Можно склеить начало фразы из первого варианта и окончание из второго”.
В итоге получаем набор из отрезков предложений:
На просмотр и чистку трёхчасового исходного видео так уйдёт рабочий день или два. Зависит от энтузиазма и выносливости.
Пересмотр
Теперь когда из трёх часов видео получилось два часа более-менее очищенного, можно уже вернуть видео автору на пересмотр. Теперь автор внимательно смотрит и слушает, что он наговорил. И уже по смыслу отбирает, что надо оставить, а что можно убрать.
Например, я при монтаже замечаю, что вступление затянулось. Или что я повторил разными словами одно и то же. Или долго формулировал мысль, а потом её сказал как надо. Или если в итоге передумал. Тогда лишнюю “воду” удаляю.
Также если есть где-то два-три хороших повтора, то выбираем из них лучший.
Если есть фрагмент пятиминутного запуска какого-то скрипта, то здесь можно красиво его сократить до нескольких секунд. Например, в эпизодах по CI/CD приходилось после каждого шага снова и снова запускать Pipeline, что каждый раз занимало по несколько минут. А в итоговом видео каждый прогон был удобно сокращён до пяти секунд.
Практически всё видео мы отвлекаемся на другой экран, чтобы оттуда что-то скопировать или чтобы там переключиться на следующий коммит. Эти паузы тоже вырезаем.
Или когда пишем вручную длинную команду в терминале. Тоже эти пять секунд печатания никому не интересны. А печатаем мы долго, так как над клавиатурой неудобно висит микрофон.
А ещё удаляются оговорки. Например, если вместо GitLab нечаянно был назван GitHub.
Если мы в конце видео что-то исправляли или дополняли, то сейчас самое время переместить каждое исправление на нужное место. Или если на экране нужно что-то исправить, то в экстренных случаях можно сделать скриншот (стоп-кадр) и там что-нибудь подрисовать.
В общем, приводим всё это в готовый по смыслу и сценарию вид. В итоге трёхчасовое видео ужимается до часа или полутора часов.
Тайм-коды
При первом пересмотре параллельно записываем тайм-коды. Удобно, когда сам видеоредактор позволяет это делать метками на линейке:
Тогда при будущем изменении видео метки перемещаются вместе с ним.
С расстановкой тайм-кодов бывают сложности, когда в повествовании не видны чёткие границы. От участников было предложение сделать тайм-коды по коммитам или заставками объявлять переход к следующей части. Да, сделать так можно. Но выступление, разграниченное по временным рамкам порой бывает скучно. Вместо этого чаще бывают выступления, в которые проваливаешься и не замечаешь плавных переходов. Они выглядят естественнее, зато делить их сложно.
Вторая проблема с тайм-кодами - это их нелинейность. Иногда их хочется объединить в смысловые части. Например, важные моменты подключения библиотеки: цели и задачи подключения, обзор библиотеки, подключение, внесение правок в код, дополнительные нюансы. А иногда в смысловую часть закрадывается важное отступление, состоящее из трёх-четырёх тайм-кодов. И в таких случаях отделять смысловую часть от остального рассказа становится не корректно.
Чистовой пересмотр автором
Когда автор три часа часа пересматривал всё видео, удалял повторы и лишние по смыслу части, выстраивал повествование и прописывал тайм-коды, то это сильно напрягало его мозг. И он что-то мог пропустить.
Поэтому сейчас он может расслабиться и пересмотреть видео второй раз как зритель и довести скринкаст до идеала.
При чистовом пересмотре уже можно обратить внимание на мелкие недочёты и повторы, которые в прошлый раз остались незамеченными. И помимо этого на линейке уже видно примерное чистовое время. И по нему автор уже может сократить вступление, если оно получилось длинным.
Предыдущий первый рабочий перепросмотр был медленный и вдумчивый. А этот второй пересмотр проходит спокойнее и быстрее. Так что за четыре часа можно уложиться.
Правда жизни в том, что эти этапы никто за меня как автора не сделает. Только я сам знаю точно, что нужно оставить, что можно убрать и что нужно уточнить или исправить. Так что четыре часа на запись и четыре часа на два пересмотра придётся потратить своего времени точно.
И теперь видео можно опубликовать. Или отправить помощнику на чистовую обработку.
Чистовая обработка речи
Видеоряд готов. Все предложения разрезаны и выстроены.
Но если послушать речь внимательнее, то между предложениями и некоторыми словами иногда можно заметить вздохи и даже небольшое чавканье. Или иногда между предложениями при первоначальной резке получилась слишком длинная или короткая пауза. Или линия прошла чуть-чуть не там и отрезала первую букву слова. Или склейка двух слов с разной громкостью получилась слишком заметной на слух.
Так что после основного монтажа можно пройти со здравой долей перфекционизма и исправить эти мелочи. На этом этапе можно вернуть помощнику видео для финальной обработки.
В итоге после вырезания вздохов между предложениями ещё экономится 3-5 минут.
Как получить динамичное видео
Как бы автор быстро не говорил, но динамичность в видео задаётся паузами.
Длина пауз между предложениями - полторы секунды при нормальном темпе речи и если предложения диктуются подряд. И любое большее - если предложения диктуются отдельно друг от друга.
Готовый ролик - это набор предложений с заданным вручную расстояниями между предложениями. Почему бы не уменьшить это время и не сократить до:
- 1 с между смысловыми частями;
- 0,5 с между абзацами;
- 0,25 с между предложениями.
Результат
Обработка видео, в отличие от подготовки материала, вполне предсказуемый процесс.
Обработка звука и разрезка на части: 1,5 часа.
Скорость обработки чернового видео: 10-15 минут исходника – 1 час времени.
Обработка автором: около 4 часов.
Скорость обработки чистового видео: 10 мин исходника – 1 час времени.
Итог по обработке всегда можно посчитать. И прибавить 1 час конвертации и столько же на заливку на хостинг.
Вот и всё. День записи и три дня обработки – и один часовой или полуторачасовой скринкаст готов:
Пришло время записывать следующий :)
И все же, какой посоветуете оптимальный/минимальный видео-редактор именно под линукс? Спасибо.
Эпизоды монтируем на моём компьютере - стоит Windows.
А так под Linux удобен Kdenlive.
Или войти через: