May 23

Автоматический скринкаст форматер webm > mp4 для Ubuntu 22.04

В Ubuntu 20.04 появился штатный скринкастер для записи экрана. Активируется на ctrl+alt+shift+r. В 22.04 подвезли неплохой интерфейс и пользоваться этим при нажатии на PrintScr стало приятно и удобно.

Но есть проблема, пишет он в каталог /home/<user>/Videos/Screencasts/ файл в формате webm с кодеком vp8, переопределить это нельзя, скорее всего так сделано в угоду свободным технологиям и лицензиям. Но при отправке файла к примеру в телеграм, он не играется встроенным плеером, ибо в мире всё заточено на h264 и mp4(не свободные стандарты), так исторически сложилось.

И так, нам нужно конвертировать webm(vp8) в mp4(h264). Смена контейнера, операция копеечная, а вот транскодирование это дорого для CPU. Тут надо сделать отступление, что я работаю на Lenovo ThinkPad e490 с встроенной графикой (iGPU) от intel. Рас у меня есть GPU значит смену кодека(транскодирование) vp8>h264 можно сделать аппаратно.

Пишем небольшой скрипт и кладём его в /home/<user>/.bin/

screencasts_formater.sh

Что тут происходит? Утилита inotifywait следит за появлением в каталоге новых файлов и как только файл закончил писаться, в работу вступает ffmpeg и конвертирует наш файл, затем старый файл удаляется.

Можно обойтись без докера, самостоятельно собрать ffmpeg с поддержкой vaapi и положить его локально, но зачем, когда есть готовая сборка, а девайз можно спокойно пробросить.

Далее добавляем в автозапуск через Startup Applications и перелгиниваемся.

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