Разработчик представил более эффективный видеоплеер для терминала

Сравнение кадра из видеоплеера с роликом запуска Starship и культовым «telnet towel.blinkenlights.nl».

Разработчик под ником TheRealOrange опубликовал на GitHub исходный код своей версии видеоплеера tvp для терминала, который эффективно кодирует сразу от 4 до 11 пикселей видеопотока с помощь одного символа юникода. Правда пиксели все еще не являются независимыми, а каждый символ юникода при прорисовке по-прежнему ограничен двумя цветами. Также ему удалось оптимизировать свое решение для правильного изменения цвета текста или фона на видео, даже если несколько пикселей рядом достаточно похожи.
Автор выложил проект под открытой лицензией GPL-3.0. Код видеоплеера для терминала написан на С++ (440 строк).

Разработчик рекомендует для тестов использовать версию эмулятора терминала alacritty, так как там tvp работает с оптимальной производительностью. В своем проекте разработчик для декодирования видео использует не FFmpeg, а библиотеку OpenCV.

Автор tvp пояснил, что это не новая разработка. Но большинство терминальных видеоплееров, которые он видел, используют простое кодирование двух пикселей на символ юникода. Он же решил использовать весь потенциал доступной палитры юникода и использовать для кодирования нескольких пикселей символы четверти блока юникода, а также полублоки и другие доступные вариации.

Разработчик в итоге смог добиться увеличения эффективного разрешения в четыре раза по горизонтали и вдвое по вертикали по сравнению с вариантом кодирования двух пикселей на символ юникода. Видеоплеер tvp ограничен двумя цветами на пиксель. Его алгоритм можно подогнать под каждое видео с помощью оптимальной настройки вручную опции threshold [0-255] (по умолчания значение 10), которая минимизирует максимальную разницу между цветами, которые будут сделаны одинаковыми, а затем устанавливаем их цвет при отображении на средний. Более низкое значение опции threshold в большинстве случаев приводит к большему количеству перерисовок и в итоге видео становится более прерывистым.

Пример работы видеоплеера для терминала.

image

Пользователи оценили задумку автора. «Хорошо работает на kitty (размер терминала 317×86, поэтому 640p), очень хорошо воспроизводит анимацию. Тестировал на Ghost in the Shell, иногда она производительность падала до 20 кадров в секунду, когда много чего происходит на виидео. Качество изображения лучше, чем у vlc в режиме caca», написал участник обсуждения этого проекта на Reddit.

Читайте так же:

  • Instagram разблокировал аккаунт правительства СевастополяInstagram разблокировал аккаунт правительства Севастополя По информации «РБК», американская социальная сеть для обмена фотографиями и видео Instagram разблокировала аккаунт правительства Севастополя, доступ к которому был ограничен из-за «чрезмерной активности» пользователей.Администратор страницы пояснил, что соцсеть смогла быстро […]
  • Вам дадут тестовое на все выходные, а затем откажут по culture fit. Мой опыт устройства в Калифорнию через HazelCodersВам дадут тестовое на все выходные, а затем откажут по culture fit. Мой опыт устройства в Калифорнию через HazelCoders Привет, Хабр! Меня зовут Михаил Мазуровский, я - мобильный Flutter разработчик. Сегодня я расскажу вам историю о том, как я столкнулся с худшей организацией по найму в своей жизни.Рекрутинговая компания, с которой я столкнулся, называется HazelCoders, она занимается подбором […]
  • День открытых дверей в школе 3DMAYAДень открытых дверей в школе 3DMAYA Описание 5 июня менторы и кураторы 3DMAYA, а также приглашенные выпускники поделятся успешными кейсами. Расскажут о новых программах обучения и перспективах развития в сфере CG.3DMAYA дает возможность каждому получить актуальные знания в области компьютерной графики. Развить свои […]
  • ЦБ РФ и Минфин представили законопроект о регулировании криптовалютЦБ РФ и Минфин представили законопроект о регулировании криптовалют ЦБ РФ и Министерство финансов подготовили и внесли в правительство  законопроект о регулировании криптовалют в России.  Согласно предложениям Центробанка, организация выпуска и обращение частных цифровых валют в России должны быть запрещены. Криптовалюты предлагается […]